public async Task And_DeliveryAreas_Not_Cached_Then_Gets_From_Api_And_Stores_In_Cache(
            List <GetDeliveryAreaListItem> areasFromApi,
            [Frozen] Mock <IAssessorsApiClient <AssessorsApiConfiguration> > mockAssessorsApiClient,
            [Frozen] Mock <ICacheStorageService> mockCacheService,
            CachedDeliveryAreasService service)
        {
            var expectedExpirationInHours = 1;

            mockAssessorsApiClient
            .Setup(client => client.GetAll <GetDeliveryAreaListItem>(
                       It.IsAny <GetDeliveryAreasRequest>()))
            .ReturnsAsync(areasFromApi);
            mockCacheService
            .Setup(service => service.RetrieveFromCache <IReadOnlyList <GetDeliveryAreaListItem> >(nameof(GetDeliveryAreasRequest)))
            .ReturnsAsync((IReadOnlyList <GetDeliveryAreaListItem>)null);

            var result = await service.GetDeliveryAreas();

            result.Should().BeEquivalentTo(areasFromApi);
            mockCacheService.Verify(service =>
                                    service.SaveToCache <IReadOnlyList <GetDeliveryAreaListItem> >(
                                        nameof(GetDeliveryAreasRequest),
                                        areasFromApi,
                                        expectedExpirationInHours));
        }
        public async Task And_DeliveryAreas_Cached_Then_Gets_DeliveryAreas_From_Cache(
            List <GetDeliveryAreaListItem> areasFromCache,
            [Frozen] Mock <ICacheStorageService> mockCacheService,
            CachedDeliveryAreasService service)
        {
            mockCacheService
            .Setup(service => service.RetrieveFromCache <IReadOnlyList <GetDeliveryAreaListItem> >(nameof(GetDeliveryAreasRequest)))
            .ReturnsAsync(areasFromCache);

            var result = await service.GetDeliveryAreas();

            result.Should().BeEquivalentTo(areasFromCache);
        }