public void Hydrate_ItemDecoratedWithETagAttribute_ReturnedGenericTableEntityHasETag() { var itemToSave = new DecoratedItemWithETag { Id = "id", Name = "name", ETag = "etag" }; TableItem tableItem = TableItem.Create(itemToSave); var genericEntity = GenericTableEntity.HydrateFrom(tableItem); Assert.AreEqual("etag", genericEntity.ETag); }
public void Create_ETagDecoratedItem_ETagIncludedWithTableItem() { var decoratedItemWithETag = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 42, ETag = "etag" }; var item = TableItem.Create(decoratedItemWithETag); Assert.IsNotNull(item.ETag); }
public void Hydrate_ItemDecoratedWithETagAttribute_ReturnedGenericTableEntityHasETag() { var itemToSave = new DecoratedItemWithETag { Id = "id", Name = "name", ETag = "etag" }; TableItem tableItem = TableItem.Create( itemToSave ); var genericEntity = GenericTableEntity.HydrateFrom( tableItem ); Assert.AreEqual( "etag", genericEntity.ETag ); }
public void Create_ETagDecoratedItem_ETagIncludedWithTableItem() { var decoratedItemWithETag = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 42, ETag = "etag" }; var item = TableItem.Create( decoratedItemWithETag ); Assert.IsNotNull( item.ETag ); }
public void Update_EntityHasAnOldETag_ThrowsEntityHasBeenChangedException() { var decoratedItemWithETag = new DecoratedItemWithETag { Age = 42, Id = "id", Name = "name" }; _context.AddNewItem( "table", TableItem.Create( decoratedItemWithETag ) ); _context.Save( Execute.Individually ); var entity = _context.CreateQuery<DecoratedItemWithETag>( "table" ).PartitionKeyEquals( "id" ).RowKeyEquals( "name" ).Single(); entity.Age = 19; _context.Update( "table", TableItem.Create( entity ), ConflictHandling.Throw ); _context.Save( Execute.Individually ); entity.Age = 21; _context.Update( "table", TableItem.Create( entity ), ConflictHandling.Throw ); _context.Save( Execute.Individually ); Assert.Fail( "Should have thrown an EntityHasBeenChangedException" ); }
public void Update_EntityHasAnOldETagConflictHandlingOverwrite_EntityUpdatedOnSave() { var decoratedItemWithETag = new DecoratedItemWithETag { Age = 42, Id = "id", Name = "name" }; _context.AddNewItem( "table", TableItem.Create( decoratedItemWithETag ) ); _context.Save( Execute.Individually ); var entity = _context.CreateQuery<DecoratedItemWithETag>( "table" ).PartitionKeyEquals( "id" ).RowKeyEquals( "name" ).Single(); entity.Age = 19; _context.Update( "table", TableItem.Create( entity ), ConflictHandling.Overwrite ); _context.Save( Execute.Individually ); entity.Age = 21; _context.Update( "table", TableItem.Create( entity ), ConflictHandling.Overwrite ); _context.Save( Execute.Individually ); var retrievedEntity = _context.CreateQuery<DecoratedItemWithETag>( "table" ).PartitionKeyEquals( "id" ).RowKeyEquals( "name" ).Single(); Assert.AreEqual( 21, retrievedEntity.Age ); }
public async Task Upsert_ItemUpsertedTwiceAndNotAffectedByETag_ETagPropertyGetsUpdatedEachUpsert() { var item = new DecoratedItemWithETag { Id = "foo2", Name = "bar2", Age = 42 }; _tableStorageProvider.Add( _tableName, item ); await _tableStorageProvider.SaveAsync(); var retreivedItem = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo2", "bar2" ); retreivedItem.Age = 39; _tableStorageProvider.Upsert( _tableName, retreivedItem ); await _tableStorageProvider.SaveAsync(); var upsertedItem = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo2", "bar2" ); Assert.AreNotEqual( retreivedItem.ETag, upsertedItem.ETag ); retreivedItem.Age = 41; _tableStorageProvider.Upsert( _tableName, retreivedItem ); await _tableStorageProvider.SaveAsync(); var upsertedItem2 = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo2", "bar2" ); Assert.AreNotEqual( upsertedItem.ETag, upsertedItem2.ETag ); }
public async Task GetAsync_ItemWithETagPropertyInStore_ItemReturnedWithETag() { var decoratedETagItem = new DecoratedItemWithETag { Id = "someId", Name = "someName", Age = 12, }; _tableStorageProvider.Add( _tableName, decoratedETagItem ); await _tableStorageProvider.SaveAsync(); var actualItem = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "someId", "someName" ); Assert.IsNotNull( actualItem.ETag ); }
public async Task Delete_ItemWithETagHasBeenUpdated_ThrowsEntityHasBeenChangedException() { var decoratedItemWithETag = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 23 }; _tableStorageProvider.Add( _tableName, decoratedItemWithETag ); await _tableStorageProvider.SaveAsync(); var storedItem = await _tableStorageProvider.GetAsync<DecoratedItemWithETag>( _tableName, "foo", "bar" ); storedItem.Age = 25; _tableStorageProvider.Update( _tableName, storedItem ); await _tableStorageProvider.SaveAsync(); _tableStorageProvider.Delete( _tableName, storedItem ); await AsyncAssert.ThrowsAsync<EntityHasBeenChangedException>( () => _tableStorageProvider.SaveAsync() ); }
public void Get_ItemWithETagPropertyInStore_ItemReturnedWithETag() { var decoratedETagItem = new DecoratedItemWithETag { Id = "someId", Name = "someName", Age = 12, }; _tableStorageProvider.Add( _tableName, decoratedETagItem ); _tableStorageProvider.Save(); var actualItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "someId", "someName" ); Assert.IsNotNull( actualItem.ETag ); }
public void Delete_ItemWithETagHasBeenUpdated_ThrowsEntityHasBeenChangedException() { var decoratedItemWithETag = new DecoratedItemWithETag { Id = "foo", Name = "bar", Age = 23 }; _tableStorageProvider.Add( _tableName, decoratedItemWithETag ); _tableStorageProvider.Save(); var storedItem = _tableStorageProvider.Get<DecoratedItemWithETag>( _tableName, "foo", "bar" ); storedItem.Age = 25; _tableStorageProvider.Update( _tableName, storedItem ); _tableStorageProvider.Save(); _tableStorageProvider.Delete( _tableName, storedItem ); _tableStorageProvider.Save(); }
public async Task Update_EntityHasAnOldETag_ThrowsEntityHasBeenChangedException() { var decoratedItemWithETag = new DecoratedItemWithETag { Age = 42, Id = "id", Name = "name" }; _context.AddNewItem( "table", TableItem.Create( decoratedItemWithETag ) ); await _context.SaveAsync( Execute.Individually ); var entity = ( await _context.CreateQuery<DecoratedItemWithETag>( "table" ).PartitionKeyEquals( "id" ).RowKeyEquals( "name" ).Async() ).Single(); entity.Age = 19; _context.Update( "table", TableItem.Create( entity ), ConflictHandling.Throw ); await _context.SaveAsync( Execute.Individually ); entity.Age = 21; _context.Update( "table", TableItem.Create( entity ), ConflictHandling.Throw ); await AsyncAssert.ThrowsAsync<EntityHasBeenChangedException>( () => _context.SaveAsync( Execute.Individually ) ); }