From d79b66990952e984ee48fee4ee4f16a69284856b Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:15:34 +0700 Subject: [PATCH 1/9] feat: image client mock --- src/mocks/client/image/image.mock.go | 49 ++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/mocks/client/image/image.mock.go diff --git a/src/mocks/client/image/image.mock.go b/src/mocks/client/image/image.mock.go new file mode 100644 index 0000000..66efa34 --- /dev/null +++ b/src/mocks/client/image/image.mock.go @@ -0,0 +1,49 @@ +package image + +import ( + "context" + + imageProto "github.com/isd-sgcu/johnjud-go-proto/johnjud/file/image/v1" + "github.com/stretchr/testify/mock" + "google.golang.org/grpc" +) + +type ImageClientMock struct { + mock.Mock +} + +func (c *ImageClientMock) Upload(_ context.Context, in *imageProto.UploadImageRequest, _ ...grpc.CallOption) (res *imageProto.UploadImageResponse, err error) { + args := c.Called(in) + + if args.Get(0) != nil { + res = args.Get(0).(*imageProto.UploadImageResponse) + } + return res, args.Error(1) +} + +func (c *ImageClientMock) FindByPetId(_ context.Context, in *imageProto.FindImageByPetIdRequest, _ ...grpc.CallOption) (res *imageProto.FindImageByPetIdResponse, err error) { + args := c.Called(in) + + if args.Get(0) != nil { + res = args.Get(0).(*imageProto.FindImageByPetIdResponse) + } + return res, args.Error(1) +} + +func (c *ImageClientMock) AssignPet(_ context.Context, in *imageProto.AssignPetRequest, _ ...grpc.CallOption) (res *imageProto.AssignPetResponse, err error) { + args := c.Called(in) + + if args.Get(0) != nil { + res = args.Get(0).(*imageProto.AssignPetResponse) + } + return res, args.Error(1) +} + +func (c *ImageClientMock) Delete(_ context.Context, in *imageProto.DeleteImageRequest, _ ...grpc.CallOption) (res *imageProto.DeleteImageResponse, err error) { + args := c.Called(in) + + if args.Get(0) != nil { + res = args.Get(0).(*imageProto.DeleteImageResponse) + } + return res, args.Error(1) +} From a47734b9940ac6fd2e55ea38ed0ad19fc6cb8ee9 Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:15:43 +0700 Subject: [PATCH 2/9] chore: fix petService --- src/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.go b/src/main.go index 30308be..0538fa1 100644 --- a/src/main.go +++ b/src/main.go @@ -120,7 +120,7 @@ func main() { imageHandler := imageHdr.NewHandler(imageService, v, conf.App.MaxFileSize) petClient := petProto.NewPetServiceClient(backendConn) - petService := petSvc.NewService(petClient) + petService := petSvc.NewService(petClient, imageService) petHandler := petHdr.NewHandler(petService, imageService, v) likeClient := likeProto.NewLikeServiceClient(backendConn) From 42a2ef86caf62ed68bca8483d4e864679ae9cece Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:16:16 +0700 Subject: [PATCH 3/9] feat: image utils --- src/app/utils/pet/pet.utils.go | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/app/utils/pet/pet.utils.go b/src/app/utils/pet/pet.utils.go index 55c0ff1..4741024 100644 --- a/src/app/utils/pet/pet.utils.go +++ b/src/app/utils/pet/pet.utils.go @@ -29,7 +29,35 @@ func MockImageList(n int) [][]*imgproto.Image { return imagesList } -func ProtoToDto(in *petproto.Pet, images []*imgproto.Image) *dto.PetResponse { +func ImageProtoToDto(images []*imgproto.Image) []*dto.ImageResponse { + var imageDto []*dto.ImageResponse + for _, image := range images { + imageDto = append(imageDto, &dto.ImageResponse{ + Id: image.Id, + Url: image.ImageUrl, + ObjectKey: image.ObjectKey, + }) + } + return imageDto +} + +func ImageListProtoToDto(imagesList [][]*imgproto.Image) [][]*dto.ImageResponse { + var imageListDto [][]*dto.ImageResponse + for _, images := range imagesList { + var imageDto []*dto.ImageResponse + for _, image := range images { + imageDto = append(imageDto, &dto.ImageResponse{ + Id: image.Id, + Url: image.ImageUrl, + ObjectKey: image.ObjectKey, + }) + } + imageListDto = append(imageListDto, imageDto) + } + return imageListDto +} + +func ProtoToDto(in *petproto.Pet, images []*dto.ImageResponse) *dto.PetResponse { pet := &dto.PetResponse{ Id: in.Id, Type: in.Type, @@ -48,7 +76,7 @@ func ProtoToDto(in *petproto.Pet, images []*imgproto.Image) *dto.PetResponse { Address: in.Address, Contact: in.Contact, AdoptBy: in.AdoptBy, - Images: extractImages(images), + Images: images, } return pet } @@ -122,7 +150,7 @@ func ProtoToDtoList(in []*petproto.Pet, imagesList [][]*imgproto.Image) []*dto.P Address: p.Address, Contact: p.Contact, AdoptBy: p.AdoptBy, - Images: extractImages(imagesList[i]), + Images: ImageProtoToDto(imagesList[i]), } resp = append(resp, pet) } From fd98be2c2ca68e77a205f29d61908af0e7d07f6a Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:16:22 +0700 Subject: [PATCH 4/9] fix: pet service test --- src/app/service/pet/pet.service_test.go | 153 ++++++++++++++++++++---- 1 file changed, 128 insertions(+), 25 deletions(-) diff --git a/src/app/service/pet/pet.service_test.go b/src/app/service/pet/pet.service_test.go index 909b39d..4822b46 100644 --- a/src/app/service/pet/pet.service_test.go +++ b/src/app/service/pet/pet.service_test.go @@ -8,8 +8,10 @@ import ( "github.com/go-faker/faker/v4" "github.com/isd-sgcu/johnjud-gateway/src/app/constant" "github.com/isd-sgcu/johnjud-gateway/src/app/dto" + imageSvc "github.com/isd-sgcu/johnjud-gateway/src/app/service/image" utils "github.com/isd-sgcu/johnjud-gateway/src/app/utils/pet" "github.com/isd-sgcu/johnjud-gateway/src/constant/pet" + imagemock "github.com/isd-sgcu/johnjud-gateway/src/mocks/client/image" petmock "github.com/isd-sgcu/johnjud-gateway/src/mocks/client/pet" petproto "github.com/isd-sgcu/johnjud-go-proto/johnjud/backend/pet/v1" imgproto "github.com/isd-sgcu/johnjud-go-proto/johnjud/file/image/v1" @@ -45,6 +47,11 @@ type PetServiceTest struct { Images []*imgproto.Image ImagesList [][]*imgproto.Image + + AssignPetReq *imgproto.AssignPetRequest + AssignPetDto *dto.AssignPetRequest + + FindByPetIdReq *imgproto.FindImageByPetIdRequest } func TestPetService(t *testing.T) { @@ -122,7 +129,7 @@ func (t *PetServiceTest) SetupTest() { AdoptBy: t.Pet.AdoptBy, } - t.PetDto = utils.ProtoToDto(t.Pet, t.Pet.Images) + t.PetDto = utils.ProtoToDto(t.Pet, utils.ImageProtoToDto(t.Pet.Images)) t.FindAllPetDto = &dto.FindAllPetRequest{ Search: "", @@ -199,6 +206,20 @@ func (t *PetServiceTest) SetupTest() { PetID: t.Pet.Id, } + t.AssignPetReq = &imgproto.AssignPetRequest{ + Ids: []string{}, + PetId: t.Pet.Id, + } + + t.AssignPetDto = &dto.AssignPetRequest{ + Ids: []string{}, + PetId: t.Pet.Id, + } + + t.FindByPetIdReq = &imgproto.FindImageByPetIdRequest{ + PetId: t.Pet.Id, + } + t.UnavailableServiceErr = &dto.ResponseErr{ StatusCode: http.StatusServiceUnavailable, Message: constant.UnavailableServiceMessage, @@ -241,7 +262,10 @@ func (t *PetServiceTest) TestFindAllSuccess() { client := petmock.PetClientMock{} client.On("FindAll", t.FindAllPetReq).Return(protoResp, nil) - svc := NewService(&client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(&client, imageSvc) actual, err := svc.FindAll(t.FindAllPetDto) assert.Nil(t.T(), err) @@ -256,7 +280,10 @@ func (t *PetServiceTest) TestFindAllUnavailableServiceError() { client := petmock.PetClientMock{} client.On("FindAll", t.FindAllPetReq).Return(nil, clientErr) - svc := NewService(&client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(&client, imageSvc) actual, err := svc.FindAll(t.FindAllPetDto) assert.Nil(t.T(), actual) @@ -271,12 +298,21 @@ func (t *PetServiceTest) TestFindOneSuccess() { Pet: t.Pet, } - expected := utils.ProtoToDto(t.Pet, t.Pet.Images) + findByPetIdReq := t.FindByPetIdReq + findByPetIdResp := &imgproto.FindImageByPetIdResponse{ + Images: t.Images, + } + + expected := utils.ProtoToDto(t.Pet, utils.ImageProtoToDto(t.Pet.Images)) client := petmock.PetClientMock{} client.On("FindOne", protoReq).Return(protoResp, nil) - svc := NewService(&client) + imageClient := imagemock.ImageClientMock{} + imageClient.On("FindByPetId", findByPetIdReq).Return(findByPetIdResp, nil) + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(&client, imageSvc) actual, err := svc.FindOne(t.Pet.Id) assert.Nil(t.T(), err) @@ -295,7 +331,10 @@ func (t *PetServiceTest) TestFindOneNotFoundError() { client := petmock.PetClientMock{} client.On("FindOne", protoReq).Return(nil, clientErr) - svc := NewService(&client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(&client, imageSvc) actual, err := svc.FindOne(t.Pet.Id) assert.Nil(t.T(), actual) @@ -314,7 +353,11 @@ func (t *PetServiceTest) TestFindOneUnavailableServiceError() { client := petmock.PetClientMock{} client.On("FindOne", protoReq).Return(nil, clientErr) - svc := NewService(&client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + + svc := NewService(&client, imageSvc) actual, err := svc.FindOne(t.Pet.Id) assert.Nil(t.T(), actual) @@ -327,12 +370,27 @@ func (t *PetServiceTest) TestCreateSuccess() { Pet: t.Pet, } - expected := utils.ProtoToDto(t.Pet, t.Pet.Images) + assignPetReq := t.AssignPetReq + assignPetResp := &imgproto.AssignPetResponse{ + Success: true, + } + + findByPetIdReq := t.FindByPetIdReq + findByPetIdResp := &imgproto.FindImageByPetIdResponse{ + Images: t.Images, + } + + expected := utils.ProtoToDto(t.Pet, utils.ImageProtoToDto(t.Pet.Images)) client := &petmock.PetClientMock{} client.On("Create", protoReq).Return(protoResp, nil) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + imageClient.On("AssignPet", assignPetReq).Return(assignPetResp, nil) + imageClient.On("FindByPetId", findByPetIdReq).Return(findByPetIdResp, nil) + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Create(t.CreatePetDto) assert.Nil(t.T(), err) @@ -349,7 +407,10 @@ func (t *PetServiceTest) TestCreateInvalidArgumentError() { client := &petmock.PetClientMock{} client.On("Create", protoReq).Return(nil, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Create(t.CreatePetDto) assert.Nil(t.T(), actual) @@ -366,7 +427,10 @@ func (t *PetServiceTest) TestCreateInternalError() { client := &petmock.PetClientMock{} client.On("Create", protoReq).Return(nil, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Create(t.CreatePetDto) assert.Nil(t.T(), actual) @@ -383,7 +447,10 @@ func (t *PetServiceTest) TestCreateUnavailableServiceError() { client := &petmock.PetClientMock{} client.On("Create", protoReq).Return(nil, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Create(t.CreatePetDto) assert.Nil(t.T(), actual) @@ -396,12 +463,15 @@ func (t *PetServiceTest) TestUpdateSuccess() { Pet: t.Pet, } - expected := utils.ProtoToDto(t.Pet, t.Pet.Images) + expected := utils.ProtoToDto(t.Pet, utils.ImageProtoToDto(t.Pet.Images)) client := &petmock.PetClientMock{} client.On("Update", protoReq).Return(protoResp, nil) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Update(t.Pet.Id, t.UpdatePetDto) assert.Nil(t.T(), err) @@ -417,7 +487,10 @@ func (t *PetServiceTest) TestUpdateNotFound() { client := &petmock.PetClientMock{} client.On("Update", protoReq).Return(nil, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Update(t.Pet.Id, t.UpdatePetDto) assert.Nil(t.T(), actual) @@ -433,7 +506,10 @@ func (t *PetServiceTest) TestUpdateUnavailableServiceError() { client := &petmock.PetClientMock{} client.On("Update", protoReq).Return(nil, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Update(t.Pet.Id, t.UpdatePetDto) assert.Nil(t.T(), actual) @@ -453,7 +529,10 @@ func (t *PetServiceTest) TestDeleteSuccess() { client := &petmock.PetClientMock{} client.On("Delete", protoReq).Return(protoResp, nil) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Delete(t.Pet.Id) assert.Nil(t.T(), err) @@ -474,7 +553,10 @@ func (t *PetServiceTest) TestDeleteNotFound() { client := &petmock.PetClientMock{} client.On("Delete", protoReq).Return(protoResp, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Delete(t.Pet.Id) assert.Nil(t.T(), actual) @@ -495,7 +577,10 @@ func (t *PetServiceTest) TestDeleteServiceUnavailableError() { client := &petmock.PetClientMock{} client.On("Delete", protoReq).Return(protoResp, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Delete(t.Pet.Id) assert.Nil(t.T(), actual) @@ -511,7 +596,10 @@ func (t *PetServiceTest) TestChangeViewSuccess() { client := &petmock.PetClientMock{} client.On("ChangeView", protoReq).Return(protoResp, nil) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.ChangeView(t.Pet.Id, t.ChangeViewedPetDto) assert.Nil(t.T(), err) @@ -531,7 +619,10 @@ func (t *PetServiceTest) TestChangeViewNotFoundError() { client := &petmock.PetClientMock{} client.On("ChangeView", protoReq).Return(protoResp, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.ChangeView(t.Pet.Id, t.ChangeViewedPetDto) assert.Equal(t.T(), &dto.ChangeViewPetResponse{Success: false}, actual) @@ -551,7 +642,10 @@ func (t *PetServiceTest) TestChangeViewUnavailableServiceError() { client := &petmock.PetClientMock{} client.On("ChangeView", protoReq).Return(protoResp, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.ChangeView(t.Pet.Id, t.ChangeViewedPetDto) assert.Equal(t.T(), &dto.ChangeViewPetResponse{Success: false}, actual) @@ -567,7 +661,10 @@ func (t *PetServiceTest) TestAdoptSuccess() { client := &petmock.PetClientMock{} client.On("AdoptPet", protoReq).Return(protoResp, nil) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Adopt(t.Pet.Id, t.AdoptDto) assert.Nil(t.T(), err) @@ -584,7 +681,10 @@ func (t *PetServiceTest) TestAdoptNotFoundError() { client := &petmock.PetClientMock{} client.On("AdoptPet", protoReq).Return(nil, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Adopt(t.Pet.Id, t.AdoptDto) assert.Nil(t.T(), actual) @@ -601,7 +701,10 @@ func (t *PetServiceTest) TestAdoptUnavailableServiceError() { client := &petmock.PetClientMock{} client.On("AdoptPet", protoReq).Return(nil, clientErr) - svc := NewService(client) + imageClient := imagemock.ImageClientMock{} + + imageSvc := imageSvc.NewService(&imageClient) + svc := NewService(client, imageSvc) actual, err := svc.Adopt(t.Pet.Id, t.AdoptDto) assert.Nil(t.T(), actual) From 9fced93a39ebaeee853edb2bdca3397dfaf7b28c Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:17:00 +0700 Subject: [PATCH 5/9] feat: use imageService instead `mock` image --- src/app/service/pet/pet.service.go | 44 ++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/src/app/service/pet/pet.service.go b/src/app/service/pet/pet.service.go index a18a682..f22b51f 100644 --- a/src/app/service/pet/pet.service.go +++ b/src/app/service/pet/pet.service.go @@ -7,7 +7,9 @@ import ( "github.com/isd-sgcu/johnjud-gateway/src/app/constant" "github.com/isd-sgcu/johnjud-gateway/src/app/dto" + utils "github.com/isd-sgcu/johnjud-gateway/src/app/utils/pet" + imageSvc "github.com/isd-sgcu/johnjud-gateway/src/pkg/service/image" petproto "github.com/isd-sgcu/johnjud-go-proto/johnjud/backend/pet/v1" "github.com/rs/zerolog/log" "google.golang.org/grpc/codes" @@ -15,12 +17,14 @@ import ( ) type Service struct { - petClient petproto.PetServiceClient + petClient petproto.PetServiceClient + imageService imageSvc.Service } -func NewService(petClient petproto.PetServiceClient) *Service { +func NewService(petClient petproto.PetServiceClient, imageService imageSvc.Service) *Service { return &Service{ - petClient: petClient, + petClient: petClient, + imageService: imageService, } } @@ -94,8 +98,13 @@ func (s *Service) FindOne(id string) (result *dto.PetResponse, err *dto.Response } } } - images := utils.MockImageList(1)[0] - findOneResponse := utils.ProtoToDto(res.Pet, images) + + imgRes, imgErrRes := s.imageService.FindByPetId(res.Pet.Id) + if imgErrRes != nil { + return nil, imgErrRes + } + + findOneResponse := utils.ProtoToDto(res.Pet, imgRes) return findOneResponse, nil } @@ -134,8 +143,27 @@ func (s *Service) Create(in *dto.CreatePetRequest) (result *dto.PetResponse, err } } } - images := utils.MockImageList(1)[0] - createPetResponse := utils.ProtoToDto(res.Pet, images) + + assignRes, assignErr := s.imageService.AssignPet(&dto.AssignPetRequest{ + Ids: in.Images, + PetId: res.Pet.Id, + }) + if assignErr != nil { + return nil, assignErr + } + if assignRes.Success == false { + return nil, &dto.ResponseErr{ + StatusCode: http.StatusInternalServerError, + Message: constant.InternalErrorMessage, + Data: nil, + } + } + + imgRes, imgErrRes := s.imageService.FindByPetId(res.Pet.Id) + if imgErrRes != nil { + return nil, imgErrRes + } + createPetResponse := utils.ProtoToDto(res.Pet, imgRes) return createPetResponse, nil } @@ -181,7 +209,7 @@ func (s *Service) Update(id string, in *dto.UpdatePetRequest) (result *dto.PetRe } } images := utils.MockImageList(1)[0] - updatePetResponse := utils.ProtoToDto(res.Pet, images) + updatePetResponse := utils.ProtoToDto(res.Pet, utils.ImageProtoToDto(images)) return updatePetResponse, nil } From 1cdf4fce83d737dbd9093e90630ac88da2a849f0 Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:17:15 +0700 Subject: [PATCH 6/9] fix: pet handler test --- src/app/handler/pet/pet.handler_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/handler/pet/pet.handler_test.go b/src/app/handler/pet/pet.handler_test.go index e42dfbb..0abf7f1 100644 --- a/src/app/handler/pet/pet.handler_test.go +++ b/src/app/handler/pet/pet.handler_test.go @@ -180,7 +180,7 @@ func (t *PetHandlerTest) TestFindAllSuccess() { } func (t *PetHandlerTest) TestFindOneSuccess() { - findOneResponse := utils.ProtoToDto(t.Pet, t.Images) + findOneResponse := utils.ProtoToDto(t.Pet, utils.ImageProtoToDto(t.Images)) expectedResponse := findOneResponse controller := gomock.NewController(t.T()) @@ -235,7 +235,7 @@ func (t *PetHandlerTest) TestFindOneGrpcErr() { } func (t *PetHandlerTest) TestCreateSuccess() { - createResponse := utils.ProtoToDto(t.Pet, t.Images) + createResponse := utils.ProtoToDto(t.Pet, utils.ImageProtoToDto(t.Images)) expectedResponse := createResponse controller := gomock.NewController(t.T()) @@ -274,7 +274,7 @@ func (t *PetHandlerTest) TestCreateGrpcErr() { } func (t *PetHandlerTest) TestUpdateSuccess() { - updateResponse := utils.ProtoToDto(t.Pet, t.Images) + updateResponse := utils.ProtoToDto(t.Pet, utils.ImageProtoToDto(t.Images)) expectedResponse := updateResponse controller := gomock.NewController(t.T()) From 1ced6eb27e63f7293db95b5d1d8cbf7a5c7fee6d Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:17:45 +0700 Subject: [PATCH 7/9] chore: use `[]*ImageResponse` instead `[]ImageResponse` --- src/app/dto/pet.dto.go | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/app/dto/pet.dto.go b/src/app/dto/pet.dto.go index 970b38a..cece7bf 100644 --- a/src/app/dto/pet.dto.go +++ b/src/app/dto/pet.dto.go @@ -5,24 +5,24 @@ import ( ) type PetResponse struct { - Id string `json:"id"` - Type string `json:"type"` - Name string `json:"name"` - Birthdate string `json:"birthdate"` - Gender pet.Gender `json:"gender"` - Color string `json:"color"` - Pattern string `json:"pattern"` - Habit string `json:"habit"` - Caption string `json:"caption"` - Status pet.Status `json:"status"` - IsSterile *bool `json:"is_sterile"` - IsVaccinated *bool `json:"is_vaccinated"` - IsVisible *bool `json:"is_visible"` - Origin string `json:"origin"` - Address string `json:"address"` - Contact string `json:"contact"` - AdoptBy string `json:"adopt_by"` - Images []ImageResponse `json:"images"` + Id string `json:"id"` + Type string `json:"type"` + Name string `json:"name"` + Birthdate string `json:"birthdate"` + Gender pet.Gender `json:"gender"` + Color string `json:"color"` + Pattern string `json:"pattern"` + Habit string `json:"habit"` + Caption string `json:"caption"` + Status pet.Status `json:"status"` + IsSterile *bool `json:"is_sterile"` + IsVaccinated *bool `json:"is_vaccinated"` + IsVisible *bool `json:"is_visible"` + Origin string `json:"origin"` + Address string `json:"address"` + Contact string `json:"contact"` + AdoptBy string `json:"adopt_by"` + Images []*ImageResponse `json:"images"` } type FindAllPetRequest struct { From 7d4b1393eab92a4a2837b1495ccc2ed8f372502e Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Sat, 3 Feb 2024 12:47:12 +0700 Subject: [PATCH 8/9] chore --- src/app/service/pet/pet.service.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/app/service/pet/pet.service.go b/src/app/service/pet/pet.service.go index f22b51f..3d1e750 100644 --- a/src/app/service/pet/pet.service.go +++ b/src/app/service/pet/pet.service.go @@ -144,20 +144,13 @@ func (s *Service) Create(in *dto.CreatePetRequest) (result *dto.PetResponse, err } } - assignRes, assignErr := s.imageService.AssignPet(&dto.AssignPetRequest{ + _, assignErr := s.imageService.AssignPet(&dto.AssignPetRequest{ Ids: in.Images, PetId: res.Pet.Id, }) if assignErr != nil { return nil, assignErr } - if assignRes.Success == false { - return nil, &dto.ResponseErr{ - StatusCode: http.StatusInternalServerError, - Message: constant.InternalErrorMessage, - Data: nil, - } - } imgRes, imgErrRes := s.imageService.FindByPetId(res.Pet.Id) if imgErrRes != nil { From d21e7acaed32a86fa664fcec0e92a1dc89ab0cc5 Mon Sep 17 00:00:00 2001 From: Gear <84141000+macgeargear@users.noreply.github.com> Date: Sat, 3 Feb 2024 12:47:38 +0700 Subject: [PATCH 9/9] chore --- src/app/service/pet/pet.service.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/service/pet/pet.service.go b/src/app/service/pet/pet.service.go index 3d1e750..1810451 100644 --- a/src/app/service/pet/pet.service.go +++ b/src/app/service/pet/pet.service.go @@ -156,6 +156,7 @@ func (s *Service) Create(in *dto.CreatePetRequest) (result *dto.PetResponse, err if imgErrRes != nil { return nil, imgErrRes } + createPetResponse := utils.ProtoToDto(res.Pet, imgRes) return createPetResponse, nil }