public void advisoryBuilder_generateAdvisory_for_transient_and_changed_entity() { var expectedAction = ProposedActions.Create; var entity = new Object(); var entityState = EntityTrackingStates.IsTransient | EntityTrackingStates.AutoRemove | EntityTrackingStates.HasBackwardChanges; var c1 = MockRepository.GenerateStub<IChange>(); c1.Expect( obj => obj.GetChangedEntities() ).Return( new Object[] { entity } ); c1.Expect( obj => obj.GetAdvisedAction( entity ) ).Return( ProposedActions.Update | ProposedActions.Create ); c1.Replay(); var c2 = MockRepository.GenerateStub<IChange>(); c2.Expect( obj => obj.GetChangedEntities() ).Return( new Object[] { entity } ); c2.Expect( obj => obj.GetAdvisedAction( entity ) ).Return( ProposedActions.Update | ProposedActions.Create ); c2.Replay(); var cSet = new ChangeSet( new IChange[] { c1, c2 } ); var svc = MockRepository.GenerateStub<IChangeTrackingService>(); svc.Expect( obj => obj.GetEntityState( entity ) ).Return( entityState ); svc.Expect( obj => obj.GetEntities( EntityTrackingStates.IsTransient, true ) ).Return( new Object[ 0 ] ); svc.Replay(); var actual = new AdvisoryBuilder( new ChangeSetDistinctVisitor() ); IAdvisory advisory = actual.GenerateAdvisory( svc, cSet ); advisory.Should().Not.Be.Null(); advisory.Count.Should().Be.EqualTo( 1 ); advisory.First().Action.Should().Be.EqualTo( expectedAction ); advisory.First().Target.Should().Be.EqualTo( entity ); }
/// <summary> /// Generates an advisory that contains all the operations that /// an ipothetical UnitOfWork must perform in order to persist /// all the changes tracked by this ChangeTrackingService. /// </summary> /// <returns> /// A readonly list of <see cref="IAdvisedAction"/>. /// </returns> public virtual IAdvisory GetAdvisory() { var ab = new AdvisoryBuilder( new ChangeSetDistinctVisitor() ); var advisory = this.GetAdvisory( ab ); return advisory; }
public void advisoryBuilder_generateAdvisory_null_changeSet_reference() { var actual = new AdvisoryBuilder( new ChangeSetDistinctVisitor() ); actual.GenerateAdvisory( new ChangeTrackingService(), null ); }
public void advisoryBuilder_generateAdvisory_unsupported_proposedActions_value() { var entity = new Object(); var entityState = EntityTrackingStates.HasBackwardChanges; var c1 = MockRepository.GenerateStub<IChange>(); c1.Expect( obj => obj.GetChangedEntities() ).Return( new Object[] { entity } ); c1.Expect( obj => obj.GetAdvisedAction( entity ) ).Return( ProposedActions.None ); c1.Replay(); var cSet = new ChangeSet( new IChange[] { c1 } ); var svc = MockRepository.GenerateStub<IChangeTrackingService>(); svc.Expect( obj => obj.GetEntityState( entity ) ).Return( entityState ); svc.Expect( obj => obj.GetEntities( EntityTrackingStates.IsTransient, true ) ).Return( new Object[ 0 ] ); svc.Replay(); var actual = new AdvisoryBuilder( new ChangeSetDistinctVisitor() ); IAdvisory advisory = actual.GenerateAdvisory( svc, cSet ); }
public void advisoryBuilder_ctor_null_visitor() { var actual = new AdvisoryBuilder( null ); }
public void advisoryBuilder_ctor() { var actual = new AdvisoryBuilder( new ChangeSetDistinctVisitor() ); }
public void advisoryBuilder_generateAdvisory_for_isTransient_and_autoRemove_entity_with_no_changes_should_generate_an_empty_advisory() { var entity = new Object(); var entityState = EntityTrackingStates.IsTransient | EntityTrackingStates.AutoRemove; var cSet = new ChangeSet( new IChange[ 0 ] ); var svc = MockRepository.GenerateStub<IChangeTrackingService>(); svc.Expect( obj => obj.GetEntityState( entity ) ).Return( entityState ); svc.Expect( obj => obj.GetEntities( EntityTrackingStates.IsTransient, true ) ).Return( new Object[ 0 ] ); svc.Replay(); var actual = new AdvisoryBuilder( new ChangeSetDistinctVisitor() ); IAdvisory advisory = actual.GenerateAdvisory( svc, cSet ); advisory.Should().Not.Be.Null(); advisory.Count.Should().Be.EqualTo( 0 ); }
public void advisoryBuilder_generateAdvisory_for_strict_isTransient_entity() { var expectedAction = ProposedActions.Create; var entity = new Object(); var entityState = EntityTrackingStates.IsTransient; var cSet = new ChangeSet( new IChange[ 0 ] ); var svc = MockRepository.GenerateStub<IChangeTrackingService>(); svc.Expect( obj => obj.GetEntityState( entity ) ).Return( entityState ); svc.Expect( obj => obj.GetEntities( EntityTrackingStates.IsTransient, true ) ).Return( new Object[] { entity } ); svc.Replay(); var actual = new AdvisoryBuilder( new ChangeSetDistinctVisitor() ); IAdvisory advisory = actual.GenerateAdvisory( svc, cSet ); advisory.Should().Not.Be.Null(); advisory.Count.Should().Be.EqualTo( 1 ); advisory.First().Action.Should().Be.EqualTo( expectedAction ); advisory.First().Target.Should().Be.EqualTo( entity ); }