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  }