Skip to content

Commit f243f96

Browse files
Improve error handling
Do not ignore errors
1 parent a0251fa commit f243f96

File tree

8 files changed

+70
-47
lines changed

8 files changed

+70
-47
lines changed

driver/inmemory/eventstore_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ func TestEventStore_HasStream(t *testing.T) {
6161
asserts.False(store.HasStream(ctx, createThisStream))
6262
asserts.False(store.HasStream(ctx, unkownStream))
6363

64-
store.Create(ctx, createThisStream)
64+
err := store.Create(ctx, createThisStream)
65+
asserts.NoError(err)
6566
asserts.True(store.HasStream(ctx, createThisStream))
6667
asserts.False(store.HasStream(ctx, unkownStream))
6768

driver/inmemory/eventstream_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/hellofresh/goengine/driver/inmemory"
1010
"github.com/hellofresh/goengine/mocks"
1111
"github.com/stretchr/testify/assert"
12+
"github.com/stretchr/testify/require"
1213
)
1314

1415
func TestEventStream(t *testing.T) {
@@ -44,15 +45,12 @@ func TestEventStream(t *testing.T) {
4445
asserts := assert.New(t)
4546

4647
stream, err := inmemory.NewEventStream(testCase.messages, testCase.messageNumbers)
47-
if !asserts.NoError(err) {
48-
return
49-
}
48+
require.NoError(t, err)
5049
asserts.NotNil(stream)
5150

5251
messages, messageNumbers, err := goengine.ReadEventStream(stream)
53-
if !asserts.NoError(stream.Err()) {
54-
asserts.FailNow("no exception was expected while reading the stream")
55-
}
52+
require.NoError(t, err)
53+
require.NoError(t, stream.Err(), "no exception was expected while reading the stream")
5654

5755
asserts.Equal(testCase.messages, messages)
5856
asserts.Equal(testCase.messageNumbers, messageNumbers)

driver/sql/postgres/eventstore_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
strategyPostgres "github.com/hellofresh/goengine/strategy/json/sql/postgres"
2222
"github.com/stretchr/testify/assert"
2323
"github.com/stretchr/testify/mock"
24+
"github.com/stretchr/testify/require"
2425
)
2526

2627
func TestNewEventStore(t *testing.T) {
@@ -301,6 +302,7 @@ func TestEventStore_Load(t *testing.T) {
301302
strategy.On("GenerateTableName", goengine.StreamName("event_stream")).Return("event_stream", nil)
302303

303304
store, err := postgres.NewEventStore(strategy, db, factory, nil)
305+
require.NoError(t, err)
304306

305307
stream, err := store.Load(
306308
context.Background(),
@@ -309,10 +311,9 @@ func TestEventStore_Load(t *testing.T) {
309311
testCase.count,
310312
testCase.matcher(),
311313
)
314+
require.NoError(t, err)
315+
assert.Equal(t, expectedStream, stream)
312316

313-
if assert.NoError(t, err) {
314-
assert.Equal(t, expectedStream, stream)
315-
}
316317
factory.AssertExpectations(t)
317318
strategy.AssertExpectations(t)
318319
})
@@ -355,6 +356,7 @@ func TestEventStore_Load(t *testing.T) {
355356
test.RunWithMockDB(t, testCase.title, func(t *testing.T, db *sql.DB, dbMock sqlmock.Sqlmock) {
356357
strategy := testCase.strategy()
357358
store, err := postgres.NewEventStore(strategy, db, &mockSQL.MessageFactory{}, nil)
359+
require.NoError(t, err)
358360

359361
stream, err := store.Load(context.Background(), "event_stream", 1, nil, nil)
360362
if assert.Error(t, err) {

example/aggregate/main.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,16 @@ func main() {
4444
if err != nil {
4545
panic(err)
4646
}
47-
account.Deposit(100)
48-
account.Withdraw(10)
49-
account.Withdraw(20)
47+
48+
if err := account.Deposit(100); err != nil {
49+
panic(err)
50+
}
51+
if err := account.Withdraw(10); err != nil {
52+
panic(err)
53+
}
54+
if err := account.Withdraw(20); err != nil {
55+
panic(err)
56+
}
5057

5158
fmt.Printf("BankAccount %s has a balance of %d\n", account.AggregateID(), account.Balance())
5259
}

example/repository/bank_account.go

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,18 @@ type (
3939
)
4040

4141
// OpenBankAccount opens a new bank account
42-
func OpenBankAccount() *BankAccount {
42+
func OpenBankAccount() (*BankAccount, error) {
4343
accountID := aggregate.GenerateID()
4444

4545
account := &BankAccount{
4646
accountID: accountID,
4747
}
4848

49-
aggregate.RecordChange(account, AccountOpened{AccountID: accountID})
49+
if err := aggregate.RecordChange(account, AccountOpened{AccountID: accountID}); err != nil {
50+
return nil, err
51+
}
5052

51-
return account
53+
return account, nil
5254
}
5355

5456
// AggregateID returns the bank accounts aggregate.ID need to implement aggregate.Root
@@ -61,23 +63,20 @@ func (b *BankAccount) Apply(change *aggregate.Changed) {
6163
switch event := change.Payload().(type) {
6264
case AccountOpened:
6365
b.accountID = event.AccountID
64-
break
6566
case AccountCredited:
6667
b.balance += event.Amount
67-
break
6868
case AccountDebited:
6969
b.balance -= event.Amount
70-
break
7170
}
7271
}
7372

7473
// Deposit adds an amount of money to the bank account
75-
func (b *BankAccount) Deposit(amount uint) {
74+
func (b *BankAccount) Deposit(amount uint) error {
7675
if amount == 0 {
77-
return
76+
return nil
7877
}
7978

80-
aggregate.RecordChange(b, AccountCredited{Amount: amount})
79+
return aggregate.RecordChange(b, AccountCredited{Amount: amount})
8180
}
8281

8382
// Withdraw removes an amount of money to the bank account
@@ -86,8 +85,7 @@ func (b *BankAccount) Withdraw(amount uint) error {
8685
return ErrInsufficientMoney
8786
}
8887

89-
aggregate.RecordChange(b, AccountDebited{Amount: amount})
90-
return nil
88+
return aggregate.RecordChange(b, AccountDebited{Amount: amount})
9189
}
9290

9391
// Balance returns the current amount of money that is contained in bank account

example/repository/main.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,28 @@ func main() {
1616
store := inmemory.NewEventStore(logger)
1717

1818
eventStream := goengine.StreamName("event_stream")
19-
store.Create(ctx, eventStream)
19+
failOnErr(
20+
store.Create(ctx, eventStream),
21+
)
2022

2123
repository, err := NewBankAccountRepository(store, eventStream)
2224
failOnErr(err)
2325

2426
fmt.Print("Opening an account\n")
25-
account := OpenBankAccount()
26-
accountID := account.AggregateID()
27+
account, err := OpenBankAccount()
28+
failOnErr(err)
2729
failOnErr(
2830
repository.Save(ctx, account),
2931
)
32+
accountID := account.AggregateID()
3033
fmt.Printf("Opened account %s balance %d\n\n", account.AggregateID(), account.Balance())
3134

3235
fmt.Print("Opening an account with 100\n")
33-
secondAccount := OpenBankAccount()
34-
secondAccount.Deposit(100)
36+
secondAccount, err := OpenBankAccount()
37+
failOnErr(err)
38+
failOnErr(
39+
secondAccount.Deposit(100),
40+
)
3541
failOnErr(
3642
repository.Save(ctx, secondAccount),
3743
)
@@ -41,7 +47,9 @@ func main() {
4147
loadedAccount, err := repository.Get(ctx, accountID)
4248
failOnErr(err)
4349

44-
loadedAccount.Deposit(100)
50+
failOnErr(
51+
loadedAccount.Deposit(100),
52+
)
4553
failOnErr(
4654
repository.Save(ctx, loadedAccount),
4755
)
@@ -52,7 +60,9 @@ func main() {
5260
loadedAccount, err = repository.Get(ctx, accountID)
5361
failOnErr(err)
5462

55-
loadedAccount.Withdraw(50)
63+
failOnErr(
64+
loadedAccount.Withdraw(50),
65+
)
5666
failOnErr(
5767
repository.Save(ctx, loadedAccount),
5868
)

strategy/json/payload_transformer_test.go

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/hellofresh/goengine/internal/mocks/payload"
1111
strategyJSON "github.com/hellofresh/goengine/strategy/json"
1212
"github.com/stretchr/testify/assert"
13+
"github.com/stretchr/testify/require"
1314
)
1415

1516
type simpleType struct {
@@ -22,9 +23,11 @@ func TestPayloadTransformer(t *testing.T) {
2223
asserts := assert.New(t)
2324

2425
transformer := strategyJSON.NewPayloadTransformer()
25-
transformer.RegisterPayload("payload", func() interface{} {
26-
return payload.Payload{}
27-
})
26+
require.NoError(t,
27+
transformer.RegisterPayload("payload", func() interface{} {
28+
return payload.Payload{}
29+
}),
30+
)
2831

2932
name, data, err := transformer.ConvertPayload(anotherpayload.Payload{})
3033
asserts.Equal(err, strategyJSON.ErrPayloadNotRegistered)
@@ -60,7 +63,9 @@ func TestPayloadTransformer_ConvertPayload(t *testing.T) {
6063
t.Run(tc.title, func(t *testing.T) {
6164
asserts := assert.New(t)
6265
transformer := strategyJSON.NewPayloadTransformer()
63-
transformer.RegisterPayload(tc.payloadType, tc.payloadInitiator)
66+
require.NoError(t,
67+
transformer.RegisterPayload(tc.payloadType, tc.payloadInitiator),
68+
)
6469

6570
name, data, err := transformer.ConvertPayload(tc.payloadData)
6671
asserts.NoError(err)
@@ -81,10 +86,7 @@ func TestPayloadTransformer_ConvertPayload(t *testing.T) {
8186
testCases := []testCase{
8287
{
8388
"not registered convert payload",
84-
func() interface{} {
85-
// not necessary for this test case
86-
return nil
87-
},
89+
nil,
8890
&simpleType{Test: "test", Order: 1},
8991
strategyJSON.ErrPayloadNotRegistered,
9092
},
@@ -103,8 +105,11 @@ func TestPayloadTransformer_ConvertPayload(t *testing.T) {
103105
t.Run(tc.title, func(t *testing.T) {
104106
asserts := assert.New(t)
105107
transformer := strategyJSON.NewPayloadTransformer()
106-
107-
transformer.RegisterPayload("tests", tc.payloadInitiator)
108+
if tc.payloadInitiator != nil {
109+
require.NoError(t,
110+
transformer.RegisterPayload("tests", tc.payloadInitiator),
111+
)
112+
}
108113

109114
name, data, err := transformer.ConvertPayload(tc.payloadData)
110115
asserts.Equal(tc.expectedError, err)
@@ -235,13 +240,15 @@ func TestJSONPayloadTransformer_CreatePayload(t *testing.T) {
235240
for _, testCase := range testCases {
236241
t.Run(testCase.title, func(t *testing.T) {
237242
factory := strategyJSON.NewPayloadTransformer()
238-
factory.RegisterPayload("tests", testCase.payloadInitiator)
243+
require.NoError(t,
244+
factory.RegisterPayload("tests", testCase.payloadInitiator),
245+
)
239246

240-
payload, err := factory.CreatePayload("tests", testCase.payloadData)
247+
res, err := factory.CreatePayload("tests", testCase.payloadData)
241248

242249
asserts := assert.New(t)
243250
asserts.IsType((*json.SyntaxError)(nil), err)
244-
asserts.Nil(payload)
251+
asserts.Nil(res)
245252
})
246253
}
247254
})

strategy/json/sql/message_factory_aggregate_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/hellofresh/goengine/mocks"
1616
"github.com/hellofresh/goengine/strategy/json/sql"
1717
"github.com/stretchr/testify/assert"
18+
"github.com/stretchr/testify/require"
1819
)
1920

2021
type nameChanged struct {
@@ -119,9 +120,8 @@ func TestAggregateChangedFactory_CreateFromRows(t *testing.T) {
119120
defer stream.Close()
120121

121122
messages, messageNumbers, err := goengine.ReadEventStream(stream)
122-
if !asserts.NoError(stream.Err()) {
123-
asserts.FailNow("no exception was expected while reading the stream")
124-
}
123+
require.NoError(t, err)
124+
require.NoError(t, stream.Err(), "no exception was expected while reading the stream")
125125

126126
assertEqualMessages(t, expectedMessages, messages)
127127
asserts.Equal(expectedMessageNumbers, messageNumbers)

0 commit comments

Comments
 (0)