Return filename from publisher

This commit is contained in:
Elizabeth Engelman 2018-12-26 15:27:16 -05:00
parent dc19bd4e3b
commit ade4a8efdc
5 changed files with 50 additions and 36 deletions

View File

@ -9,7 +9,7 @@ import (
func TestNewMode(t *testing.T) { func TestNewMode(t *testing.T) {
mode, err := statediff.NewMode("csv") mode, err := statediff.NewMode("csv")
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if mode != statediff.CSV { if mode != statediff.CSV {

View File

@ -31,12 +31,12 @@ func createCSVFilePath(path string) string {
return filePath return filePath
} }
func (p *publisher) publishStateDiffToCSV(sd builder.StateDiff) error { func (p *publisher) publishStateDiffToCSV(sd builder.StateDiff) (string, error) {
filePath := createCSVFilePath(p.Config.Path) filePath := createCSVFilePath(p.Config.Path)
file, err := os.OpenFile(filePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) file, err := os.OpenFile(filePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil { if err != nil {
return err return "", err
} }
defer file.Close() defer file.Close()
@ -58,11 +58,11 @@ func (p *publisher) publishStateDiffToCSV(sd builder.StateDiff) error {
for _, value := range data { for _, value := range data {
err := writer.Write(value) err := writer.Write(value)
if err != nil { if err != nil {
return err return "", err
} }
} }
return nil return filePath, nil
} }
func accumulateUpdatedAccountRows(sd builder.StateDiff) [][]string { func accumulateUpdatedAccountRows(sd builder.StateDiff) [][]string {

View File

@ -41,8 +41,8 @@ func NewPublisher(config statediff.Config) (*publisher, error) {
func (p *publisher) PublishStateDiff(sd *builder.StateDiff) (string, error) { func (p *publisher) PublishStateDiff(sd *builder.StateDiff) (string, error) {
switch p.Config.Mode { switch p.Config.Mode {
case statediff.CSV: case statediff.CSV:
return "", p.publishStateDiffToCSV(*sd) return p.publishStateDiffToCSV(*sd)
default: default:
return "", p.publishStateDiffToCSV(*sd) return p.publishStateDiffToCSV(*sd)
} }
} }

View File

@ -14,6 +14,7 @@ import (
"reflect" "reflect"
"strconv" "strconv"
"testing" "testing"
"strings"
) )
var ( var (
@ -77,6 +78,7 @@ func TestPublisher(t *testing.T) {
type Test func(t *testing.T) type Test func(t *testing.T)
var tests = []Test{ var tests = []Test{
testFileName,
testColumnHeaders, testColumnHeaders,
testAccountDiffs, testAccountDiffs,
testWhenNoDiff, testWhenNoDiff,
@ -108,23 +110,34 @@ func removeFilesFromDir(dir string) error {
return nil return nil
} }
func testFileName(t *testing.T) {
fileName, err := publisher.PublishStateDiff(&testhelpers.TestStateDiff)
if err != nil {
t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
}
if !strings.HasPrefix(fileName, dir) {
t.Errorf(testhelpers.TestFailureFormatString, t.Name(), dir, fileName)
}
}
func testColumnHeaders(t *testing.T) { func testColumnHeaders(t *testing.T) {
_, err = publisher.PublishStateDiff(&testhelpers.TestStateDiff) _, err = publisher.PublishStateDiff(&testhelpers.TestStateDiff)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
file, err := getTestDiffFile(dir) file, err := getTestDiffFile(dir)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
lines, err := csv.NewReader(file).ReadAll() lines, err := csv.NewReader(file).ReadAll()
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if len(lines) < 1 { if len(lines) < 1 {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if !equals(lines[0], p.Headers) { if !equals(lines[0], p.Headers) {
t.Error() t.Error()
@ -135,29 +148,29 @@ func testAccountDiffs(t *testing.T) {
// it persists the created, updated and deleted account diffs to a CSV file // it persists the created, updated and deleted account diffs to a CSV file
_, err = publisher.PublishStateDiff(&testhelpers.TestStateDiff) _, err = publisher.PublishStateDiff(&testhelpers.TestStateDiff)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
file, err := getTestDiffFile(dir) file, err := getTestDiffFile(dir)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
lines, err := csv.NewReader(file).ReadAll() lines, err := csv.NewReader(file).ReadAll()
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if len(lines) <= 3 { if len(lines) <= 3 {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if !equals(lines[1], expectedCreatedAccountRow) { if !equals(lines[1], expectedCreatedAccountRow) {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if !equals(lines[2], expectedUpdatedAccountRow) { if !equals(lines[2], expectedUpdatedAccountRow) {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if !equals(lines[3], expectedDeletedAccountRow) { if !equals(lines[3], expectedDeletedAccountRow) {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
} }
@ -166,21 +179,21 @@ func testWhenNoDiff(t *testing.T) {
emptyDiff := builder.StateDiff{} emptyDiff := builder.StateDiff{}
_, err = publisher.PublishStateDiff(&emptyDiff) _, err = publisher.PublishStateDiff(&emptyDiff)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
file, err := getTestDiffFile(dir) file, err := getTestDiffFile(dir)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
lines, err := csv.NewReader(file).ReadAll() lines, err := csv.NewReader(file).ReadAll()
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if !equals(len(lines), 1) { if !equals(len(lines), 1) {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
} }
@ -189,28 +202,28 @@ func testDefaultPublisher(t *testing.T) {
config := statediff.Config{Path: dir} config := statediff.Config{Path: dir}
publisher, err = p.NewPublisher(config) publisher, err = p.NewPublisher(config)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
_, err = publisher.PublishStateDiff(&testhelpers.TestStateDiff) _, err = publisher.PublishStateDiff(&testhelpers.TestStateDiff)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
file, err := getTestDiffFile(dir) file, err := getTestDiffFile(dir)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
lines, err := csv.NewReader(file).ReadAll() lines, err := csv.NewReader(file).ReadAll()
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if !equals(len(lines), 4) { if !equals(len(lines), 4) {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if !equals(lines[0], p.Headers) { if !equals(lines[0], p.Headers) {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
} }
@ -219,33 +232,33 @@ func testDefaultDirectory(t *testing.T) {
config := statediff.Config{} config := statediff.Config{}
publisher, err = p.NewPublisher(config) publisher, err = p.NewPublisher(config)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
err := os.Chdir(dir) err := os.Chdir(dir)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
_, err = publisher.PublishStateDiff(&testhelpers.TestStateDiff) _, err = publisher.PublishStateDiff(&testhelpers.TestStateDiff)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
file, err := getTestDiffFile(dir) file, err := getTestDiffFile(dir)
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
lines, err := csv.NewReader(file).ReadAll() lines, err := csv.NewReader(file).ReadAll()
if err != nil { if err != nil {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if !equals(len(lines), 4) { if !equals(len(lines), 4) {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
if !equals(lines[0], p.Headers) { if !equals(lines[0], p.Headers) {
t.Errorf(testhelpers.TestFailedFormatString, t.Name(), err) t.Errorf(testhelpers.ErrorFormatString, t.Name(), err)
} }
} }

View File

@ -1,3 +1,4 @@
package testhelpers package testhelpers
var TestFailedFormatString = "Test failed: %s, %+v" var ErrorFormatString = "Error: %s, %+v"
var TestFailureFormatString = "Test failed: %s\nexpected %+v, got %+v\n"