Skip to content

Commit

Permalink
Add one level of outer most test
Browse files Browse the repository at this point in the history
  • Loading branch information
aswinkarthik committed Oct 8, 2019
1 parent ce93ef9 commit dd5971a
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 18 deletions.
44 changes: 26 additions & 18 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,28 +78,36 @@ Most suitable for csv files created from database tables`,
DeltaFilename: deltaFilename,
}

if err := ctx.Validate(fs); err != nil {
return err
}
return runContext(ctx, fs, os.Stdout, os.Stderr)
},
}

baseConfig, err := ctx.BaseDigestConfig(fs)
if err != nil {
return fmt.Errorf("error opening base-file %s: %v", baseFilename, err)
}
deltaConfig, err := ctx.DeltaDigestConfig(fs)
if err != nil {
return fmt.Errorf("error opening delta-file %s: %v", deltaFilename, err)
}
defer ctx.Close()
func runContext(
ctx Context,
fs afero.Fs,
outputStream,
errorStream io.Writer) error {
if err := ctx.Validate(fs); err != nil {
return err
}

diff, err := digest.Diff(baseConfig, deltaConfig)
baseConfig, err := ctx.BaseDigestConfig(fs)
if err != nil {
return fmt.Errorf("error opening base-file %s: %v", ctx.BaseFilename, err)
}
deltaConfig, err := ctx.DeltaDigestConfig(fs)
if err != nil {
return fmt.Errorf("error opening delta-file %s: %v", ctx.DeltaFilename, err)
}
defer ctx.Close()

if err != nil {
return err
}
diff, err := digest.Diff(baseConfig, deltaConfig)

return NewFormatter(os.Stdout, os.Stderr, ctx).Format(diff)
},
if err != nil {
return err
}

return NewFormatter(outputStream, errorStream, ctx).Format(diff)
}

func isValidFile(path string) error {
Expand Down
66 changes: 66 additions & 0 deletions cmd/root_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package cmd

import (
"bytes"
"github.com/aswinkarthik/csvdiff/pkg/digest"
"github.com/spf13/afero"
"github.com/stretchr/testify/assert"
"os"
"testing"
)

func TestRunContext(t *testing.T) {
t.Run("should find diff in happy path", func(t *testing.T) {
fs := afero.NewMemMapFs()
{
baseContent := []byte(`id,name,age,desc
0,tom,2,developer
2,ryan,20,qa
4,emin,40,pm
`)
err := afero.WriteFile(fs, "/base.csv", baseContent, os.ModePerm)
assert.NoError(t, err)
}
{
deltaContent := []byte(`id,name,age,desc
0,tom,2,developer
1,caprio,3,developer
2,ryan,23,qa
`)
err := afero.WriteFile(fs, "/delta.csv", deltaContent, os.ModePerm)
assert.NoError(t, err)
}

ctx := Context{
Format: "json",
BaseFilename: "/base.csv",
DeltaFilename: "/delta.csv",
PrimaryKeyPositions: digest.Positions{0},
ValueColumnPositions: digest.Positions{1, 2},
IncludeColumnPositions: digest.Positions{0, 1, 2},
}
outStream := &bytes.Buffer{}
errStream := &bytes.Buffer{}

err := runContext(ctx, fs, outStream, errStream)
expected := `{
"Additions": [
"1,caprio,3"
],
"Modifications": [
{
"Original": "2,ryan,20",
"Current": "2,ryan,23"
}
],
"Deletions": [
"4,emin,40"
]
}`

assert.NoError(t, err)
assert.Equal(t, expected, outStream.String())

})
}

0 comments on commit dd5971a

Please sign in to comment.