public void service_generate_valid_adivsory_with_valid_iAdvisoryBuilder()
        {
            IAdvisoryBuilder mock = MockRepository.GenerateMock<IAdvisoryBuilder>();
            mock.Expect( b => b.GenerateAdvisory( null, null ) )
                .IgnoreArguments()
                .Repeat.Once()
                .Return( new Advisory( new IAdvisedAction[ 0 ] ) );

            ChangeTrackingService svc = new ChangeTrackingService();

            Person p = new Person( svc, false );
            p.Name = "Mauro";

            IEnumerable<IAdvisedAction> advisory = svc.GetAdvisory( mock );

            mock.VerifyAllExpectations();
        }
 public void service_getAdvisory_with_null_iAdvisoryBuilder_argumentNull_Exception()
 {
     ChangeTrackingService svc = new ChangeTrackingService();
     svc.GetAdvisory( null );
 }
        public void service_should_generate_advisory_with_update_action()
        {
            ChangeTrackingService svc = new ChangeTrackingService();

            Person p = new Person( svc, false );
            p.Name = "Mauro";

            IEnumerable<IAdvisedAction> advisory = svc.GetAdvisory();

            Assert.AreEqual<ProposedActions>( ProposedActions.Update, advisory.First().Action );
        }
        public void service_with_no_changes_generate_empty_advisory()
        {
            ChangeTrackingService svc = new ChangeTrackingService();
            IEnumerable<IAdvisedAction> advisory = svc.GetAdvisory();

            Assert.IsNotNull( advisory );
            Assert.AreEqual<Int32>( 0, advisory.Count() );
        }
        public void service_generate_valid_advisory()
        {
            ChangeTrackingService svc = new ChangeTrackingService();

            Person p = new Person( svc );
            p.Name = "Mauro";

            IEnumerable<IAdvisedAction> advisory = svc.GetAdvisory();

            Assert.IsNotNull( advisory );
            Assert.AreEqual<Int32>( 1, advisory.Count() );
            Assert.AreEqual<ProposedActions>( ProposedActions.Create, advisory.First().Action );
        }
        public void service_getAdvisory_generate_valid_advisory_with_more_changes_applied_to_the_same_entity()
        {
            ProposedActions expected = ProposedActions.Delete;
            ChangeTrackingService svc = new ChangeTrackingService();

            PersonCollection list = new PersonCollection( svc );
            list.Add( new Person( null, false ) );    //First IChange
            list.RemoveAt( 0 );                        //Second IChange

            IAdvisory advisory = svc.GetAdvisory();
            IAdvisedAction action = advisory.First();
            ProposedActions actual = action.Action;

            Assert.AreEqual<ProposedActions>( expected, actual );
        }
        public void service_on_clear_generate_valid_advisory()
        {
            ChangeTrackingService svc = new ChangeTrackingService();

            PersonCollection p = new PersonCollection( svc );
            p.Add( new Person( null, false ) );
            p.Add( new Person( null, false ) );
            p.Add( new Person( null, false ) );
            p.Add( new Person( null, false ) );
            p.Add( new Person( null, false ) );

            svc.AcceptChanges();

            p.Clear();

            IEnumerable<IAdvisedAction> advisory = svc.GetAdvisory();

            Assert.IsNotNull( advisory );
            Assert.AreEqual<Int32>( 5, advisory.Count() );
            foreach( var aa in advisory )
            {
                Assert.AreEqual<ProposedActions>( ProposedActions.Delete, aa.Action );
            }
        }
        public void service_on_single_add_generate_valid_advisory_even_with_transient_persistable_entity()
        {
            ChangeTrackingService svc = new ChangeTrackingService();

            PersonCollection p = new PersonCollection( svc );
            p.Add( new Person( null, ChangeTrackingRegistration.AsTransient, TransientRegistration.AsPersistable ) );

            IEnumerable<IAdvisedAction> advisory = svc.GetAdvisory();

            Assert.IsNotNull( advisory );
            Assert.AreEqual<Int32>( 1, advisory.Count() );
            Assert.AreEqual<ProposedActions>( ProposedActions.Create, advisory.First().Action );
        }
        public void service_on_single_add_generate_valid_advisory()
        {
            ChangeTrackingService svc = new ChangeTrackingService();

            PersonCollection p = new PersonCollection( svc );
            p.Add( new Person( null, false ) );

            IEnumerable<IAdvisedAction> advisory = svc.GetAdvisory();

            Assert.IsNotNull( advisory );
            Assert.AreEqual<Int32>( 1, advisory.Count() );
            Assert.AreEqual<ProposedActions>( ProposedActions.Update, advisory.First().Action );
        }