refactor
This commit is contained in:
parent
0a4112d83f
commit
a15b53bf74
1 changed files with 149 additions and 125 deletions
|
|
@ -264,110 +264,134 @@ func TestGetMerchLabelsSuccess(t *testing.T) {
|
||||||
|
|
||||||
// Merch
|
// Merch
|
||||||
func TestCreateMerchSuccess(t *testing.T) {
|
func TestCreateMerchSuccess(t *testing.T) {
|
||||||
mockRepo := new(MockRepository)
|
type testCases struct {
|
||||||
|
name string
|
||||||
|
inputDTO newMerchDTO
|
||||||
|
expectOrigins bool
|
||||||
|
expectedCode int
|
||||||
|
}
|
||||||
|
|
||||||
merchExpected := mock.MatchedBy(func(arg any) bool {
|
cases := []testCases{
|
||||||
model, ok := arg.(*Merch)
|
{
|
||||||
if !ok {
|
name: "Success - with origins",
|
||||||
return false
|
inputDTO: 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"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectOrigins: true,
|
||||||
|
expectedCode: 201,
|
||||||
|
},
|
||||||
|
|
||||||
if model.CreatedAt.IsZero() {
|
{
|
||||||
return false
|
name: "Success - without origins",
|
||||||
}
|
inputDTO: newMerchDTO{
|
||||||
|
Name: "Test name2",
|
||||||
if model.UpdatedAt.Valid == false {
|
},
|
||||||
return false
|
expectOrigins: false,
|
||||||
}
|
expectedCode: 201,
|
||||||
|
|
||||||
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{
|
for _, tt := range cases {
|
||||||
Name: "Test name2",
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
mockRepo := new(MockRepository)
|
||||||
|
|
||||||
|
if tt.expectOrigins {
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
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("createMerch", mock.Anything, merchExpected, extraExpected).
|
||||||
|
Return(nil)
|
||||||
|
|
||||||
|
router := setupTestRouter(mockRepo)
|
||||||
|
|
||||||
|
payload, err := json.Marshal(&tt.inputDTO)
|
||||||
|
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, tt.expectedCode, w.Code)
|
||||||
|
mockRepo.AssertExpectations(t)
|
||||||
|
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
func TestGetManySuccess(t *testing.T) {
|
||||||
type testCase struct {
|
type testCase struct {
|
||||||
caseName string
|
name string
|
||||||
getManyReturn []getMerchInternal
|
getManyReturn []getMerchInternal
|
||||||
expectLabels bool
|
expectLabels bool
|
||||||
labelsReceive []int64
|
labelsReceive []int64
|
||||||
|
|
@ -378,7 +402,7 @@ func TestGetManySuccess(t *testing.T) {
|
||||||
|
|
||||||
cases := []testCase{
|
cases := []testCase{
|
||||||
{
|
{
|
||||||
caseName: "Success with merch",
|
name: "Success with merch",
|
||||||
getManyReturn: []getMerchInternal{
|
getManyReturn: []getMerchInternal{
|
||||||
{Id: 1, MerchUuid: validUuid, Name: "merch1"},
|
{Id: 1, MerchUuid: validUuid, Name: "merch1"},
|
||||||
{Id: 2, MerchUuid: validUuid, Name: "merch2"},
|
{Id: 2, MerchUuid: validUuid, Name: "merch2"},
|
||||||
|
|
@ -396,14 +420,14 @@ func TestGetManySuccess(t *testing.T) {
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
caseName: "Success no merch - empty merch",
|
name: "Success no merch - empty merch",
|
||||||
getManyReturn: []getMerchInternal{},
|
getManyReturn: []getMerchInternal{},
|
||||||
expectLabels: false,
|
expectLabels: false,
|
||||||
expectedCode: 204,
|
expectedCode: 204,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
caseName: "Success no merch - nil merch",
|
name: "Success no merch - nil merch",
|
||||||
getManyReturn: nil,
|
getManyReturn: nil,
|
||||||
expectLabels: false,
|
expectLabels: false,
|
||||||
expectedCode: 204,
|
expectedCode: 204,
|
||||||
|
|
@ -411,39 +435,39 @@ func TestGetManySuccess(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range cases {
|
for _, tt := range cases {
|
||||||
t.Log(tt.caseName)
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
mockRepo := new(MockRepository)
|
||||||
|
|
||||||
mockRepo := new(MockRepository)
|
|
||||||
|
|
||||||
mockRepo.
|
|
||||||
On("getMany", mock.Anything, userId).
|
|
||||||
Return(tt.getManyReturn, nil)
|
|
||||||
|
|
||||||
if tt.expectLabels {
|
|
||||||
mockRepo.
|
mockRepo.
|
||||||
On("getManyAttachedLabelsByList", mock.Anything, userId, tt.labelsReceive).
|
On("getMany", mock.Anything, userId).
|
||||||
Return(tt.labelsReturn, nil)
|
Return(tt.getManyReturn, nil)
|
||||||
}
|
|
||||||
|
|
||||||
router := setupTestRouter(mockRepo)
|
if tt.expectLabels {
|
||||||
|
mockRepo.
|
||||||
req, _ := http.NewRequest("GET", "/merch/list", nil)
|
On("getManyAttachedLabelsByList", mock.Anything, userId, tt.labelsReceive).
|
||||||
w := httptest.NewRecorder()
|
Return(tt.labelsReturn, nil)
|
||||||
|
|
||||||
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)
|
router := setupTestRouter(mockRepo)
|
||||||
}
|
|
||||||
|
|
||||||
mockRepo.AssertExpectations(t)
|
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