Exemplo n.º 1
0
        public async Task Set_GivenEmptyStoreAndExpiryIs1Second_WhenFetchingAfter1Second_ThenItemsSetCannotBeRetrieved()
        {
            // arrange
            var load = TestType1Entities.Take(5).ToArray();

            // act
            await _cacheType1WithExpiry.Set(load);

            // assert
            var immediateItems = (await _cacheType1WithExpiry.GetAll()).ToArray();

            await Task.Delay(1500);

            var delayedItems = (await _cacheType1WithExpiry.GetAll()).ToArray();

            Assert.That(immediateItems.Select(v => v.Name), Is.EquivalentTo(load.Select(v => v.Name)));
            Assert.That(delayedItems, Is.Empty);
        }
Exemplo n.º 2
0
        public async Task AddOrUpdate_WhenTheSameKeyIsAddedTwice_ThenItIsAddedThenUpdated()
        {
            // arrange
            var firstEntity = new TestType1Entity {
                Name = "test_original", Id = "1"
            };
            var secondEntity = new TestType1Entity {
                Name = "test_changed", Id = "1"
            };

            // act
            await _cacheType1.AddOrUpdate(firstEntity);

            await _cacheType1.AddOrUpdate(secondEntity);

            var retrievedAllEntities = (await _cacheType1.GetAll()).ToArray();
            var retrievedEntity      = await _cacheType1.Get(firstEntity.Id);

            // assert
            Assert.That(retrievedEntity.Name, Is.EqualTo(secondEntity.Name)); // name updated properly
            Assert.That(retrievedAllEntities, Has.Length.EqualTo(1));         // no duplicate
        }
Exemplo n.º 3
0
        public async Task GetAll_WhenAnEntityOfDifferentTypeAreAdded_ThenAllCanBeRetrieved()
        {
            // arrange
            var firstEntityType1 = new TestType1Entity {
                Name = "test1_1", Id = "1"
            };
            var secondEntityType1 = new TestType1Entity {
                Name = "test1_2", Id = "2"
            };
            var firstEntityType2 = new TestType2Entity {
                Name = "test2_1", Id = "1"
            };
            var secondEntityType2 = new TestType2Entity {
                Name = "test2_2", Id = "2"
            };


            await _cacheType1.AddOrUpdate(firstEntityType1);

            await _cacheType1.AddOrUpdate(secondEntityType1);

            await _cacheType2.AddOrUpdate(firstEntityType2);

            await _cacheType2.AddOrUpdate(secondEntityType2);


            // act
            var retrievedAllType1Entities = (await _cacheType1.GetAll()).ToArray();
            var retrievedAllType2Entities = (await _cacheType2.GetAll()).ToArray();

            // assert
            Assert.That(retrievedAllType1Entities, Has.Length.EqualTo(2));
            Assert.That(retrievedAllType2Entities, Has.Length.EqualTo(2));
            Assert.That(retrievedAllType1Entities.Select(item => item.Name),
                        Contains.Item(firstEntityType1.Name).And.Contains(secondEntityType1.Name));
            Assert.That(retrievedAllType2Entities.Select(item => item.Name),
                        Contains.Item(firstEntityType2.Name).And.Contains(secondEntityType2.Name));
        }