From 1e43f2a59bba0462494066767fac140601791718 Mon Sep 17 00:00:00 2001 From: mihna123 Date: Sun, 23 Aug 2026 17:47:16 +0200 Subject: listing: implement a service layer stub along with tests --- internal/listing/mock_test.go | 89 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 internal/listing/mock_test.go (limited to 'internal/listing/mock_test.go') diff --git a/internal/listing/mock_test.go b/internal/listing/mock_test.go new file mode 100644 index 0000000..5aa6d68 --- /dev/null +++ b/internal/listing/mock_test.go @@ -0,0 +1,89 @@ +package listing + +import "time" + +type RepositoryMock struct { + listings []Listing + err error +} + +func (r *RepositoryMock) GetAll() ([]Listing, error) { + if r.err != nil { + return nil, r.err + } + + return r.listings, nil +} + +func (r *RepositoryMock) GetByCategory(c string) ([]Listing, error) { + if r.err != nil { + return nil, r.err + } + + var res []Listing + for _, l := range r.listings { + for _, cat := range l.category { + if cat == c { + res = append(res, l) + break + } + } + } + + return res, nil +} + +func NewRepositoryMock() *RepositoryMock { + mockListings := []Listing{ + { + id: 0, + title: "Audi a5 2.0 2015 godiste", + slug: "audi-a5-2-0-2015-godiste", + location: Location{city: "Novi Sad", street: "Bulevar Cara Lazara", premise: "3"}, + status: PublishedStatus, + category: []string{"automobile", "audi", "a5"}, + price: 5000, + currency: "EUR", + description: "Pali odma ide lepo", + images: []string{}, + views: 10, + createdAt: time.Now(), + author: nil, + isExternal: false, + }, + { + id: 1, + title: "Led lampa za glavu TJ-1608", + slug: "led-lampa-za-glavu-tj-1608", + location: Location{city: "Belgrade"}, + status: PublishedStatus, + category: []string{"hunting", "hunting-lamps"}, + price: 1200, + currency: "RSD", + description: "Odlična lampa, svetli super", + images: []string{}, + views: 21, + createdAt: time.Now(), + author: nil, + isExternal: false, + }, + { + id: 2, + title: "Školski anatomski ranac Minnie Mouse metalik", + slug: "skolski-anatomski-ranac-minnie-mouse-metalik", + location: Location{city: "Mladenovac"}, + status: PublishedStatus, + category: []string{"school", "backpacks"}, + price: 3400, + currency: "RSD", + description: "Minnie ranac mnogo lep za devojčice", + images: []string{}, + views: 131, + createdAt: time.Now(), + author: nil, + isExternal: false, + }, + } + + return &RepositoryMock{listings: mockListings} +} -- cgit v1.3.1