Created
January 22, 2021 16:47
-
-
Save CharlesWinter/8f6bef5397294283e5b8818a934a7e5b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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