public async Task FailedRequestThrowsException() { var fetcher = Substitute.For<IArtworkFetcher>(); fetcher.RetrieveAsync(Arg.Any<string>(), Arg.Any<string>()).Returns(Observable.Throw<Uri>(new ArtworkFetchException(String.Empty, null)).ToTask()); var blobCache = new InMemoryBlobCache(); var fixture = new ArtworkCache(blobCache, fetcher); await Helpers.ThrowsAsync<ArtworkCacheException>(() => fixture.FetchOnline("A", "B")); }
public async Task FailedRequestThrowsException() { var fetcher = Substitute.For <IArtworkFetcher>(); fetcher.RetrieveAsync(Arg.Any <string>(), Arg.Any <string>()).Returns(Observable.Throw <Uri>(new ArtworkFetchException(String.Empty, null)).ToTask()); var blobCache = new InMemoryBlobCache(); var fixture = new ArtworkCache(blobCache, fetcher); await Helpers.ThrowsAsync <ArtworkCacheException>(() => fixture.FetchOnline("A", "B")); }
public async Task NotFoundRequestReturnsNull() { var fetcher = Substitute.For<IArtworkFetcher>(); fetcher.RetrieveAsync(Arg.Any<string>(), Arg.Any<string>()).Returns(Task.FromResult<Uri>(null)); var blobCache = new InMemoryBlobCache(); var fixture = new ArtworkCache(blobCache, fetcher); string returned = await fixture.FetchOnline("A", "B"); Assert.Null(returned); }
public async Task NotFoundRequestReturnsNull() { var fetcher = Substitute.For <IArtworkFetcher>(); fetcher.RetrieveAsync(Arg.Any <string>(), Arg.Any <string>()).Returns(Task.FromResult <Uri>(null)); var blobCache = new InMemoryBlobCache(); var fixture = new ArtworkCache(blobCache, fetcher); string returned = await fixture.FetchOnline("A", "B"); Assert.Null(returned); }
public async Task NotFoundRequestIsMarked() { var fetcher = Substitute.For<IArtworkFetcher>(); fetcher.RetrieveAsync(Arg.Any<string>(), Arg.Any<string>()).Returns(Task.FromResult<Uri>(null)); var blobCache = new InMemoryBlobCache(); var fixture = new ArtworkCache(blobCache, fetcher); string artist = "A"; string album = "B"; string lookupKey = BlobCacheKeys.GetKeyForOnlineArtwork(artist, album); await fixture.FetchOnline(artist, album); Assert.Equal("FAILED", await blobCache.GetObject<string>(lookupKey)); }
public async Task PullsSearchesFromCache() { string artist = "A"; string album = "B"; string key = BlobCacheKeys.GetKeyForOnlineArtwork(artist, album); var fetcher = Substitute.For<IArtworkFetcher>(); var blobCache = new InMemoryBlobCache(); await blobCache.InsertObject(key, "TestArtworkKey"); var fixture = new ArtworkCache(blobCache, fetcher); string returned = await fixture.FetchOnline(artist, album); Assert.Equal("TestArtworkKey", returned); fetcher.DidNotReceiveWithAnyArgs().RetrieveAsync(null, null); }
public async Task NotFoundRequestIsMarked() { var fetcher = Substitute.For <IArtworkFetcher>(); fetcher.RetrieveAsync(Arg.Any <string>(), Arg.Any <string>()).Returns(Task.FromResult <Uri>(null)); var blobCache = new InMemoryBlobCache(); var fixture = new ArtworkCache(blobCache, fetcher); string artist = "A"; string album = "B"; string lookupKey = BlobCacheKeys.GetKeyForOnlineArtwork(artist, album); await fixture.FetchOnline(artist, album); Assert.Equal("FAILED", await blobCache.GetObject <string>(lookupKey)); }
public async Task PullsSearchesFromCache() { string artist = "A"; string album = "B"; string key = BlobCacheKeys.GetKeyForOnlineArtwork(artist, album); var fetcher = Substitute.For <IArtworkFetcher>(); var blobCache = new InMemoryBlobCache(); await blobCache.InsertObject(key, "TestArtworkKey"); var fixture = new ArtworkCache(blobCache, fetcher); string returned = await fixture.FetchOnline(artist, album); Assert.Equal("TestArtworkKey", returned); fetcher.DidNotReceiveWithAnyArgs().RetrieveAsync(null, null); }