public void Property_Changed_Registered()
        {
            ICollectionForm <IColumn> form = MockRepository.GenerateMock <ICollectionForm <IColumn> >();
            IColumnContainer          obj  = MockRepository.GenerateMock <IColumnContainer>();
            IMainPanel panel = MockRepository.GenerateMock <IMainPanel>();

            //var presenter = (ItemCollectionPresenter<IColumn>) new ColumnCollectionPresenter(panel, form);
            //presenter.AttachToModel(obj);

            obj.AssertWasCalled(o => o.PropertyChanged += null, c => c.IgnoreArguments());
            Assert.That(presenter.Detached, Is.False);

            presenter.DetachFromModel();

            Assert.That(presenter.Detached, Is.True);
            obj.AssertWasCalled(o => o.PropertyChanged -= null, c => c.IgnoreArguments());
        }
        public void Re_Attaching_First_Detaches()
        {
            ICollectionForm <IColumn> form = MockRepository.GenerateMock <ICollectionForm <IColumn> >();
            IColumnContainer          obj  = MockRepository.GenerateMock <IColumnContainer>();
            IMainPanel panel = MockRepository.GenerateMock <IMainPanel>();

            //var presenter = (ItemCollectionPresenter<IColumn>) new ColumnCollectionPresenter(panel, form);
            //presenter.AttachToModel(obj);

            obj.AssertWasCalled(o => o.PropertyChanged += null, c => c.IgnoreArguments());
            //Assert.That(presenter.Detached, Is.False);

            //presenter.AttachToModel(obj);

            //Assert.That(presenter.Detached, Is.False);
            obj.AssertWasCalled(o => o.PropertyChanged -= null, c => c.IgnoreArguments());
            obj.AssertWasCalled(o => o.PropertyChanged += null, c => c.IgnoreArguments().Repeat.Twice());
        }
        public void Column_Removed_Correctly()
        {
            ICollectionForm <IColumn> form = MockRepository.GenerateMock <ICollectionForm <IColumn> >();
            IColumnContainer          obj  = MockRepository.GenerateMock <IColumnContainer>();
            IMainPanel panel = MockRepository.GenerateMock <IMainPanel>();

            //var presenter = (ItemCollectionPresenter<IColumn>) new ColumnCollectionPresenter(panel, form);
            //presenter.AttachToModel(obj);
            //presenter.Show();

            IColumn selectedColumn = new Column("Column1");

            form.Stub(f => f.SelectedItem).Return(selectedColumn);

            var raiser = form.GetEventRaiser(f => f.RemoveItem += null);

            raiser.Raise(form, new EventArgs());

            obj.AssertWasCalled(o => o.RemoveColumn(selectedColumn));
        }
        public void New_Column_Added_Correctly()
        {
            ICollectionForm <IColumn> form = MockRepository.GenerateMock <ICollectionForm <IColumn> >();
            IColumnContainer          obj  = MockRepository.GenerateMock <IColumnContainer>();
            IMainPanel panel = MockRepository.GenerateMock <IMainPanel>();


            //var presenter = new ColumnCollectionPresenter(panel, form);
            //presenter.AttachToModel(obj);
            //presenter.Show();

            var raiser = form.GetEventRaiser(f => f.AddItem += null);

            raiser.Raise(form, new EventArgs());

            panel.AssertWasCalled(p => p.ShowObjectPropertyGrid(Arg <Column> .Matches(c => c != null && c.Name == "NewColumn")));
            //panel.AssertWasCalled(p => p.ShowPropertyGrid(form));
            form.AssertWasCalled(f => f.Clear());
            obj.AssertWasCalled(o => o.AddColumn(Arg <Column> .Matches(c => c != null && c.Name == "NewColumn")));
        }