| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- package handling
 
- import (
 
- 	"testing"
 
- 	"time"
 
- 	"github.com/longjoy/micro-go-course/section19/cargo/mock"
 
- 	shipping "github.com/longjoy/micro-go-course/section19/cargo/model"
 
- )
 
- type stubEventHandler struct {
 
- 	events []interface{}
 
- }
 
- func (h *stubEventHandler) CargoWasHandled(e shipping.HandlingEvent) {
 
- 	h.events = append(h.events, e)
 
- }
 
- func TestRegisterHandlingEvent(t *testing.T) {
 
- 	var cargos mock.CargoRepository
 
- 	cargos.StoreFn = func(c *shipping.Cargo) error {
 
- 		return nil
 
- 	}
 
- 	cargos.FindFn = func(id shipping.TrackingID) (*shipping.Cargo, error) {
 
- 		if id == "no_such_id" {
 
- 			return nil, shipping.ErrUnknownCargo
 
- 		}
 
- 		return new(shipping.Cargo), nil
 
- 	}
 
- 	var voyages mock.VoyageRepository
 
- 	voyages.FindFn = func(n shipping.VoyageNumber) (*shipping.Voyage, error) {
 
- 		return new(shipping.Voyage), nil
 
- 	}
 
- 	var locations mock.LocationRepository
 
- 	locations.FindFn = func(l shipping.UNLocode) (*shipping.Location, error) {
 
- 		return nil, nil
 
- 	}
 
- 	var events mock.HandlingEventRepository
 
- 	events.StoreFn = func(e shipping.HandlingEvent) {}
 
- 	eh := &stubEventHandler{events: make([]interface{}, 0)}
 
- 	ef := shipping.HandlingEventFactory{
 
- 		CargoRepository:    &cargos,
 
- 		VoyageRepository:   &voyages,
 
- 		LocationRepository: &locations,
 
- 	}
 
- 	s := NewService(&events, ef, eh)
 
- 	var (
 
- 		completed = time.Date(2015, time.November, 10, 23, 0, 0, 0, time.UTC)
 
- 		id        = shipping.TrackingID("ABC123")
 
- 		voyage    = shipping.VoyageNumber("V100")
 
- 	)
 
- 	var err error
 
- 	err = cargos.Store(shipping.NewCargo(id, shipping.RouteSpecification{}))
 
- 	if err != nil {
 
- 		t.Fatal(err)
 
- 	}
 
- 	err = s.RegisterHandlingEvent(completed, id, voyage, shipping.SESTO, shipping.Load)
 
- 	if err != nil {
 
- 		t.Fatal(err)
 
- 	}
 
- 	err = s.RegisterHandlingEvent(completed, "no_such_id", voyage, shipping.SESTO, shipping.Load)
 
- 	if err != shipping.ErrUnknownCargo {
 
- 		t.Errorf("err = %s; want = %s", err, shipping.ErrUnknownCargo)
 
- 	}
 
- 	if len(eh.events) != 1 {
 
- 		t.Errorf("len(eh.events) = %d; want = %d", len(eh.events), 1)
 
- 	}
 
- }
 
 
  |