public void ThenTheBookingForTheCargoOnTheVesselIsRejected_()
        {
            var confirmationNumber = new ConfirmationNumber(1);
            var booking = new Booking(_cargo, _vessel, confirmationNumber);

            _bookingRepository.DidNotReceive().Add(booking);
        }
        public void ThenANewBookingIsCreatedWithTheConfirmationNumber(int number)
        {
            var confirmationNumber = new ConfirmationNumber(number);
            var booking = new Booking(_cargo, _vessel, confirmationNumber);

            _bookingRepository.Received().Add(booking);
        }
        public void BookACargoOnAVesselWithEnoughCapacity()
        {
            _integerSequenceGenerator.GetNext().Returns(1);
            var confirmationNumber = new ConfirmationNumber(_integerSequenceGenerator.GetNext());

            _cargoBookings.BookCargo(_smallCargo, _vesselA);

            _bookingRepository.Received().Add(new Booking(_smallCargo, _vesselA, confirmationNumber));
        }
        public void BookACargo()
        {
            var cargo = new Cargo.Cargo(new CubicFeet(400));
            var vessel = new Vessel.Vessel(new CubicFeet(200));
            var confirmationNumber = new ConfirmationNumber(1);
            var booking = new Booking(cargo, vessel, confirmationNumber);

            _cargoRepository.Add(booking);

            Assert.That(_cargoRepository.Count(), Is.EqualTo(1));
            Assert.That(_cargoRepository.FindByConfirmationNumber(confirmationNumber), Is.EqualTo(booking));
        }
 public Booking FindByConfirmationNumber(ConfirmationNumber confirmationNumber)
 {
     return _bookings.SingleOrDefault(a => a.ConfirmationNumber().Equals(confirmationNumber));
 }