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); }
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); }