예제 #1
0
        public void RegisterCallbackAddsCallbackToStore()
        {
            Action <TestEvent> handler = x => { };

            DomainEvent.RegisterCallback(handler);

            Assert.That(DomainEvent.CallbackStore.Callbacks, Has.Member(handler));
        }
예제 #2
0
        public void RaiseEventShouldCallAllRegisteredCallbacks()
        {
            bool called = false;
            Action <TestEvent> handler = x => called = true;

            DomainEvent.RegisterCallback(handler);
            DomainEvent.Raise(new TestEvent());

            Assert.That(called, Is.EqualTo(true));
        }
예제 #3
0
        public void Can_use_disposable_pattern()
        {
            Action <TestEvent> handler = x => { };

            using (DomainEvent.RegisterCallback(handler))
            {
                Assert.That(DomainEvent.CallbackStore.Callbacks, Has.Member(handler));
            }

            Assert.That(DomainEvent.CallbackStore.Callbacks, Has.No.Member(handler));
        }
예제 #4
0
        public void ClearCallbacksShouldRemoveAllCallbacksFromStore()
        {
            Action <TestEvent> handler = x => { };

            DomainEvent.RegisterCallback(handler);

            Assert.That(DomainEvent.CallbackStore.Callbacks, Has.Member(handler));

            DomainEvent.ClearCallbacks();

            Assert.That(DomainEvent.CallbackStore.Callbacks, Is.Empty);
        }
예제 #5
0
        public void UnRegisterCallbackShouldRemoveCallbackFromStore()
        {
            Action <TestEvent> handler = x => { };

            DomainEvent.RegisterCallback(handler);

            Assert.That(DomainEvent.CallbackStore.Callbacks, Has.Member(handler));

            DomainEvent.UnregisterCallback(handler);

            Assert.That(DomainEvent.CallbackStore.Callbacks, Has.No.Member(handler));
        }
예제 #6
0
        public void callbacks_are_cleared_when_clear_is_called()
        {
            ServiceLocator.SetLocatorProvider(() => MockRepository.GenerateStub <IServiceLocator>());
            var mockTestEvent1Handler = MockRepository.GenerateMock <Handles <TestEvent1> >();
            var mockTestEvent2Handler = MockRepository.GenerateMock <Handles <TestEvent2> >();

            DomainEvent.RegisterCallback <TestEvent1>(mockTestEvent1Handler.Handle);
            DomainEvent.RegisterCallback <TestEvent2>(mockTestEvent2Handler.Handle);

            var callbacksListFromStorage = Store.Local.Get <IList <Delegate> >(typeof(DomainEvent).FullName + "_Callbacks");

            Assert.That(callbacksListFromStorage, Is.Not.Null);
            Assert.That(callbacksListFromStorage.Count, Is.EqualTo(2));
            DomainEvent.ClearCallbacks();
            callbacksListFromStorage = Store.Local.Get <IList <Delegate> >(typeof(DomainEvent).FullName + "_Callbacks");
            Assert.That(callbacksListFromStorage, Is.Null);
        }
예제 #7
0
        public void registered_callbacks_are_called_when_event_is_raised()
        {
            ServiceLocator.SetLocatorProvider(() => MockRepository.GenerateStub <IServiceLocator>());
            var mockTestEvent1Handler = MockRepository.GenerateMock <Handles <TestEvent1> >();
            var mockTestEvent2Handler = MockRepository.GenerateMock <Handles <TestEvent2> >();

            DomainEvent.RegisterCallback <TestEvent1>(mockTestEvent1Handler.Handle);
            DomainEvent.RegisterCallback <TestEvent2>(mockTestEvent2Handler.Handle);

            var callbacksListFromStorage = Store.Local.Get <IList <Delegate> >(typeof(DomainEvent).FullName + "_Callbacks");

            Assert.That(callbacksListFromStorage, Is.Not.Null);
            Assert.That(callbacksListFromStorage.Count, Is.EqualTo(2));

            DomainEvent.Raise(new TestEvent1());
            mockTestEvent1Handler.AssertWasCalled(x => x.Handle(null), options => options.IgnoreArguments());
            mockTestEvent2Handler.AssertWasNotCalled(x => x.Handle(null), options => options.IgnoreArguments());
        }
예제 #8
0
        public void callbacks_are_cleared_when_clear_is_called()
        {
            var state   = new FakeState();
            var locator = MockRepository.GenerateStub <IServiceLocator>();

            locator.Stub(x => x.GetInstance <IState>()).Return(state);
            ServiceLocator.SetLocatorProvider(() => locator);

            var mockTestEvent1Handler = MockRepository.GenerateMock <Handles <TestEvent1> >();
            var mockTestEvent2Handler = MockRepository.GenerateMock <Handles <TestEvent2> >();

            DomainEvent.RegisterCallback <TestEvent1>(mockTestEvent1Handler.Handle);
            DomainEvent.RegisterCallback <TestEvent2>(mockTestEvent2Handler.Handle);

            var callbacksListFromStorage = state.Local.Get <IList <Delegate> >("DomainEvent.Callbacks");

            Assert.That(callbacksListFromStorage, Is.Not.Null);
            Assert.That(callbacksListFromStorage.Count, Is.EqualTo(2));
            DomainEvent.ClearCallbacks();
            callbacksListFromStorage = state.Local.Get <IList <Delegate> >(typeof(DomainEvent).FullName + "DomainEvent.Callbacks");
            Assert.That(callbacksListFromStorage, Is.Null);
        }
예제 #9
0
        public void registered_callbacks_are_called_when_event_is_raised()
        {
            var state   = new FakeState();
            var locator = MockRepository.GenerateStub <IServiceLocator>();

            locator.Stub(x => x.GetInstance <IState>()).Return(state);
            ServiceLocator.SetLocatorProvider(() => locator);

            var mockTestEvent1Handler = MockRepository.GenerateMock <Handles <TestEvent1> >();
            var mockTestEvent2Handler = MockRepository.GenerateMock <Handles <TestEvent2> >();

            DomainEvent.RegisterCallback <TestEvent1>(mockTestEvent1Handler.Handle);
            DomainEvent.RegisterCallback <TestEvent2>(mockTestEvent2Handler.Handle);

            var callbacksListFromStorage = state.Local.Get <IList <Delegate> >("DomainEvent.Callbacks");

            Assert.That(callbacksListFromStorage, Is.Not.Null);
            Assert.That(callbacksListFromStorage.Count, Is.EqualTo(2));

            DomainEvent.Raise(new TestEvent1());
            mockTestEvent1Handler.AssertWasCalled(x => x.Handle(null), options => options.IgnoreArguments());
            mockTestEvent2Handler.AssertWasNotCalled(x => x.Handle(null), options => options.IgnoreArguments());
        }