From 34269b83fadbb509a2ce111666313ecab7955c62 Mon Sep 17 00:00:00 2001 From: Sam Rudge Date: Fri, 30 Sep 2022 11:35:40 +0100 Subject: [PATCH] Allow empty Noop() to be added to mock op chains --- mock.go | 5 +++++ mock_test.go | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/mock.go b/mock.go index c3b4b2f..f6092eb 100644 --- a/mock.go +++ b/mock.go @@ -135,6 +135,11 @@ func (mo mockMultiOp) Add(inOps ...Op) Op { ops = append(ops, op...) case mockOp: ops = append(ops, op) + case multiOp: + if len(op) == 0 { + continue + } + panic("can't Add non-mock ops to mockMultiOp") default: panic("can't Add non-mock ops to mockMultiOp") } diff --git a/mock_test.go b/mock_test.go index 682878b..594876e 100644 --- a/mock_test.go +++ b/mock_test.go @@ -514,6 +514,20 @@ func (s *MockSuite) TestNoop() { s.Equal("Jill", users[1].Name) } +// Don't panic when adding an empty Noop to an existing op chain +func (s *MockSuite) TestEmptyNoop() { + addresses := s.insertAddresses() + addressToUpdate := addresses[0] + addressToUpdate.PostCode = "XYZ" + emptyNoop := Noop() + op := s.embMapTbl.Set(addressToUpdate) + op = op.Add(s.embTsTbl.Set(addressToUpdate)) + s.NotPanics(func() { + op = op.Add(emptyNoop) + }) + s.NoError(op.Run()) +} + func (s *MockSuite) TestEmbedMapRead() { expectedAddresses := s.insertAddresses()