more tests
This commit is contained in:
parent
4c39e9608f
commit
0a4112d83f
1 changed files with 189 additions and 0 deletions
|
|
@ -13,6 +13,7 @@ import (
|
|||
)
|
||||
|
||||
const userId int64 = 789
|
||||
const validUuid string = "d28f5a94-ccf9-4eb6-bac3-53b065ba0d0c"
|
||||
|
||||
func setupTestRouter(mockRepo Repository) *gin.Engine {
|
||||
ut := utils.New()
|
||||
|
|
@ -38,6 +39,8 @@ func setupTestRouter(mockRepo Repository) *gin.Engine {
|
|||
return router
|
||||
}
|
||||
|
||||
// Labels
|
||||
|
||||
func TestCreateLabelSuccess(t *testing.T) {
|
||||
mockRepo := new(MockRepository)
|
||||
mockRepo.
|
||||
|
|
@ -258,3 +261,189 @@ func TestGetMerchLabelsSuccess(t *testing.T) {
|
|||
|
||||
mockRepo.AssertExpectations(t)
|
||||
}
|
||||
|
||||
// Merch
|
||||
func TestCreateMerchSuccess(t *testing.T) {
|
||||
mockRepo := new(MockRepository)
|
||||
|
||||
merchExpected := mock.MatchedBy(func(arg any) bool {
|
||||
model, ok := arg.(*Merch)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
|
||||
if model.CreatedAt.IsZero() {
|
||||
return false
|
||||
}
|
||||
|
||||
if model.UpdatedAt.Valid == false {
|
||||
return false
|
||||
}
|
||||
|
||||
if model.UpdatedAt.Time.IsZero() {
|
||||
return false
|
||||
}
|
||||
|
||||
if model.UpdatedAt.Time.Before(model.CreatedAt) {
|
||||
return false
|
||||
}
|
||||
|
||||
if model.DeletedAt.Valid != false {
|
||||
return false
|
||||
}
|
||||
|
||||
if model.MerchUuid == "" || len(model.MerchUuid) != 36 {
|
||||
return false
|
||||
}
|
||||
|
||||
if model.UserId != userId {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
|
||||
extraExpected := mock.MatchedBy(func(arg any) bool {
|
||||
_, ok := arg.([]ExtraData)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
mockRepo.
|
||||
On("getOrigins", mock.Anything).
|
||||
Return([]Origin{
|
||||
{Id: 1, Name: "origin 1"},
|
||||
{Id: 2, Name: "origin 2"},
|
||||
{Id: 3, Name: "origin 3"},
|
||||
{Id: 4, Name: "origin 4"},
|
||||
{Id: 5, Name: "origin 5"},
|
||||
{Id: 6, Name: "origin 6"},
|
||||
{Id: 7, Name: "origin 7"},
|
||||
}, nil)
|
||||
|
||||
mockRepo.
|
||||
On("createMerch", mock.Anything, merchExpected, extraExpected).
|
||||
Return(nil)
|
||||
|
||||
router := setupTestRouter(mockRepo)
|
||||
|
||||
data1 := newMerchDTO{
|
||||
Name: "Test name1",
|
||||
Links: []originLink{
|
||||
{Origin: "origin 1", Link: "link1"},
|
||||
{Origin: "origin 2", Link: "link2"},
|
||||
{Origin: "origin 3", Link: "link3"},
|
||||
{Origin: "origin 4", Link: "link4"},
|
||||
{Origin: "origin 5", Link: "link5"},
|
||||
{Origin: "origin 6", Link: "link6"},
|
||||
{Origin: "origin 7", Link: "link7"},
|
||||
},
|
||||
}
|
||||
|
||||
data2 := newMerchDTO{
|
||||
Name: "Test name2",
|
||||
}
|
||||
|
||||
for _, tt := range []newMerchDTO{data1, data2} {
|
||||
payload, err := json.Marshal(&tt)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
body := bytes.NewBuffer(payload)
|
||||
|
||||
req, _ := http.NewRequest("POST", "/merch/create", body)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
router.ServeHTTP(w, req)
|
||||
|
||||
assert.Equal(t, 201, w.Code)
|
||||
}
|
||||
|
||||
mockRepo.AssertExpectations(t)
|
||||
}
|
||||
|
||||
func TestGetManySuccess(t *testing.T) {
|
||||
type testCase struct {
|
||||
caseName string
|
||||
getManyReturn []getMerchInternal
|
||||
expectLabels bool
|
||||
labelsReceive []int64
|
||||
labelsReturn map[int64][]string
|
||||
expectedCode int
|
||||
expectedResult []ListResponse
|
||||
}
|
||||
|
||||
cases := []testCase{
|
||||
{
|
||||
caseName: "Success with merch",
|
||||
getManyReturn: []getMerchInternal{
|
||||
{Id: 1, MerchUuid: validUuid, Name: "merch1"},
|
||||
{Id: 2, MerchUuid: validUuid, Name: "merch2"},
|
||||
{Id: 3, MerchUuid: validUuid, Name: "merch3"},
|
||||
},
|
||||
expectLabels: true,
|
||||
labelsReceive: []int64{1, 2, 3},
|
||||
labelsReturn: map[int64][]string{1: {"l1", "l2", "l3"}, 2: {"l4", "l5", "l6"}, 3: {"l7", "l8", "l9"}},
|
||||
expectedCode: 200,
|
||||
expectedResult: []ListResponse{
|
||||
{MerchUuid: validUuid, Name: "merch1", Labels: []string{"l1", "l2", "l3"}},
|
||||
{MerchUuid: validUuid, Name: "merch2", Labels: []string{"l4", "l5", "l6"}},
|
||||
{MerchUuid: validUuid, Name: "merch3", Labels: []string{"l7", "l8", "l9"}},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
caseName: "Success no merch - empty merch",
|
||||
getManyReturn: []getMerchInternal{},
|
||||
expectLabels: false,
|
||||
expectedCode: 204,
|
||||
},
|
||||
|
||||
{
|
||||
caseName: "Success no merch - nil merch",
|
||||
getManyReturn: nil,
|
||||
expectLabels: false,
|
||||
expectedCode: 204,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range cases {
|
||||
t.Log(tt.caseName)
|
||||
|
||||
mockRepo := new(MockRepository)
|
||||
|
||||
mockRepo.
|
||||
On("getMany", mock.Anything, userId).
|
||||
Return(tt.getManyReturn, nil)
|
||||
|
||||
if tt.expectLabels {
|
||||
mockRepo.
|
||||
On("getManyAttachedLabelsByList", mock.Anything, userId, tt.labelsReceive).
|
||||
Return(tt.labelsReturn, nil)
|
||||
}
|
||||
|
||||
router := setupTestRouter(mockRepo)
|
||||
|
||||
req, _ := http.NewRequest("GET", "/merch/list", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
router.ServeHTTP(w, req)
|
||||
|
||||
assert.Equal(t, tt.expectedCode, w.Code)
|
||||
|
||||
if tt.expectedCode == 200 {
|
||||
var response []ListResponse
|
||||
err := json.Unmarshal(w.Body.Bytes(), &response)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
assert.Equal(t, tt.expectedResult, response)
|
||||
}
|
||||
|
||||
mockRepo.AssertExpectations(t)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue