diff options
author | Veniamin Albaev <albenik@gmail.com> | 2018-12-27 13:51:44 +0300 |
---|---|---|
committer | Veniamin Albaev <albenik@gmail.com> | 2018-12-27 13:51:44 +0300 |
commit | 35426ed5dc5196374332498c82b4d480b05e5ac5 (patch) | |
tree | 5831d8dbf3418d4036bedc26c7ec8e41ba3d3f1c /sheetpr_test.go | |
parent | 9a6f66a996eb83f16da13416c5fca361afe575b0 (diff) |
Tests refactoring
Primary motivation: Avoid statefull tests with not ignorable git file tree changes.
Multiple tests reads and overwrites signle file for won needs.
Multiple tests reads and overwrites file under version control.
Secondary motivation: Minimal tests logic aligment, separate error expectation
and not error expectation tests. Introduce sub-test over test data sets and so far.
This commit is not ideal but necessary (IMHO)
Diffstat (limited to 'sheetpr_test.go')
-rw-r--r-- | sheetpr_test.go | 133 |
1 files changed, 69 insertions, 64 deletions
diff --git a/sheetpr_test.go b/sheetpr_test.go index d9f5059..22dbd42 100644 --- a/sheetpr_test.go +++ b/sheetpr_test.go @@ -2,11 +2,12 @@ package excelize_test import ( "fmt" - "reflect" "testing" - "github.com/360EntSecGroup-Skylar/excelize" "github.com/mohae/deepcopy" + "github.com/stretchr/testify/assert" + + "github.com/360EntSecGroup-Skylar/excelize" ) var _ = []excelize.SheetPrOption{ @@ -86,7 +87,8 @@ func ExampleFile_GetSheetPrOptions() { func TestSheetPrOptions(t *testing.T) { const sheet = "Sheet1" - for _, test := range []struct { + + testData := []struct { container excelize.SheetPrOptionPtr nonDefault excelize.SheetPrOption }{ @@ -96,66 +98,69 @@ func TestSheetPrOptions(t *testing.T) { {new(excelize.FitToPage), excelize.FitToPage(true)}, {new(excelize.AutoPageBreaks), excelize.AutoPageBreaks(true)}, {new(excelize.OutlineSummaryBelow), excelize.OutlineSummaryBelow(false)}, - } { - opt := test.nonDefault - t.Logf("option %T", opt) - - def := deepcopy.Copy(test.container).(excelize.SheetPrOptionPtr) - val1 := deepcopy.Copy(def).(excelize.SheetPrOptionPtr) - val2 := deepcopy.Copy(def).(excelize.SheetPrOptionPtr) - - xl := excelize.NewFile() - // Get the default value - if err := xl.GetSheetPrOptions(sheet, def); err != nil { - t.Fatalf("%T: %s", opt, err) - } - // Get again and check - if err := xl.GetSheetPrOptions(sheet, val1); err != nil { - t.Fatalf("%T: %s", opt, err) - } - if !reflect.DeepEqual(val1, def) { - t.Fatalf("%T: value should not have changed", opt) - } - // Set the same value - if err := xl.SetSheetPrOptions(sheet, val1); err != nil { - t.Fatalf("%T: %s", opt, err) - } - // Get again and check - if err := xl.GetSheetPrOptions(sheet, val1); err != nil { - t.Fatalf("%T: %s", opt, err) - } - if !reflect.DeepEqual(val1, def) { - t.Fatalf("%T: value should not have changed", opt) - } - - // Set a different value - if err := xl.SetSheetPrOptions(sheet, test.nonDefault); err != nil { - t.Fatalf("%T: %s", opt, err) - } - if err := xl.GetSheetPrOptions(sheet, val1); err != nil { - t.Fatalf("%T: %s", opt, err) - } - // Get again and compare - if err := xl.GetSheetPrOptions(sheet, val2); err != nil { - t.Fatalf("%T: %s", opt, err) - } - if !reflect.DeepEqual(val2, val1) { - t.Fatalf("%T: value should not have changed", opt) - } - // Value should not be the same as the default - if reflect.DeepEqual(val1, def) { - t.Fatalf("%T: value should have changed from default", opt) - } - - // Restore the default value - if err := xl.SetSheetPrOptions(sheet, def); err != nil { - t.Fatalf("%T: %s", opt, err) - } - if err := xl.GetSheetPrOptions(sheet, val1); err != nil { - t.Fatalf("%T: %s", opt, err) - } - if !reflect.DeepEqual(val1, def) { - t.Fatalf("%T: value should now be the same as default", opt) - } + } + + for i, test := range testData { + t.Run(fmt.Sprintf("TestData%d", i), func(t *testing.T) { + + opt := test.nonDefault + t.Logf("option %T", opt) + + def := deepcopy.Copy(test.container).(excelize.SheetPrOptionPtr) + val1 := deepcopy.Copy(def).(excelize.SheetPrOptionPtr) + val2 := deepcopy.Copy(def).(excelize.SheetPrOptionPtr) + + xl := excelize.NewFile() + // Get the default value + if !assert.NoError(t, xl.GetSheetPrOptions(sheet, def), opt) { + t.FailNow() + } + // Get again and check + if !assert.NoError(t, xl.GetSheetPrOptions(sheet, val1), opt) { + t.FailNow() + } + if !assert.Equal(t, val1, def, opt) { + t.FailNow() + } + // Set the same value + if !assert.NoError(t, xl.SetSheetPrOptions(sheet, val1), opt) { + t.FailNow() + } + // Get again and check + if !assert.NoError(t, xl.GetSheetPrOptions(sheet, val1), opt) { + t.FailNow() + } + if !assert.Equal(t, val1, def, "%T: value should not have changed", opt) { + t.FailNow() + } + // Set a different value + if !assert.NoError(t, xl.SetSheetPrOptions(sheet, test.nonDefault), opt) { + t.FailNow() + } + if !assert.NoError(t, xl.GetSheetPrOptions(sheet, val1), opt) { + t.FailNow() + } + // Get again and compare + if !assert.NoError(t, xl.GetSheetPrOptions(sheet, val2), opt) { + t.FailNow() + } + if !assert.Equal(t, val1, val2, "%T: value should not have changed", opt) { + t.FailNow() + } + // Value should not be the same as the default + if !assert.NotEqual(t, def, val1, "%T: value should have changed from default", opt) { + t.FailNow() + } + // Restore the default value + if !assert.NoError(t, xl.SetSheetPrOptions(sheet, def), opt) { + t.FailNow() + } + if !assert.NoError(t, xl.GetSheetPrOptions(sheet, val1), opt) { + t.FailNow() + } + if !assert.Equal(t, def, val1) { + t.FailNow() + } + }) } } |