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); }
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); }
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); }