From 064ae1aeff599c8bb606e4cde4cad629d0c2ada4 Mon Sep 17 00:00:00 2001 From: nquidox Date: Sun, 29 Mar 2026 11:54:00 +0300 Subject: [PATCH] getPrices test --- internal/merch/service_prices.go | 2 - internal/merch/service_prices_test.go | 98 +++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 internal/merch/service_prices_test.go diff --git a/internal/merch/service_prices.go b/internal/merch/service_prices.go index 067326f..8e1006a 100644 --- a/internal/merch/service_prices.go +++ b/internal/merch/service_prices.go @@ -3,12 +3,10 @@ package merch import ( "context" "errors" - "fmt" "time" ) func (s *service) getPrices(ctx context.Context, userId int64, days int) ([]PricesResponse, error) { - fmt.Println("Enter service") merchList, err := s.repo.getAllUserMerch(ctx, userId) if err != nil { logErr(serviceLogHeader, err) diff --git a/internal/merch/service_prices_test.go b/internal/merch/service_prices_test.go new file mode 100644 index 0000000..4f0b206 --- /dev/null +++ b/internal/merch/service_prices_test.go @@ -0,0 +1,98 @@ +package merch + +import ( + "context" + "fmt" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "merch-api/pkg/utils" + "testing" + "time" +) + +func Test_service_getPrices(t *testing.T) { + type fields struct { + repo Repository + utils utils.Utils + } + type args struct { + ctx context.Context + userId int64 + days int + } + tests := []struct { + name string + fields fields + args args + want []PricesResponse + wantErr assert.ErrorAssertionFunc + }{ + // TODO: Add test cases. + {name: "success", + fields: fields{ + repo: nil, + utils: utils.New(), + }, + args: args{ + ctx: context.Background(), + userId: 4, + days: 180, + }, + want: []PricesResponse{}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockMerch := []Merch{ + {Id: 1532, MerchUuid: "019cd7f4-e491-7dd5-a327-ea0b4c3800d6", Name: "Momo (darkness ver.)"}, + {Id: 1534, MerchUuid: "019cd7f4-e491-7dd7-a81f-1160db34da2d", Name: "Sairenji Haruna 1/4"}, + } + + mockPrices := []Price{ + {CreatedAt: timeFromString("2026-02-01 15:43:25.375677+00"), MerchId: 1532, Price: 1231, OriginId: 2}, + {CreatedAt: timeFromString("2026-02-02 15:43:25.375677+00"), MerchId: 1532, Price: 1232, OriginId: 2}, + {CreatedAt: timeFromString("2026-02-03 15:43:25.375677+00"), MerchId: 1532, Price: 1233, OriginId: 2}, + {CreatedAt: timeFromString("2026-02-04 15:43:25.375677+00"), MerchId: 1532, Price: 1234, OriginId: 2}, + {CreatedAt: timeFromString("2026-02-05 15:43:25.375677+00"), MerchId: 1532, Price: 1235, OriginId: 2}, + {CreatedAt: timeFromString("2026-02-06 15:43:25.375677+00"), MerchId: 1532, Price: 1231, OriginId: 2}, + // + {CreatedAt: timeFromString("2026-02-01 15:43:25.375677+00"), MerchId: 1534, Price: 5231, OriginId: 1}, + {CreatedAt: timeFromString("2026-02-02 15:43:25.375677+00"), MerchId: 1534, Price: 5232, OriginId: 1}, + {CreatedAt: timeFromString("2026-02-03 15:43:25.375677+00"), MerchId: 1534, Price: 5233, OriginId: 1}, + {CreatedAt: timeFromString("2026-02-04 15:43:25.375677+00"), MerchId: 1534, Price: 5234, OriginId: 1}, + {CreatedAt: timeFromString("2026-02-05 15:43:25.375677+00"), MerchId: 1534, Price: 5235, OriginId: 1}, + {CreatedAt: timeFromString("2026-02-06 15:43:25.375677+00"), MerchId: 1534, Price: 5231, OriginId: 1}, + } + + mockOrigins := []Origin{ + {Id: 1, Name: "surugaya"}, + {Id: 2, Name: "mandarake"}, + } + + mockRepo := new(MockRepository) + mockRepo.On("getAllUserMerch", mock.Anything, tt.args.userId).Return(mockMerch, nil) + + mockRepo.On("getPricesWithDays", mock.Anything, tt.args.userId, mock.Anything).Return(mockPrices, nil) + mockRepo.On("getOrigins", mock.Anything).Return(mockOrigins, nil) + + s := &service{ + repo: mockRepo, + utils: tt.fields.utils, + } + got, _ := s.getPrices(tt.args.ctx, tt.args.userId, tt.args.days) + //if !tt.wantErr(t, err, fmt.Sprintf("getPrices(%v, %v, %v)", tt.args.ctx, tt.args.userId, tt.args.days)) { + // return + //} + + for _, item := range got { + fmt.Printf("name: %v, merch_uuid: %v, origins: %v\n", item.Name, item.MerchUuid, item.Origins) + } + //assert.Equalf(t, tt.want, got, "getPrices(%v, %v, %v)", tt.args.ctx, tt.args.userId, tt.args.days) + }) + } +} + +func timeFromString(s string) time.Time { + t, _ := time.Parse("2006-01-02 15:04:05", s) + return t +}