Exemple #1
0
            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[]>());
            }
Exemple #2
0
            public async Task NullDataThrowsArgumentNullException()
            {
                var blobCache    = new InMemoryBlobCache();
                var artworkCache = new ArtworkCache(blobCache);

                await Helpers.ThrowsAsync <ArgumentNullException>(() => artworkCache.Store("yaddakey", null));
            }
Exemple #3
0
            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);
            }
Exemple #4
0
            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));
            }
Exemple #5
0
            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[]>());
            }
Exemple #11
0
            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));
            }