public void service_validate_a_valid_bookmark_is_true()
        {
            RejectCallback<String> cb = cv => { };
            Object fakeOwner = new Object();
            String change = String.Empty;
            IChange expected = new PropertyValueChange<String>( fakeOwner, "property-name", change, cb );

            ChangeTrackingService svc = new ChangeTrackingService();
            svc.Add( expected, AddChangeBehavior.RedoRequest );

            var bmk = svc.CreateBookmark();

            Assert.IsTrue( svc.Validate( bmk ) );
        }
        public void service_add_notSupported_AddChangeBehavior()
        {
            IChange stub = MockRepository.GenerateStub<IChange>();

            ChangeTrackingService svc = new ChangeTrackingService();
            svc.Add( stub, AddChangeBehavior.None );
        }
        public void service_add_invalid_AddChangeBehavior()
        {
            IChange stub = MockRepository.GenerateStub<IChange>();

            ChangeTrackingService svc = new ChangeTrackingService();
            svc.Add( stub, ( AddChangeBehavior )1000 );
        }
        public void service_after_add_isChanged_is_true()
        {
            RejectCallback<String> cb = cv => { };
            Object fakeOwner = new Object();
            String change = String.Empty;
            PropertyValueChange<String> stub = new PropertyValueChange<String>( fakeOwner, "property-name", change, cb );

            ChangeTrackingService svc = new ChangeTrackingService();
            svc.Add( stub, AddChangeBehavior.RedoRequest );

            Assert.IsTrue( svc.IsChanged );
        }
        public void service_after_add_getChangeSet_return_valid_cSet()
        {
            RejectCallback<String> cb = cv => { };
            Object fakeOwner = new Object();
            String change = String.Empty;
            IChange expected = new PropertyValueChange<String>( fakeOwner, "property-name", change, cb );

            ChangeTrackingService svc = new ChangeTrackingService();
            svc.Add( expected, AddChangeBehavior.RedoRequest );

            IChangeSet cSet = svc.GetChangeSet();

            Assert.AreEqual<IChange>( expected, cSet.First() );
        }
        public void after_suspend_no_more_changes_can_be_added()
        {
            RejectCallback<String> cb = cv => { };
            Object fakeOwner = new Object();
            String change = String.Empty;
            PropertyValueChange<String> stub = new PropertyValueChange<string>( fakeOwner, "property-name", change, cb );

            ChangeTrackingService svc = new ChangeTrackingService();
            svc.Suspend();

            svc.Add( stub, AddChangeBehavior.RedoRequest );
        }
 public void service_on_null_iChange_add_argumentNullException()
 {
     ChangeTrackingService svc = new ChangeTrackingService();
     svc.Add( null, AddChangeBehavior.RedoRequest );
 }
        public void service_on_dispose_with_changes()
        {
            RejectCallback<String> rc = e => { };
            CommitCallback<String> cc = e => { };
            Object fakeOwner = new Object();
            String change = "Foo";

            var iChange = new PropertyValueChange<String>( fakeOwner, "property-name", change, rc, cc, "" );

            using( ChangeTrackingService svc = new ChangeTrackingService() )
            {
                svc.Add( iChange, AddChangeBehavior.Default );
            }
        }
        public void service_on_change_reject_ArgumentOutOfRangeException_on_none_commit_reason_with_hacked_property_change()
        {
            RejectCallback<String> rc = e => { };
            CommitCallback<String> cc = e => { };
            Object fakeOwner = new Object();
            String change = "Foo";

            var iChange = new HackedPropertyValueChange( fakeOwner, change, rc, cc );
            iChange.HackedRejectReason = RejectReason.None;

            ChangeTrackingService svc = new ChangeTrackingService();
            svc.Add( iChange, AddChangeBehavior.Default );

            iChange.Reject( RejectReason.RejectChanges );
        }
        public void service_on_change_commit_EnumValueOutOfRangeException_on_invalid_commit_reason_with_hacked_property_change()
        {
            RejectCallback<String> rc = e => { };
            CommitCallback<String> cc = e => { };
            Object fakeOwner = new Object();
            String change = "Foo";

            var iChange = new HackedPropertyValueChange( fakeOwner, change, rc, cc );
            iChange.HackedCommitReason = ( CommitReason )1000;

            ChangeTrackingService svc = new ChangeTrackingService();
            svc.Add( iChange, AddChangeBehavior.Default );

            iChange.Commit( CommitReason.AcceptChanges );
        }
        public void service_on_change_commit_remove_change_from_changesStack()
        {
            RejectCallback<String> rc = e => { };
            CommitCallback<String> cc = e => { };
            Object fakeOwner = new Object();
            String change = "Foo";

            var iChange = new PropertyValueChange<String>( fakeOwner, "property-name", change, rc, cc, "" );

            ChangeTrackingService svc = new ChangeTrackingService();
            svc.Add( iChange, AddChangeBehavior.Default );

            iChange.Commit( CommitReason.AcceptChanges );

            svc.IsChanged.Should().Be.False();
        }
        public void service_on_acceptChanges_successfully_commit_a_commitSupported_change()
        {
            var iChange = MockRepository.GenerateStub<IChange>();
            iChange.Expect( obj => obj.IsCommitSupported ).Return( true );
            iChange.Expect( obj => obj.Commit( CommitReason.AcceptChanges ) ).Repeat.Once();

            var svc = new ChangeTrackingService();
            svc.Add( iChange, AddChangeBehavior.Default );

            svc.AcceptChanges();

            iChange.VerifyAllExpectations();
        }