Ejemplo n.º 1
0
        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" );
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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 );
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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 );
        }
Ejemplo n.º 7
0
        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" );
        }
Ejemplo n.º 8
0
        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 );
        }
Ejemplo n.º 9
0
        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 );
        }
Ejemplo n.º 10
0
        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 );
        }
Ejemplo n.º 11
0
      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" ) );
      }
Ejemplo n.º 12
0
      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() );
      }
Ejemplo n.º 13
0
      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 );
      }
Ejemplo n.º 14
0
      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() );
      }
Ejemplo n.º 15
0
      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() );
      }