public void HandleModelChanged()
        {
            Expect.Call(viewMock.Controller).PropertyBehavior().IgnoreArguments();
            Expect.Call(viewMock.Model).PropertyBehavior().IgnoreArguments();
            Expect.Call(() => eventDispatcherMock.ModelChanged += null).IgnoreArguments();
            var eventRaiser = LastCall.GetEventRaiser();

            Expect.Call(dataLayerMock.Connect(null)).Return(true).IgnoreArguments();
            Expect.Call(() => eventDispatcherMock.Notify(controller, new ModelChangedArgs(EventReceiver.WorkitemView, EventContext.WorkitemCacheInvalidated)));
            Expect.Call(() => eventDispatcherMock.Notify(controller, new ModelChangedArgs(EventReceiver.ProjectView, EventContext.ProjectsRequested))).IgnoreArguments();

            MockRepository.ReplayAll();

            controller.RegisterView(viewMock);
            controller.PrepareView();
            controller.Prepare();
            eventRaiser.Raise(controller, new ModelChangedArgs(EventReceiver.OptionsView, EventContext.V1SettingsChanged));

            MockRepository.VerifyAll();
        }
        public override void SetValue(object component, object newValue)
        {
            var item = (Entity)component;

            if (newValue != null && newValue.Equals(string.Empty))
            {
                newValue = null;
            }

            item.SetProperty(Attribute, newValue);
            eventDispatcher.Notify(this, ResolveChangeArgs());
        }
        public void RegisterEventForTypeAndInvoke()
        {
            var invoked = false;
            IEventDispatcher dispatcher = ObjectFactory.Build <IEventDispatcher>();

            dispatcher.Subscribe("test", "test", m =>
            {
                invoked = true;
            });
            dispatcher.Notify(new ObjectUpdatedMessage
            {
                EventType = "test",
                Type      = "test"
            });
            Assert.IsTrue(invoked);
        }
        public void TestForDoubleInvocation()
        {
            var typeInvoked             = false;
            var typeAndIdInvoked        = false;
            IEventDispatcher dispatcher = ObjectFactory.Build <IEventDispatcher>();

            dispatcher.Subscribe("test", "test", m =>
            {
                typeInvoked = true;
            });
            dispatcher.Subscribe("test", "test", "1", m =>
            {
                typeAndIdInvoked = true;
            });
            dispatcher.Notify(new ObjectUpdatedMessage
            {
                EventType = "test",
                Type      = "test",
                ObjectId  = "1"
            });
            Assert.IsTrue(typeInvoked);
            Assert.IsTrue(typeAndIdInvoked);
        }