github.com/joao-fontenele/go-url-shortener@v1.3.4/pkg/mocks/services.go (about) 1 package mocks 2 3 import ( 4 "context" 5 6 "github.com/joao-fontenele/go-url-shortener/pkg/shortener" 7 ) 8 9 // FakeLinkService holds fake implementations for the LinkService interface 10 type FakeLinkService struct { 11 ListFn func(ctx context.Context, limit, skip int) ([]shortener.Link, error) 12 ListCalled bool 13 14 GetURLFn func(ctx context.Context, slug string) (string, error) 15 GetURLCalled bool 16 17 CreateFn func(ctx context.Context, URL string) (*shortener.Link, error) 18 CreateCalled bool 19 20 GetNewSlugFn func(ctx context.Context, size int) (string, error) 21 GetNewSlugCalled bool 22 23 GenerateSlugFn func(size int) string 24 GenerateSlugCalled bool 25 } 26 27 // ensures FakeLinkService implements LinkService interface 28 var _ shortener.LinkService = &FakeLinkService{} 29 30 // GetURL returns an URL given a shortened url 31 func (ls *FakeLinkService) GetURL(ctx context.Context, slug string) (string, error) { 32 ls.GetURLCalled = true 33 return ls.GetURLFn(ctx, slug) 34 } 35 36 // Create creates a searchable URL for a given code 37 func (ls *FakeLinkService) Create(ctx context.Context, URL string) (*shortener.Link, error) { 38 ls.CreateCalled = true 39 return ls.CreateFn(ctx, URL) 40 } 41 42 // GetNewSlug returns a slug that still doesn't exist in db 43 func (ls *FakeLinkService) GetNewSlug(ctx context.Context, size int) (string, error) { 44 ls.GetNewSlugCalled = true 45 return ls.GetNewSlugFn(ctx, size) 46 } 47 48 // GenerateSlug returns a random slug 49 func (ls *FakeLinkService) GenerateSlug(size int) string { 50 ls.GenerateSlugCalled = true 51 return ls.GenerateSlugFn(size) 52 } 53 54 // List returns a list of links 55 func (ls *FakeLinkService) List(ctx context.Context, limit, skip int) ([]shortener.Link, error) { 56 ls.ListCalled = true 57 return ls.ListFn(ctx, limit, skip) 58 }