Пример #1
0
        public async Task <bool> SaveAsync(SampleEntity entity)
        {
            string eTag     = null;
            var    dbEntity = entity as SampleEntityExtension;

            if (dbEntity == null)
            {
                dbEntity = SampleEntityExtension.FromSampleEntity(entity);
            }
            else
            {
                eTag = dbEntity.ETag;
            }

            var result = await repository.SaveAsync(entity.Id.ToString(), entity.OwnerId.ToString(), dbEntity, eTag);

            return(result.IsSuccessful);
        }
Пример #2
0
        public async Task ChildEntityETAgUpdates(SampleEntityExtension entity)
        {
            //Arrange
            var repo2 = fixture.Create <CosmosDbDocumentStorage <SampleEntityExtension> >();

            //Act
            await repo2.SaveAsync(entity.Id.ToString(), GetPartitionKey(entity), entity, null);

            var result1 = await repo2.GetByIdAsync(entity.Id.ToString(), GetPartitionKey(entity));

            await repo2.SaveAsync(entity.Id.ToString(), GetPartitionKey(entity), result1.Content, result1.Content.ETag);

            await Assert.ThrowsAsync <DocumentHasChangedException>(async() => await repo2.SaveAsync(entity.Id.ToString(), GetPartitionKey(entity), result1.Content, result1.Content.ETag));

            //Assert
            var result2 = await repo2.GetByIdAsync(entity.Id.ToString(), GetPartitionKey(entity));

            Assert.NotEqual(result1.Content.ETag, result2.Content.ETag);

            await repo2.SaveAsync(entity.Id.ToString(), GetPartitionKey(entity), result2.Content, result2.Content.ETag);
        }
Пример #3
0
        public async Task ChildEntityWithNamedCollectionTest(SampleEntityExtension entity)
        {
            //Arrange
            var repo2 = fixture.Create <CosmosDbDocumentStorage <SampleEntityExtension> >();

            //Act
            await repo2.SaveAsync(entity.Id.ToString(), GetPartitionKey(entity), entity, null);

            //Assert
            var result = await repo2.GetByIdAsync(entity.Id.ToString(), GetPartitionKey(entity));

            Assert.NotNull(result.Content);

            var dbItem = result.Content;

            Assert.Equal(entity.Id, dbItem.Id);
            Assert.Equal(entity.Name, dbItem.Name);
            Assert.Equal(entity.Age, dbItem.Age);
            Assert.Equal(entity.ExpiryDate, dbItem.ExpiryDate);
            Assert.Equal(entity.OwnerId, dbItem.OwnerId);
            Assert.Equal(entity.DateOfBirth, dbItem.DateOfBirth);
            Assert.Equal(entity.EmailAddresses, dbItem.EmailAddresses);
            Assert.Equal(entity.Active, dbItem.Active);

            //When returned from base type, should also be returned
            var resultBase = await repository.GetByIdAsync(entity.Id.ToString(), GetPartitionKey(entity));

            Assert.NotNull(resultBase.Content);
            var dbItem2 = result.Content;

            Assert.Equal(entity.Id, dbItem2.Id);
            Assert.Equal(entity.Name, dbItem2.Name);
            Assert.Equal(entity.Age, dbItem2.Age);
            Assert.Equal(entity.ExpiryDate, dbItem2.ExpiryDate);
            Assert.Equal(entity.OwnerId, dbItem2.OwnerId);
            Assert.Equal(entity.DateOfBirth, dbItem2.DateOfBirth);
            Assert.Equal(entity.EmailAddresses, dbItem2.EmailAddresses);
            Assert.Equal(entity.Active, dbItem2.Active);
        }