public When_ProviderProximity_Controller_FindAllProviders_Is_Called_With_Unformatted_Postcode()
        {
            const string requestPostcode = "cV12 Wt";
            var          httpClient      = new TestPostcodesIoHttpClient().Get(requestPostcode);

            var routes = new List <SelectListItem>
            {
                new SelectListItem {
                    Text = "1", Value = "Route 1"
                },
                new SelectListItem {
                    Text = "2", Value = "Route 2"
                }
            };

            var routeDictionary = new Dictionary <int, string>
            {
                { 1, "Route 1" },
                { 2, "Route 2" }
            };

            var locationService = new LocationService(
                new LocationApiClient(httpClient, new MatchingConfiguration
            {
                PostcodeRetrieverBaseUrl = "https://api.postcodes.io"
            }));

            var searchProvider   = Substitute.For <ISearchProvider>();
            var datetimeProvider = Substitute.For <IDateTimeProvider>();
            var fileWriter       = Substitute.For <IFileWriter <ProviderProximityReportDto> >();

            var routePathService = Substitute.For <IRoutePathService>();

            routePathService.GetRouteSelectListItemsAsync().Returns(routes);
            routePathService.GetRouteDictionaryAsync().Returns(routeDictionary);

            var providerProximityService = new ProviderProximityService(searchProvider, locationService, routePathService, fileWriter, datetimeProvider);

            var providerProximityController = new ProviderProximityController(routePathService, providerProximityService, locationService);

            const string postcode = requestPostcode;

            var viewModel = new ProviderProximitySearchParamViewModel
            {
                Postcode = postcode
            };

            _result = providerProximityController.FindAllProviders(viewModel).GetAwaiter().GetResult();
        }
        public When_ProviderProximity_Controller_FindAllProviders_Is_Called()
        {
            const string postcode = "cv1 2wt";

            var locationService = Substitute.For <ILocationService>();

            locationService.IsValidPostcodeAsync(postcode).Returns((true, postcode.ToUpper()));

            var routePathService = Substitute.For <IRoutePathService>();

            var providerProximityService = Substitute.For <IProviderProximityService>();

            var providerProximityController = new ProviderProximityController(routePathService, providerProximityService, locationService);

            var viewModel = new ProviderProximitySearchParamViewModel
            {
                Postcode = postcode
            };

            _result = providerProximityController.FindAllProviders(viewModel).GetAwaiter().GetResult();
        }
        public When_ProviderProximity_Controller_FindAllProviders_Is_Called_For_Invalid_Postcode()
        {
            var locationService = Substitute.For <ILocationService>();

            locationService.IsValidPostcodeAsync(Arg.Any <string>()).Returns((false, null));

            var routePathService = Substitute.For <IRoutePathService>();

            var providerProximityService = Substitute.For <IProviderProximityService>();

            var providerProximityController = new ProviderProximityController(routePathService, providerProximityService, locationService);

            const string postcode = "XYZ A12";

            var viewModel = new ProviderProximitySearchParamViewModel
            {
                Postcode = postcode
            };

            _result = providerProximityController.FindAllProviders(viewModel).GetAwaiter().GetResult();
        }