public async Task DoesntStoreArtworkIfAlreadyInLocalCache() { var blobCache = Substitute.For <IBlobCache>(); var artworkCache = new ArtworkCache(blobCache); var data = new byte[] { 0, 1 }; string key = BlobCacheKeys.GetKeyForArtwork(data); await artworkCache.Store(key, data); blobCache.GetCreatedAt(Arg.Any <string>()).Returns(Observable.Return(new DateTimeOffset?(DateTimeOffset.MaxValue))); await artworkCache.Store(key, data); blobCache.Received(1).Insert(Arg.Any <string>(), Arg.Any <byte[]>()); }
public async Task NullDataThrowsArgumentNullException() { var blobCache = new InMemoryBlobCache(); var artworkCache = new ArtworkCache(blobCache); await Helpers.ThrowsAsync <ArgumentNullException>(() => artworkCache.Store("yaddakey", null)); }
public void CanStoreMulipleArtworksIfArtworksExistsInCache() { var blobCache = new InMemoryBlobCache(); var data = new byte[] { 0, 1 }; string key = BlobCacheKeys.GetKeyForArtwork(data); blobCache.Insert(key, data); var fixture = new ArtworkCache(blobCache); Task firstTask = fixture.Store(key, data); Task secondTask = fixture.Store(key, data); Task thrirdTask = fixture.Store(key, data); Assert.True(firstTask.IsCompleted); Assert.True(secondTask.IsCompleted); Assert.True(thrirdTask.IsCompleted); }
public async Task StoresArtworkInBlobCache() { var blobCache = new InMemoryBlobCache(); var artworkCache = new ArtworkCache(blobCache); var data = new byte[] { 0, 1 }; string key = BlobCacheKeys.GetKeyForArtwork(data); await artworkCache.Store(key, data); Assert.Equal(data, await blobCache.Get(key)); }
public void SameKeysWaitOnFirstToFinish() { var signal = new AsyncSubject <Unit>(); var blobCache = Substitute.For <IBlobCache>(); blobCache.Insert(Arg.Any <string>(), Arg.Any <byte[]>(), Arg.Any <DateTimeOffset?>()).Returns(signal); var fixture = new ArtworkCache(blobCache); var data = new byte[] { 0, 1 }; string key = BlobCacheKeys.GetKeyForArtwork(data); Task firstTask = fixture.Store(key, data); Task secondTask = fixture.Store(key, data); Assert.False(firstTask.IsCompleted); Assert.False(secondTask.IsCompleted); signal.OnNext(Unit.Default); signal.OnCompleted(); Assert.True(firstTask.IsCompleted); Assert.True(secondTask.IsCompleted); }
public void CanStoreMulipleArtworksIfArtworksExistsInCache() { var blobCache = new InMemoryBlobCache(); var data = new byte[] { 0, 1 }; string key = BlobCacheKeys.GetKeyForArtwork(data); blobCache.Insert(key, data); var fixture = new ArtworkCache(blobCache); Task firstTask = fixture.Store(key, data); Task secondTask = fixture.Store(key, data); Task thrirdTask = fixture.Store(key, data); Assert.True(firstTask.IsCompleted); Assert.True(secondTask.IsCompleted); Assert.True(thrirdTask.IsCompleted); }
public async Task StoresArtworkInBlobCache() { var blobCache = new InMemoryBlobCache(); var artworkCache = new ArtworkCache(blobCache); var data = new byte[] { 0, 1 }; string key = BlobCacheKeys.GetKeyForArtwork(data); await artworkCache.Store(key, data); Assert.Equal(data, await blobCache.Get(key)); }
public void SameKeysWaitOnFirstToFinish() { var signal = new AsyncSubject<Unit>(); var blobCache = Substitute.For<IBlobCache>(); blobCache.Insert(Arg.Any<string>(), Arg.Any<byte[]>(), Arg.Any<DateTimeOffset?>()).Returns(signal); var fixture = new ArtworkCache(blobCache); var data = new byte[] { 0, 1 }; string key = BlobCacheKeys.GetKeyForArtwork(data); Task firstTask = fixture.Store(key, data); Task secondTask = fixture.Store(key, data); Assert.False(firstTask.IsCompleted); Assert.False(secondTask.IsCompleted); signal.OnNext(Unit.Default); signal.OnCompleted(); Assert.True(firstTask.IsCompleted); Assert.True(secondTask.IsCompleted); }
public async Task NullDataThrowsArgumentNullException() { var blobCache = new InMemoryBlobCache(); var artworkCache = new ArtworkCache(blobCache); await Helpers.ThrowsAsync<ArgumentNullException>(() => artworkCache.Store("yaddakey", null)); }
public async Task DoesntStoreArtworkIfAlreadyInLocalCache() { var blobCache = Substitute.For<IBlobCache>(); var artworkCache = new ArtworkCache(blobCache); var data = new byte[] { 0, 1 }; string key = BlobCacheKeys.GetKeyForArtwork(data); await artworkCache.Store(key, data); blobCache.GetCreatedAt(Arg.Any<string>()).Returns(Observable.Return(new DateTimeOffset?(DateTimeOffset.MaxValue))); await artworkCache.Store(key, data); blobCache.Received(1).Insert(Arg.Any<string>(), Arg.Any<byte[]>()); }
public async Task StoresArtworkInBlobCache() { var blobCache = new TestBlobCache(); var artworkCache = new ArtworkCache(blobCache); var data = new byte[] { 0, 1 }; string key = await artworkCache.Store(data); Assert.Equal(data, await blobCache.GetAsync(key)); }