public void ShouldNotRollbackUnstartedTransaction() { // arrange var target = new PropertyTransaction( new MockEditableObject() ); // act // assert Assert.Throws<InvalidOperationException>( () => target.Rollback() ); }
public void ShouldRollbackChangesToObject() { // arrange var obj = new MockEditableObject(); var createdDate = obj.CreatedDate; var transaction = new PropertyTransaction( obj, new[] { "FirstName", "LastName" } ); obj.Id = 1; obj.FirstName = string.Empty; obj.LastName = string.Empty; // act transaction.Begin(); obj.Id = 2; obj.FirstName = "unit"; obj.LastName = "test"; transaction.Rollback(); // assert Assert.Equal( 2, obj.Id ); Assert.Equal( string.Empty, obj.FirstName ); Assert.Equal( string.Empty, obj.LastName ); Assert.Equal( createdDate, obj.CreatedDate ); }