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); }
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); }
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); }
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); }
private static bool SameFamily(ISeat s, UnreservedSeatForDinerQuery query) { return(s.Diner.LastName.Equals(query.DinerLastName, StringComparison.OrdinalIgnoreCase)); }