public void CanAddBooking()
        {
            Guid bookingId;

            var makeBookingRequest = new MakeBookingRequest()
            {
                StartDate = new DateTime(2015, 01, 12),
                EndDate = new DateTime(2015, 01, 16),
                VehicleId = Guid.NewGuid(),
                CustomerId = Guid.NewGuid(),
                UserId = Guid.NewGuid()
            };

            using (_contextProvider)
            {
                var booking = Booking.Make(makeBookingRequest);
                _bookingRepository.Save(booking);
                bookingId = booking.Id.Value;
                _contextProvider.SaveChanges();
            }

            using (_contextProvider)
            {
                var allBookings = _bookingRepository.GetAll();
                var storedBooking = _bookingRepository.GetById(bookingId);
                Assert.AreEqual(1, allBookings.Count);
                Assert.IsNotNull(storedBooking.Id);
                Assert.IsNotNull(storedBooking.BookingNumber);
                Assert.AreEqual(makeBookingRequest.EndDate, storedBooking.EndDate);
                Assert.AreEqual(makeBookingRequest.EndDate, storedBooking.EndDate);
                Assert.AreEqual(makeBookingRequest.CustomerId.Value, storedBooking.CustomerId);
                Assert.AreEqual(makeBookingRequest.UserId.Value, storedBooking.CreatedById);
            }
        }
        public void ValidRequestPasses()
        {
            var request = new MakeBookingRequest();
            request.CustomerId = Guid.NewGuid();
            request.StartDate = new DateTime(2050, 10, 1);
            request.EndDate = new DateTime(2050, 10, 3);
            request.VehicleId = Guid.NewGuid();

            var validationMessages = Booking.ValidateMake(request);

            Assert.AreEqual(0, validationMessages.Count);
        }
        public void InvalidRequestFails()
        {
            var request = new MakeBookingRequest();
            request.CustomerId = Guid.NewGuid();
            request.StartDate = new DateTime(2050, 10, 1);
            request.EndDate = new DateTime(2050, 10, 3);
            request.VehicleId = Guid.NewGuid();

            var validationMessages = Booking.ValidateMake(request);

            Assert.AreEqual(1, validationMessages.Count);
            Assert.IsTrue(validationMessages.Any(x => x.Text.Equals("Booking conflicts with existing bookings.")));
        }
        public void CanMakeBooking()
        {
            var request = new MakeBookingRequest();
            request.CustomerId = Guid.NewGuid();
            request.StartDate = new DateTime(2050, 10, 1);
            request.EndDate = new DateTime(2050, 10, 3);
            request.VehicleId = Guid.NewGuid();

            var booking = Booking.Make(request);

            Assert.IsNotNull(booking.Id);
            Assert.AreNotEqual(default(Guid), booking.Id.Value);
            Assert.IsNotNull(booking.BookingNumber);
            Assert.AreEqual(request.StartDate, booking.StartDate);
            Assert.AreEqual(request.EndDate, booking.EndDate);
            Assert.AreSame(request.CustomerId.Value, booking.CustomerId);
            Assert.AreSame(request.VehicleId.Value, booking.VehicleId);
            Assert.AreEqual(300m, booking.Total);
        }