Class with decorated partition and row key properties, for testing purposes.
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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 );
        }
Example #4
0
        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 );
        }
Example #5
0
        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" );
        }
Example #6
0
        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() );
      }
Example #10
0
        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 );
        }
Example #11
0
        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();
        }
Example #12
0
      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 ) );
      }