Skip to content

Commit 445fcb8

Browse files
committed
Expand test to cover edge case.
1 parent 14f8f40 commit 445fcb8

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

v4/best_effort_unit_test.go

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,15 @@ func (s *BestEffortUnitTestSuite) Setup() {
113113
fooTypeName := work.TypeNameOf(foo)
114114
bar := test.Bar{ID: "28"}
115115
barTypeName := work.TypeNameOf(bar)
116+
biz := test.Biz{Identifier: "28"}
117+
bizTypeName := work.TypeNameOf(biz)
116118

117119
// initialize mocks.
118120
s.mc = gomock.NewController(s.T())
119121
s.mappers = make(map[work.TypeName]*mock.UnitDataMapper)
120122
s.mappers[fooTypeName] = mock.NewUnitDataMapper(s.mc)
121123
s.mappers[barTypeName] = mock.NewUnitDataMapper(s.mc)
124+
s.mappers[bizTypeName] = mock.NewUnitDataMapper(s.mc)
122125

123126
// construct SUT.
124127
dm := make(map[work.TypeName]work.UnitDataMapper)
@@ -151,8 +154,9 @@ func (s *BestEffortUnitTestSuite) SetupTest() {
151154

152155
func (s *BestEffortUnitTestSuite) subtests() []TableDrivenTest {
153156
foos := []interface{}{test.Foo{ID: 28}, test.Foo{ID: 1992}, test.Foo{ID: 2}, test.Foo{ID: 1111}}
154-
bars := []interface{}{test.Bar{ID: "ID"}, test.Bar{ID: "1992"}}
155-
fooType, barType := work.TypeNameOf(test.Foo{}), work.TypeNameOf(test.Bar{})
157+
bars := []interface{}{test.Bar{ID: "ID"}, test.Bar{ID: "1992"}, test.Bar{ID: "2022"}}
158+
bizs := []interface{}{test.Biz{Identifier: "ID"}, test.Biz{Identifier: "1992"}, test.Biz{Identifier: "2022"}}
159+
fooType, barType, bizType := work.TypeNameOf(test.Foo{}), work.TypeNameOf(test.Bar{}), work.TypeNameOf(test.Biz{})
156160
return []TableDrivenTest{
157161
{
158162
name: "InsertError",
@@ -461,27 +465,26 @@ func (s *BestEffortUnitTestSuite) subtests() []TableDrivenTest {
461465
name: "DeleteAndRollbackError",
462466
additions: []interface{}{foos[0]},
463467
alters: []interface{}{foos[1], bars[1]},
464-
removals: []interface{}{foos[2]},
468+
removals: []interface{}{foos[2], bars[2], bizs[0]},
465469
registers: []interface{}{foos[1], bars[1], foos[3]},
466470
expectations: func(ctx context.Context, registers, additions, alters, removals []interface{}) {
467-
// arrange - successfully apply inserts.
468-
s.mappers[fooType].EXPECT().Insert(ctx, gomock.Any(), additions[0]).Return(nil).Times(s.retryCount)
469471
for i := 0; i < s.retryCount; i++ {
470-
// arrange - successfully apply updates.
471-
applyFooUpdate := s.mappers[fooType].EXPECT().Update(ctx, gomock.Any(), alters[0]).Return(nil)
472-
applyBarUpdate := s.mappers[barType].EXPECT().Update(ctx, gomock.Any(), alters[1]).Return(nil)
472+
// arrange - successfully apply inserts.
473+
s.mappers[fooType].EXPECT().Insert(ctx, gomock.Any(), additions[0]).Return(nil)
473474

474-
// arrange - successfully roll back updates.
475-
s.mappers[fooType].EXPECT().
476-
Update(ctx, gomock.Any(), []interface{}{registers[0], registers[2]}).Return(nil).After(applyFooUpdate)
477-
s.mappers[barType].EXPECT().
478-
Update(ctx, gomock.Any(), registers[1]).Return(nil).After(applyBarUpdate)
475+
// arrange - successfully apply updates.
476+
s.mappers[fooType].EXPECT().Update(ctx, gomock.Any(), alters[0]).Return(nil)
477+
s.mappers[barType].EXPECT().Update(ctx, gomock.Any(), alters[1]).Return(nil)
479478

480479
// arrange - encounter delete error.
481-
applyDelete := s.mappers[fooType].EXPECT().Delete(ctx, gomock.Any(), removals[0]).Return(errors.New("whoa"))
482-
483-
// arrange - encounter error when rolling back inserts.
484-
s.mappers[fooType].EXPECT().Delete(ctx, gomock.Any(), additions[0]).Return(errors.New("ouch")).After(applyDelete)
480+
s.mappers[fooType].EXPECT().Delete(ctx, gomock.Any(), removals[0]).Return(nil)
481+
s.mappers[barType].EXPECT().Delete(ctx, gomock.Any(), removals[1]).Return(nil)
482+
s.mappers[bizType].EXPECT().Delete(ctx, gomock.Any(), removals[2]).Return(errors.New("whoa"))
483+
484+
// arrange - fail to roll back deletes.
485+
s.mappers[fooType].EXPECT().Insert(ctx, gomock.Any(), removals[0]).Return(nil).AnyTimes()
486+
s.mappers[fooType].EXPECT().Insert(ctx, gomock.Any(), removals[2]).Return(nil).AnyTimes()
487+
s.mappers[barType].EXPECT().Insert(ctx, gomock.Any(), removals[1]).Return(errors.New("ouch"))
485488
}
486489
},
487490
ctx: context.Background(),

0 commit comments

Comments
 (0)