Пример #1
0
        private async Task <Point> CoordinateForPostcode(string postcode)
        {
            var sanitizedPostcode = Location.SanitizePostcode(postcode);

            var coordinate = await GeocodePostcodeWithLocalLookup(sanitizedPostcode);

            if (coordinate != null)
            {
                return(coordinate);
            }

            coordinate = await _geocodeClient.GeocodePostcodeAsync(sanitizedPostcode);

            if (coordinate != null)
            {
                await CacheLocation(postcode, coordinate);
            }

            return(coordinate);
        }
Пример #2
0
        public async void SyncAsync_FallbackToGeocodeClient_PopulatesTeachingEventBuildingCoordinatesAndCachesLocation()
        {
            await SeedMockTeachingEventBuildingsAsync();

            SeedMockLocations();
            _mockCrm.Setup(m => m.GetTeachingEvents(It.Is <DateTime>(d => CheckGetTeachingEventsAfterDate(d)))).Returns(MockTeachingEvents);
            var postcode          = "TE7 9IN";
            var coordinate        = new Point(1, 2);
            var sanitizedPostcode = Location.SanitizePostcode(postcode);

            _mockGeocodeClient.Setup(m => m.GeocodePostcodeAsync(sanitizedPostcode))
            .ReturnsAsync(coordinate);
            DbContext.Locations.FirstOrDefault(l => l.Postcode == sanitizedPostcode).Should().BeNull();

            await _store.SyncAsync();

            var teachingEvent = DbContext.TeachingEvents.Include(te => te.Building)
                                .First(te => te.Building.AddressPostcode == postcode);

            teachingEvent.Building.Coordinate.Should().Be(coordinate);
            DbContext.Locations.FirstOrDefault(l => (l.Postcode == sanitizedPostcode) &&
                                               (l.Source == Location.SourceType.Google)).Should().NotBeNull();
        }