예제 #1
0
        public virtual async Task CanInsertAndDeleteItem()
        {
            await InitializeAsync().ConfigureAwait(false);

            var id   = Guid.NewGuid().ToString();
            var obj1 = FakeEntity.Create(id);

            var store = CreateInstance();


            await store.InsertItemAsync(obj1).ConfigureAwait(false);

            obj1.StringValue = "changed string";
            await store.UpdateItemAsync(obj1).ConfigureAwait(false);

            var obj2 = await store.LoadItemAsync <FakeEntity>(obj1.EntityId).ConfigureAwait(false);

            CompareEntitities(obj1, obj2);

            await store.DeleteItemAsync <FakeEntity>(obj1.EntityId).ConfigureAwait(false);

            var obj3 = await store.LoadItemAsync <FakeEntity>(obj1.EntityId).ConfigureAwait(false);

            obj3.Should().BeNull();
        }
예제 #2
0
        public virtual async Task CanInsertManyItems()
        {
            await InitializeAsync().ConfigureAwait(false);

            var list = new List <FakeEntity>();

            for (var i = 0; i < 1000; i++)
            {
                list.Add(FakeEntity.Create(Guid.NewGuid().ToString()));
            }


            var store = CreateInstance();

            foreach (var entity in list)
            {
                await store.InsertItemAsync(entity).ConfigureAwait(false);
            }

            var all = await store.LoadItemsAsync <FakeEntity>().ConfigureAwait(false);

            var allKeys = all.Select(x => x.EntityId).ToArray();

            foreach (var entity in list)
            {
                allKeys.Should().Contain(entity.EntityId);
            }
        }
        public async Task UpdateNonExistingWillInsert()
        {
            var id   = Guid.NewGuid().ToString();
            var obj1 = FakeEntity.Create(id);

            var store = CreateInstance();
            await store.UpdateItemAsync(obj1);

            var obj2 = await store.LoadItemAsync <FakeEntity>(obj1.EntityId);

            CompareEntitities(obj1, obj2);
        }
예제 #4
0
        public async Task Test1()
        {
            var provider = GetService <MongoDbConnectionProvider>();
            await provider.InitializeAsync(CancellationToken.None);

            var mog = GetService <MongoDbEntityStore>();
            var ent = FakeEntity.Create(Guid.NewGuid().ToString());

            await mog.InsertOrUpdateItemAsync(ent);

            await mog.InsertOrUpdateItemAsync(ent);
        }
예제 #5
0
        public virtual async Task UpdateNonExistingWillInsert()
        {
            await InitializeAsync().ConfigureAwait(false);

            var id   = Guid.NewGuid().ToString();
            var obj1 = FakeEntity.Create(id);

            var store = CreateInstance();
            await store.UpdateItemAsync(obj1).ConfigureAwait(false);

            var obj2 = await store.LoadItemAsync <FakeEntity>(obj1.EntityId).ConfigureAwait(false);

            CompareEntitities(obj1, obj2);
        }
예제 #6
0
        public virtual async Task SaveAndLoadItemPropertiesEquals()
        {
            await InitializeAsync().ConfigureAwait(false);

            var id   = Guid.NewGuid().ToString();
            var obj1 = FakeEntity.Create(id);

            var store = CreateInstance();

            await store.InsertItemAsync(obj1).ConfigureAwait(false);

            var entityId = id.CalculateEntityId <FakeEntity>();
            var obj2     = await store.LoadItemAsync <FakeEntity>(entityId).ConfigureAwait(false);

            CompareEntitities(obj1, obj2);
        }
예제 #7
0
        public virtual async Task SaveAndLoadItemsContainsAll()
        {
            await InitializeAsync().ConfigureAwait(false);

            var obj1 = FakeEntity.Create(Guid.NewGuid().ToString());
            var obj2 = FakeEntity.Create(Guid.NewGuid().ToString());

            var store = CreateInstance();
            await store.InsertItemAsync(obj1).ConfigureAwait(false);

            await store.InsertItemAsync(obj2).ConfigureAwait(false);

            var all = await store.LoadItemsAsync <FakeEntity>().ConfigureAwait(false);

            var allKeys = all.Select(x => x.EntityId).ToArray();

            allKeys.Should().Contain(obj1.EntityId);
            allKeys.Should().Contain(obj2.EntityId);
        }
예제 #8
0
        public virtual async Task CanHandleDictionaries()
        {
            await InitializeAsync().ConfigureAwait(false);

            var store = CreateInstance();

            string entityId;

            {
                var id     = Guid.NewGuid().ToString();
                var entity = FakeEntity.Create(id);
                entityId = entity.EntityId;
                entityId.Should().NotBeNullOrEmpty();

                var aaa = DateTime.UtcNow.Ticks.ToString();
                entity.Dict1 = entity.Dict1.EnsureDictContainsValue("aaa", aaa);

                var bbb = DateTime.UtcNow.Ticks.ToString();
                entity.Dict1 = entity.Dict1.EnsureDictContainsValue("bbb", bbb);

                await store.InsertItemAsync(entity).ConfigureAwait(false);

                entity.Dict1.Should().ContainKey("aaa");
                entity.Dict1["aaa"].Should().Be(aaa);

                entity.Dict1.Should().ContainKey("bbb");
                entity.Dict1["bbb"].Should().Be(bbb);
            }

            {
                var entity = await store.LoadItemAsync <FakeEntity>(entityId).ConfigureAwait(false);

                var ccc = DateTime.UtcNow.Ticks.ToString();
                entity.Dict1 = entity.Dict1.EnsureDictContainsValue("ccc", ccc);
                await store.UpdateItemAsync(entity).ConfigureAwait(false);

                entity.Dict1.Should().ContainKey("ccc");
                entity.Dict1["ccc"].Should().Be(ccc);

                entity = await store.LoadItemAsync <FakeEntity>(entityId).ConfigureAwait(false);

                entity.Dict1.Should().ContainKey("ccc");
                entity.Dict1["ccc"].Should().Be(ccc);
            }

            {
                var entity = await store.LoadItemAsync <FakeEntity>(entityId).ConfigureAwait(false);

                var bbb = DateTime.UtcNow.Ticks.ToString();
                entity.Dict1 = entity.Dict1.EnsureDictContainsValue("bbb", bbb);

                entity.Dict1.Should().ContainKey("bbb");
                entity.Dict1["bbb"].Should().Be(bbb);

                var aaa = DateTime.UtcNow.Ticks.ToString();
                entity.Dict1 = entity.Dict1.EnsureDictContainsValue("aaa", aaa);

                await store.UpdateItemAsync(entity).ConfigureAwait(false);

                entity.Dict1.Should().ContainKey("aaa");
                entity.Dict1["aaa"].Should().Be(aaa);

                entity = await store.LoadItemAsync <FakeEntity>(entityId).ConfigureAwait(false);

                entity.Dict1.Should().ContainKey("aaa");

                entity.Dict1.Should().ContainKey("bbb");
                entity.Dict1["bbb"].Should().Be(bbb); entity.Dict1["aaa"].Should().Be(aaa);
            }
        }