public When_ProviderVenueService_Is_Called_To_Get_Venue_With_Trimmed_Postcode() { var config = new MapperConfiguration(c => c.AddMaps(typeof(ProviderVenueMapper).Assembly)); var mapper = new Mapper(config); var mockProviderVenueDbSet = new List <Domain.Models.ProviderVenue> { new Domain.Models.ProviderVenue { Id = ProviderVenueId, ProviderId = ProviderId, Name = Name, Postcode = Postcode, IsRemoved = IsRemoved, IsEnabledForReferral = IsEnabledForReferral, Source = DataSource } } .AsQueryable() .BuildMockDbSet(); _providerVenueRepository = Substitute.For <IProviderVenueRepository>(); _providerVenueRepository.GetManyAsync(Arg.Any <Expression <Func <Domain.Models.ProviderVenue, bool> > >()) .Returns(mockProviderVenueDbSet); var googleMapApiClient = Substitute.For <IGoogleMapApiClient>(); var locationService = Substitute.For <ILocationApiClient>(); var providerVenueService = new ProviderVenueService(mapper, _providerVenueRepository, locationService, googleMapApiClient); _result = providerVenueService.GetVenueWithTrimmedPostcodeAsync(ProviderId, Postcode).GetAwaiter().GetResult(); }
public async Task <ProviderVenueDetailViewModel> GetVenueWithTrimmedPostcodeAsync(int providerId, string postcode) { //Query split because it uses client-side evaluation var venues = await _providerVenueRepository.GetManyAsync(pv => pv.ProviderId == providerId) .AsNoTracking() .ToListAsync(); var venue = venues .SingleOrDefault(pv => string.Compare(pv.Postcode.ToLetterOrDigit(), postcode.ToLetterOrDigit(), StringComparison.OrdinalIgnoreCase) == 0); var dto = venue == null ? null : _mapper.Map <ProviderVenue, ProviderVenueDetailViewModel>(venue); return(dto); }