コード例 #1
0
        public void GetBooking_ShouldThrowNotFoundException()
        {
            var query = new GetBookingQuery {
                Id = 99
            };

            FluentActions.Invoking(() =>
                                   SendAsync(query)).Should().Throw <NotFoundException>();
        }
コード例 #2
0
        public async Task Handle_WithNoBookings_Throws()
        {
            //arrange
            var query = new GetBookingQuery {
                Id = 0
            };

            //act + assert
            _ = await Assert
                .ThrowsAsync <BookingNotFoundException>(() => _handler.Handle(query, default))
                .ConfigureAwait(false);
        }
コード例 #3
0
        public async Task GetBookingOrderAndDetails()
        {
            //Arrange
            var sut = new GetBookingQueryHandler(_repo);

            //Act
            GetBookingQuery req = new GetBookingQuery();

            req.BookingId = "1e4199f0-907f-4acc-b886-b12b0323c108";
            var result = await sut.Handle(req, CancellationToken.None);

            //Assert

            //Main booking
            result.ShouldBeOfType <BookingOrder>();
            result.BookingOrderId.ShouldBe("1e4199f0-907f-4acc-b886-b12b0323c108");
            result.Origin.ShouldBe("NY");
            result.Destination.ShouldBe("Melbourne");

            //booking Details
            result.BookingDetails.Count.ShouldBe(2);

            List <BookingOrderDetail> bookingDetails = new List <BookingOrderDetail>();

            bookingDetails.Add(new BookingOrderDetail {
                PackageType = "Express", PackageDescription = "Toys", Price = 10
            });
            bookingDetails.Add(new BookingOrderDetail {
                PackageType = "Standard", PackageDescription = "Books", Price = 50
            });

            var bookingDetailsFromDB = result.BookingDetails.ToList();

            bookingDetailsFromDB[0].Price.ShouldBe(bookingDetails[0].Price);
            bookingDetailsFromDB[1].Price.ShouldBe(bookingDetails[1].Price);

            bookingDetailsFromDB[0].PackageDescription.ShouldBe(bookingDetails[0].PackageDescription);
            bookingDetailsFromDB[1].PackageDescription.ShouldBe(bookingDetails[1].PackageDescription);

            bookingDetailsFromDB[0].PackageType.ShouldBe(bookingDetails[0].PackageType);
            bookingDetailsFromDB[1].PackageType.ShouldBe(bookingDetails[1].PackageType);
        }
コード例 #4
0
        public async Task Handle_WithValidGetBookingQuery_ReturnsBooking()
        {
            //arrange
            var expected = new Booking
            {
                BookingDate   = DateTime.Now,
                ContactNumber = "0123456789",
                EmailAddress  = "*****@*****.**",
                Flexibility   = Flexibility.PlusMinusOneDay,
                Name          = "Name",
                VehicleSize   = VehicleSize.Large,
                Approved      = false
            };

            Context.Add(expected);
            _ = await Context
                .SaveChangesAsync()
                .ConfigureAwait(false);

            var query = new GetBookingQuery {
                Id = 1
            };

            //act
            var actual = await _handler
                         .Handle(query, default)
                         .ConfigureAwait(false);

            //assert
            Assert.Equal(expected.BookingDate, actual.BookingDate);
            Assert.Equal(expected.ContactNumber, actual.ContactNumber);
            Assert.Equal(expected.EmailAddress, actual.EmailAddress);
            Assert.Equal(expected.Flexibility, actual.Flexibility);
            Assert.Equal(expected.Name, actual.Name);
            Assert.Equal(expected.VehicleSize, actual.VehicleSize);
            Assert.Equal(expected.Approved, actual.Approved);
        }