public void Delete_ItemWithETagHasBeenChangedConflictHandlingOverwrite_DeletesItem() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 12 }; _tableStorageProvider.Add( _tableName, item ); _tableStorageProvider.Save(); var storedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); storedItem.Age = 33; _tableStorageProvider.Update( _tableName, storedItem ); _tableStorageProvider.Save(); _tableStorageProvider.Delete( _tableName, storedItem, ConflictHandling.Overwrite ); _tableStorageProvider.Save(); _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); Assert.Fail( "Should have thrown an EntityDoesNotExistException" ); }
public void Delete_ItemWithETagHasBeenChanged_ThrowsEntityHasBeenChangedException() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 12 }; _tableStorageProvider.Add( _tableName, item ); _tableStorageProvider.Save(); var storedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); storedItem.Age = 33; _tableStorageProvider.Update( _tableName, storedItem ); _tableStorageProvider.Save(); _tableStorageProvider.Delete( _tableName, storedItem ); _tableStorageProvider.Save(); }
public void Update_ShouldIncludeETagWithDynamicsIsTrueAndDynamicHasAnETagMismatch_ThrowsEntityHasBeenChangedException() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 42 }; _tableStorageProvider.Add( _tableName, item ); _tableStorageProvider.Save(); _tableStorageProvider.ShouldIncludeETagWithDynamics = true; _tableStorageProvider.ShouldThrowForReservedPropertyNames = false; var updatedItem = _tableStorageProvider.Get( _tableName, "foo", "bar" ); updatedItem.Age = 22; _tableStorageProvider.Update( _tableName, updatedItem ); _tableStorageProvider.Save(); updatedItem.Age = 33; _tableStorageProvider.Update( _tableName, updatedItem ); _tableStorageProvider.Save(); }
public void Upsert_ItemUpsertedTwiceAndNotAffectedByETag_ETagPropertyGetsUpdatedEachUpsert() { var item = new DecoratedItemWithETag { Id = "foo2", Name = "bar2", Age = 42 }; _tableStorageProvider.Add( _tableName, item ); _tableStorageProvider.Save(); var retreivedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo2", "bar2" ); retreivedItem.Age = 39; _tableStorageProvider.Upsert( _tableName, retreivedItem ); _tableStorageProvider.Save(); var upsertedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo2", "bar2" ); Assert.AreNotEqual( retreivedItem.ETag, upsertedItem.ETag ); retreivedItem.Age = 41; _tableStorageProvider.Upsert( _tableName, retreivedItem ); _tableStorageProvider.Save(); var upsertedItem2 = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo2", "bar2" ); Assert.AreNotEqual( upsertedItem.ETag, upsertedItem2.ETag ); }
public void Update_ClassWithETagAttributeHasAnOldETag_ThrowsEntityHasBeenChangedException() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 42 }; _tableStorageProvider.Add( _tableName, item ); _tableStorageProvider.Save(); var updatedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); updatedItem.Age = 22; _tableStorageProvider.Update( _tableName, updatedItem ); _tableStorageProvider.Save(); updatedItem.Age = 33; _tableStorageProvider.Update( _tableName, updatedItem ); _tableStorageProvider.Save(); }
public void Update_ShouldIncludeETagWithDynamicsIsFalseAndDynamicHasAnETagMismatch_SuccessfullyExecutesBothUpdates() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 42 }; _tableStorageProvider.Add( _tableName, item ); _tableStorageProvider.Save(); _tableStorageProvider.ShouldIncludeETagWithDynamics = false; _tableStorageProvider.ShouldThrowForReservedPropertyNames = false; var updatedItem = _tableStorageProvider.Get( _tableName, "foo", "bar" ); updatedItem.Age = 22; _tableStorageProvider.Update( _tableName, updatedItem ); _tableStorageProvider.Save(); var storedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); Assert.AreEqual( 22, storedItem.Age ); updatedItem.Age = 33; _tableStorageProvider.Update( _tableName, updatedItem ); _tableStorageProvider.Save(); storedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); Assert.AreEqual( 33, storedItem.Age ); }
public void Merge_ClassHasAnOldETag_ThrowsEntityHasBeenChangedException() { var decoratedItem = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 24 }; _tableStorageProvider.Add( _tableName, decoratedItem ); _tableStorageProvider.Save(); var storedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); storedItem.Age = 44; _tableStorageProvider.Merge( _tableName, storedItem ); _tableStorageProvider.Save(); storedItem.Age = 59; _tableStorageProvider.Merge( _tableName, storedItem ); _tableStorageProvider.Save(); Assert.Fail( "Should have thrown an EntityHasBeenChangedException" ); }
public void Update_ClassWithETagAttributeHasAnOldETagConflictHandlingOverwrite_UpdatesItem() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 42 }; _tableStorageProvider.Add( _tableName, item ); _tableStorageProvider.Save(); var updatedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); updatedItem.Age = 22; _tableStorageProvider.Update( _tableName, updatedItem ); _tableStorageProvider.Save(); updatedItem.Age = 33; _tableStorageProvider.Update( _tableName, updatedItem, ConflictHandling.Overwrite ); _tableStorageProvider.Save(); var actualItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); Assert.AreEqual( 33, actualItem.Age ); }
public void Get_DecoratedItemWithETag_RetreivedItemHasValidETag() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 34 }; _tableStorageProvider.Add( _tableName, item ); _tableStorageProvider.Save(); var retrievedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); Assert.IsNotNull( retrievedItem.ETag ); }
public void Merge_ClassHasAnOldETagConflictHandlingOverwrite_MergesItem() { var decoratedItem = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 24 }; _tableStorageProvider.Add( _tableName, decoratedItem ); _tableStorageProvider.Save(); var storedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); storedItem.Age = 44; _tableStorageProvider.Merge( _tableName, storedItem ); _tableStorageProvider.Save(); storedItem.Age = 59; _tableStorageProvider.Merge( _tableName, storedItem, ConflictHandling.Overwrite ); _tableStorageProvider.Save(); var actualItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); Assert.AreEqual( 59, actualItem.Age ); }
public async Task Delete_ItemWithETagHasBeenChangedConflictHandlingOverwrite_DeletesItem() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 12 }; _tableStorageProvider.Add( _tableName, item ); await _tableStorageProvider.SaveAsync(); var storedItem = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo", "bar" ); storedItem.Age = 33; _tableStorageProvider.Update( _tableName, storedItem ); await _tableStorageProvider.SaveAsync(); _tableStorageProvider.Delete( _tableName, storedItem, ConflictHandling.Overwrite ); await _tableStorageProvider.SaveAsync(); await AsyncAssert.ThrowsAsync<EntityDoesNotExistException>( () => _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo", "bar" ) ); }
public async Task Delete_ItemWithETagHasBeenChanged_ThrowsEntityHasBeenChangedException() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 12 }; _tableStorageProvider.Add( _tableName, item ); await _tableStorageProvider.SaveAsync(); var storedItem = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo", "bar" ); storedItem.Age = 33; _tableStorageProvider.Update( _tableName, storedItem ); await _tableStorageProvider.SaveAsync(); _tableStorageProvider.Delete( _tableName, storedItem ); await AsyncAssert.ThrowsAsync<EntityHasBeenChangedException>( () => _tableStorageProvider.SaveAsync() ); }
public async Task GetAsync_DecoratedItemWithETag_RetreivedItemHasValidETag() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 34 }; _tableStorageProvider.Add( _tableName, item ); await _tableStorageProvider.SaveAsync(); var retrievedItem = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo", "bar" ); Assert.IsNotNull( retrievedItem.ETag ); }
public async Task Merge_ClassHasAnOldETag_ThrowsEntityHasBeenChangedException() { var decoratedItem = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 24 }; _tableStorageProvider.Add( _tableName, decoratedItem ); await _tableStorageProvider.SaveAsync(); var storedItem = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo", "bar" ); storedItem.Age = 44; _tableStorageProvider.Merge( _tableName, storedItem ); await _tableStorageProvider.SaveAsync(); storedItem.Age = 59; _tableStorageProvider.Merge( _tableName, storedItem ); await AsyncAssert.ThrowsAsync<EntityHasBeenChangedException>( () => _tableStorageProvider.SaveAsync() ); }
public async Task Update_ClassWithETagAttributeHasAnOldETag_ThrowsEntityHasBeenChangedException() { var item = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 42 }; _tableStorageProvider.Add( _tableName, item ); await _tableStorageProvider.SaveAsync(); var updatedItem = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo", "bar" ); updatedItem.Age = 22; _tableStorageProvider.Update( _tableName, updatedItem ); await _tableStorageProvider.SaveAsync(); updatedItem.Age = 33; _tableStorageProvider.Update( _tableName, updatedItem ); await AsyncAssert.ThrowsAsync<EntityHasBeenChangedException>( () => _tableStorageProvider.SaveAsync() ); }