|
@@ -0,0 +1,1357 @@
|
|
|
+package place
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+ "database/sql"
|
|
|
+ "net/http/httptest"
|
|
|
+ "strconv"
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ "github.com/brianvoe/gofakeit/v6"
|
|
|
+ "github.com/gofiber/fiber/v2"
|
|
|
+ "github.com/gojuno/minimock/v3"
|
|
|
+ "github.com/stretchr/testify/assert"
|
|
|
+
|
|
|
+ "git.dmitriygnatenko.ru/dima/homethings/internal/api/v1/place/mocks"
|
|
|
+ "git.dmitriygnatenko.ru/dima/homethings/internal/helpers/test"
|
|
|
+ "git.dmitriygnatenko.ru/dima/homethings/internal/models"
|
|
|
+)
|
|
|
+
|
|
|
+func TestDeletePlaceHandler(t *testing.T) {
|
|
|
+ t.Parallel()
|
|
|
+
|
|
|
+ type req struct {
|
|
|
+ method string
|
|
|
+ route string
|
|
|
+ }
|
|
|
+
|
|
|
+ var (
|
|
|
+ placeID = uint64(gofakeit.Number(1, 1000))
|
|
|
+ thingID = uint64(gofakeit.Number(1, 1000))
|
|
|
+ placeImageID = uint64(gofakeit.Number(1, 1000))
|
|
|
+ thingImageID = uint64(gofakeit.Number(1, 1000))
|
|
|
+ placeImageURL = gofakeit.URL()
|
|
|
+ thingImageURL = gofakeit.URL()
|
|
|
+ testError = gofakeit.Error()
|
|
|
+
|
|
|
+ txMockFunc = func(ctx context.Context, f func(ctx context.Context) error) error {
|
|
|
+ return f(ctx)
|
|
|
+ }
|
|
|
+
|
|
|
+ correctReq = req{
|
|
|
+ method: fiber.MethodDelete,
|
|
|
+ route: "/v1/places/" + strconv.FormatUint(placeID, 10),
|
|
|
+ }
|
|
|
+
|
|
|
+ things = []models.Thing{
|
|
|
+ {
|
|
|
+ ID: thingID,
|
|
|
+ PlaceID: placeID,
|
|
|
+ Title: gofakeit.Word(),
|
|
|
+ Description: gofakeit.Phrase(),
|
|
|
+ CreatedAt: gofakeit.Date(),
|
|
|
+ UpdatedAt: gofakeit.Date(),
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ placeImages = []models.Image{
|
|
|
+ {
|
|
|
+ ID: placeImageID,
|
|
|
+ Image: placeImageURL,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ thingImages = []models.Image{
|
|
|
+ {
|
|
|
+ ID: thingImageID,
|
|
|
+ Image: thingImageURL,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ )
|
|
|
+
|
|
|
+ tests := []struct {
|
|
|
+ name string
|
|
|
+ req req
|
|
|
+ resCode int
|
|
|
+ resBody interface{}
|
|
|
+ tmMock func(mc *minimock.Controller) TransactionManager
|
|
|
+ placeRepoMock func(mc *minimock.Controller) PlaceRepository
|
|
|
+ thingRepoMock func(mc *minimock.Controller) ThingRepository
|
|
|
+ placeImageRepoMock func(mc *minimock.Controller) PlaceImageRepository
|
|
|
+ thingImageRepoMock func(mc *minimock.Controller) ThingImageRepository
|
|
|
+ placeThingRepoMock func(mc *minimock.Controller) PlaceThingRepository
|
|
|
+ thingTagRepoMock func(mc *minimock.Controller) ThingTagRepository
|
|
|
+ thingNotificationRepoMock func(mc *minimock.Controller) ThingNotificationRepository
|
|
|
+ fileRepoMock func(mc *minimock.Controller) FileRepository
|
|
|
+ }{
|
|
|
+ {
|
|
|
+ name: "negative case - bad request",
|
|
|
+ req: req{
|
|
|
+ method: fiber.MethodDelete,
|
|
|
+ route: "/v1/places/" + gofakeit.Word(),
|
|
|
+ },
|
|
|
+ resCode: fiber.StatusBadRequest,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ return mocks.NewTransactionManagerMock(mc)
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ return mocks.NewPlaceRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ return mocks.NewThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ return mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ return mocks.NewThingImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - bad request (place not found)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusBadRequest,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ return mocks.NewTransactionManagerMock(mc)
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, sql.ErrNoRows)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ return mocks.NewThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ return mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ return mocks.NewThingImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (get place)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ return mocks.NewTransactionManagerMock(mc)
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ return mocks.NewThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ return mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ return mocks.NewThingImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (get nested places)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ return mocks.NewTransactionManagerMock(mc)
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ return mocks.NewThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ return mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ return mocks.NewThingImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - not empty nested places",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusBadRequest,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ return mocks.NewTransactionManagerMock(mc)
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return([]models.Place{{ID: gofakeit.Uint64()}}, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ return mocks.NewThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ return mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ return mocks.NewThingImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (get place images)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ return mocks.NewThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ return mocks.NewThingImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (get thing)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ return mocks.NewThingImageRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (get thing images)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil, testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (delete place images)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (delete thing images)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ return mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingImageID, id)
|
|
|
+ }).Return(testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (delete place thing)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ mock := mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteThingMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ return mocks.NewThingTagRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (delete thing tag)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ mock := mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteThingMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ mock := mocks.NewThingTagRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ return mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (delete thing notifications)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ mock := mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteThingMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ mock := mocks.NewThingTagRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ mock := mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (delete thing)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ mock := mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteThingMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ mock := mocks.NewThingTagRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ mock := mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (delete place)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ mock := mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteThingMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ mock := mocks.NewThingTagRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ mock := mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ return mocks.NewFileRepositoryMock(mc)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (delete place image files)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ mock := mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteThingMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ mock := mocks.NewThingTagRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ mock := mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ mock := mocks.NewFileRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(path string) {
|
|
|
+ assert.Equal(mc, placeImageURL, path)
|
|
|
+ }).Return(testError)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "negative case - repository error (delete thing image files)",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusInternalServerError,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ mock := mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteThingMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ mock := mocks.NewThingTagRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ mock := mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ mock := mocks.NewFileRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteMock.Set(func(path string) (err error) {
|
|
|
+ if path == placeImageURL {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+
|
|
|
+ return testError
|
|
|
+ })
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "positive case",
|
|
|
+ req: correctReq,
|
|
|
+ resCode: fiber.StatusOK,
|
|
|
+ tmMock: func(mc *minimock.Controller) TransactionManager {
|
|
|
+ mock := mocks.NewTransactionManagerMock(mc)
|
|
|
+ mock.ReadCommittedMock.Set(txMockFunc)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeRepoMock: func(mc *minimock.Controller) PlaceRepository {
|
|
|
+ mock := mocks.NewPlaceRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.GetNestedPlacesMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingRepoMock: func(mc *minimock.Controller) ThingRepository {
|
|
|
+ mock := mocks.NewThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(things, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeThingRepoMock: func(mc *minimock.Controller) PlaceThingRepository {
|
|
|
+ mock := mocks.NewPlaceThingRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteThingMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ placeImageRepoMock: func(mc *minimock.Controller) PlaceImageRepository {
|
|
|
+ mock := mocks.NewPlaceImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByPlaceIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeID, id)
|
|
|
+ }).Return(placeImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, placeImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingImageRepoMock: func(mc *minimock.Controller) ThingImageRepository {
|
|
|
+ mock := mocks.NewThingImageRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.GetByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(thingImages, nil)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingImageID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingTagRepoMock: func(mc *minimock.Controller) ThingTagRepository {
|
|
|
+ mock := mocks.NewThingTagRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteByThingIDMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ thingNotificationRepoMock: func(mc *minimock.Controller) ThingNotificationRepository {
|
|
|
+ mock := mocks.NewThingNotificationRepositoryMock(mc)
|
|
|
+
|
|
|
+ mock.DeleteMock.Inspect(func(ctx context.Context, id uint64) {
|
|
|
+ assert.Equal(mc, thingID, id)
|
|
|
+ }).Return(nil)
|
|
|
+
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ fileRepoMock: func(mc *minimock.Controller) FileRepository {
|
|
|
+ mock := mocks.NewFileRepositoryMock(mc)
|
|
|
+ mock.DeleteMock.Return(nil)
|
|
|
+ return mock
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, tt := range tests {
|
|
|
+ t.Run(tt.name, func(t *testing.T) {
|
|
|
+ t.Parallel()
|
|
|
+
|
|
|
+ mc := minimock.NewController(t)
|
|
|
+ fiberApp := fiber.New()
|
|
|
+
|
|
|
+ fiberApp.Delete("/v1/places/:placeId", DeletePlaceHandler(
|
|
|
+ tt.tmMock(mc),
|
|
|
+ tt.placeRepoMock(mc),
|
|
|
+ tt.thingRepoMock(mc),
|
|
|
+ tt.placeImageRepoMock(mc),
|
|
|
+ tt.thingImageRepoMock(mc),
|
|
|
+ tt.placeThingRepoMock(mc),
|
|
|
+ tt.thingTagRepoMock(mc),
|
|
|
+ tt.thingNotificationRepoMock(mc),
|
|
|
+ tt.fileRepoMock(mc),
|
|
|
+ ))
|
|
|
+
|
|
|
+ fiberRes, _ := fiberApp.Test(
|
|
|
+ httptest.NewRequest(tt.req.method, tt.req.route, nil),
|
|
|
+ test.TestTimeout,
|
|
|
+ )
|
|
|
+ assert.Equal(t, tt.resCode, fiberRes.StatusCode)
|
|
|
+ if tt.resBody != nil {
|
|
|
+ assert.Equal(t, test.MarshalResponse(tt.resBody), test.ConvertBodyToString(fiberRes.Body))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|