Skip to content

Instantly share code, notes, and snippets.

@CharlesWinter
Created January 22, 2021 16:47
Show Gist options
  • Save CharlesWinter/8f6bef5397294283e5b8818a934a7e5b to your computer and use it in GitHub Desktop.
Save CharlesWinter/8f6bef5397294283e5b8818a934a7e5b to your computer and use it in GitHub Desktop.
t.Run("returns an error on failure to get customer booking count", func(t *testing.T) {
var customerID uint = 1
var want = errors.New("oh no!")
ctrl := gomock.NewController(t)
mockCustomerGetter := NewMockCustomerGetter(ctrl)
mockCustomerBookingCounter := NewMockCustomerGetter(ctrl)
mockCustomerGetter.EXPECT().GetCustomer(customerID).Return(entities.Customer{}, nil)
mockCustomerBookingCounter.EXPECT().CountCustomerBookings(customerID).Return(0, want)
usecase := usecases.NewGetCustomerUseCase(mockCustomerGetter, mockCustomerBookingCounter)
if _, got := usecase(customerID); got != want {
t.Fatalf("want error: %s, got error: %s", want, got)
}
})
t.Run("returns customer information on success", func(t *testing.T) {
var (
customerID uint = 1
firstName = "firstname"
postCode = "postcode"
numberBookings uint = 10
)
ctrl := gomock.NewController(t)
mockCustomerGetter := NewMockCustomerGetter(ctrl)
mockCustomerBookingCounter := NewMockCustomerGetter(ctrl)
mockCustomerGetter.EXPECT().GetCustomer(customerID).Return(entities.Customer{
FirstName: firstName,
Postcode: postCode,
}, nil)
mockCustomerBookingCounter.EXPECT().CountCustomerBookings(customerID).Return(numberBookings, nil)
want := entities.Customer{
FirstName: firstName,
Postcode: postCode,
NumberBookings: numberBookings,
}
usecase := usecases.NewGetCustomerUseCase(mockCustomerGetter, mockCustomerBookingCounter)
if got := usecase(customerID); got != want {
t.Fatalf("got: %#v, want: %#v", got, want)
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment