| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | package mockimport (	shipping "github.com/longjoy/micro-go-course/section19/cargo/model")// CargoRepository is a mock cargo repository.type CargoRepository struct {	StoreFn      func(c *shipping.Cargo) error	StoreInvoked bool	FindFn      func(id shipping.TrackingID) (*shipping.Cargo, error)	FindInvoked bool	FindAllFn      func() []*shipping.Cargo	FindAllInvoked bool}// Store calls the StoreFn.func (r *CargoRepository) Store(c *shipping.Cargo) error {	r.StoreInvoked = true	return r.StoreFn(c)}// Find calls the FindFn.func (r *CargoRepository) Find(id shipping.TrackingID) (*shipping.Cargo, error) {	r.FindInvoked = true	return r.FindFn(id)}// FindAll calls the FindAllFn.func (r *CargoRepository) FindAll() []*shipping.Cargo {	r.FindAllInvoked = true	return r.FindAllFn()}// LocationRepository is a mock location repository.type LocationRepository struct {	FindFn      func(shipping.UNLocode) (*shipping.Location, error)	FindInvoked bool	FindAllFn      func() []*shipping.Location	FindAllInvoked bool}// Find calls the FindFn.func (r *LocationRepository) Find(locode shipping.UNLocode) (*shipping.Location, error) {	r.FindInvoked = true	return r.FindFn(locode)}// FindAll calls the FindAllFn.func (r *LocationRepository) FindAll() []*shipping.Location {	r.FindAllInvoked = true	return r.FindAllFn()}// VoyageRepository is a mock voyage repository.type VoyageRepository struct {	FindFn      func(shipping.VoyageNumber) (*shipping.Voyage, error)	FindInvoked bool}// Find calls the FindFn.func (r *VoyageRepository) Find(number shipping.VoyageNumber) (*shipping.Voyage, error) {	r.FindInvoked = true	return r.FindFn(number)}// HandlingEventRepository is a mock handling events repository.type HandlingEventRepository struct {	StoreFn      func(shipping.HandlingEvent)	StoreInvoked bool	QueryHandlingHistoryFn      func(shipping.TrackingID) shipping.HandlingHistory	QueryHandlingHistoryInvoked bool}// Store calls the StoreFn.func (r *HandlingEventRepository) Store(e shipping.HandlingEvent) {	r.StoreInvoked = true	r.StoreFn(e)}// QueryHandlingHistory calls the QueryHandlingHistoryFn.func (r *HandlingEventRepository) QueryHandlingHistory(id shipping.TrackingID) shipping.HandlingHistory {	r.QueryHandlingHistoryInvoked = true	return r.QueryHandlingHistoryFn(id)}// RoutingService provides a mock routing service.type RoutingService struct {	FetchRoutesFn      func(shipping.RouteSpecification) []shipping.Itinerary	FetchRoutesInvoked bool}// FetchRoutesForSpecification calls the FetchRoutesFn.func (s *RoutingService) FetchRoutesForSpecification(rs shipping.RouteSpecification) []shipping.Itinerary {	s.FetchRoutesInvoked = true	return s.FetchRoutesFn(rs)}
 |