Пример #1
0
        public void LookForSeatForDiner()
        {
            ISeatSearcher search = new ConfigurableSeatSearcher(new AllRestaurantRepository(), new[] { new EmptySeatsFilter() },
                                                                new[] { new SameFamilyScoreCalculator() }, new[] { new PreferTablesWithGuestsSorter() });
            var query = new UnreservedSeatForDinerQuery("Dwayne", "Johnson");

            var seats = search.FindSeats(query);

            ValidateMultipleRestaurants(seats);
        }
Пример #2
0
        public void LookForSeatInRestaurant()
        {
            ISeatSearcher search = new ConfigurableSeatSearcher(new SpecificRestaurantRepository(), new[] { new EmptySeatsFilter() },
                                                                new[] { new SameFamilyScoreCalculator() }, new[] { new PreferTablesWithGuestsSorter() });
            var query = new UnreservedSeatInRestaurantQuery("De Peirdestal");

            var seats = search.FindSeats(query);

            ValidatePeirdestal(seats);
        }
Пример #3
0
        public void CheckForReservationForDinerWithoutReservation()
        {
            ISeatSearcher search = new ConfigurableSeatSearcher(new AllRestaurantRepository(), new[] { new EmptySeatsFilter() },
                                                                new[] { new SameFamilyScoreCalculator() }, new[] { new PreferTablesWithGuestsSorter() });
            var           query = new UnreservedSeatForDinerQuery("Dwayne", "Johnson");
            ISeatSearcher reservationChecker = new ReservationCheckerDecorator(search, new ReservationRepository());

            var seats = reservationChecker.FindSeats(query);

            ValidateMultipleRestaurants(seats);
        }
Пример #4
0
        public void CheckForReservationForDinerWithReservation()
        {
            ISeatSearcher search = new ConfigurableSeatSearcher(new AllRestaurantRepository(), new[] { new EmptySeatsFilter() },
                                                                new[] { new SameFamilyScoreCalculator() }, new[] { new PreferTablesWithGuestsSorter() });
            ISeatSearcher reservationChecker = new ReservationCheckerDecorator(search, new ReservationRepository());
            var           firstName          = "John";
            var           lastName           = "Boyega";
            var           query = new UnreservedSeatForDinerQuery(firstName, lastName);

            var seats = reservationChecker.FindSeats(query);

            seats.Should().HaveCount(1);
            var seat = seats.First();

            seat.Restaurant.Should().Be("De Peirdestal");
            seat.SectionId.Should().Be(0);
            seat.TableId.Should().Be(2);
        }
Пример #5
0
        public void RouteQueryToCorrectSearcher()
        {
            ISeatSearcher searchAcrossRestaurants = new ConfigurableSeatSearcher(new SpecificRestaurantRepository(), new[] { new EmptySeatsFilter() },
                                                                                 new[] { new SameFamilyScoreCalculator() }, new[] { new PreferTablesWithGuestsSorter() });
            ISeatSearcher searchSpecificRestaurant = new ConfigurableSeatSearcher(new AllRestaurantRepository(), new[] { new EmptySeatsFilter() },
                                                                                  new[] { new SameFamilyScoreCalculator() }, new[] { new PreferTablesWithGuestsSorter() });
            var mediator = new SearchMediator();

            mediator.Register <UnreservedSeatInRestaurantQuery>(searchAcrossRestaurants);
            mediator.Register <UnreservedSeatForDinerQuery>(searchSpecificRestaurant);

            var searcher = (ISeatSearcher)mediator;

            var unreservedSeatForDinerQuery = new UnreservedSeatForDinerQuery("Dwayne", "Johnson");
            var seats = searcher.FindSeats(unreservedSeatForDinerQuery);

            ValidateMultipleRestaurants(seats);

            var query = new UnreservedSeatInRestaurantQuery("De Peirdestal");

            seats = searcher.FindSeats(query);

            ValidatePeirdestal(seats);
        }