public void Publish_DoesNotExecuteHandlersForASpecificEvent_When_ThereAreNoGeneralSubscribersAndNoSpecificSubscribersForThatEvent()
        {
            //arrange
            var specificHandlerExecuted1 = false;
            var specificHandlerExecuted2 = false;
            var publisher = new DomainEventPublisher();

            Action <DomainEvent> specificEventHandle1 = domainEventParam =>
            {
                specificHandlerExecuted1 = true;
            };

            Action <DomainEvent> specificEventHandle2 = domainEventParam =>
            {
                specificHandlerExecuted2 = true;
            };

            publisher.Subscribe <TestDomainEvent2>(specificEventHandle1);
            publisher.Subscribe <TestDomainEvent2>(specificEventHandle2);

            //act
            publisher.Publish <TestDomainEvent>(new TestDomainEvent());

            //assert
            Assert.AreEqual(false, specificHandlerExecuted1);
            Assert.AreEqual(false, specificHandlerExecuted2);
        }
        public void Publish_ExecutesOnlySpecificAndGeneralHandlersForEvent_When_ThereIsAMixOfGeneralSubscribersAndSpecificSubcribersForThatEventAndSpecificSubscribersForOtherEvents()
        {
            //arrange
            var generalHandlerExecuted1       = false;
            var generalHandlerExecuted2       = false;
            var specificHandlerExecuted1      = false;
            var specificHandlerExecuted2      = false;
            var specificOtherHandlerExecuted1 = false;
            var specificOtherHandlerExecuted2 = false;
            var publisher       = new DomainEventPublisher();
            var testDomainEvent = new TestDomainEvent();
            Action <DomainEvent> generalEventHandle1 = domainEventParam =>
            {
                generalHandlerExecuted1 = true;
            };
            Action <DomainEvent> generalEventHandle2 = domainEventParam =>
            {
                generalHandlerExecuted2 = true;
            };
            Action <DomainEvent> specificEventHandle1 = domainEventParam =>
            {
                specificHandlerExecuted1 = true;
            };
            Action <DomainEvent> specificEventHandle2 = domainEventParam =>
            {
                specificHandlerExecuted2 = true;
            };
            Action <DomainEvent> specificOtherEventHandle1 = domainEventParam =>
            {
                specificOtherHandlerExecuted1 = true;
            };
            Action <DomainEvent> specificOtherEventHandle2 = domainEventParam =>
            {
                specificOtherHandlerExecuted2 = true;
            };

            publisher.Subscribe <DomainEvent>(generalEventHandle1);
            publisher.Subscribe <DomainEvent>(generalEventHandle2);
            publisher.Subscribe <TestDomainEvent>(specificEventHandle1);
            publisher.Subscribe <TestDomainEvent>(specificEventHandle2);
            publisher.Subscribe <TestDomainEvent2>(specificOtherEventHandle1);
            publisher.Subscribe <TestDomainEvent2>(specificOtherEventHandle2);

            //act
            publisher.Publish <TestDomainEvent>(new TestDomainEvent());

            //assert
            Assert.AreEqual(true, generalHandlerExecuted1);
            Assert.AreEqual(true, generalHandlerExecuted2);
            Assert.AreEqual(true, specificHandlerExecuted1);
            Assert.AreEqual(true, specificHandlerExecuted2);
            Assert.AreEqual(false, specificOtherHandlerExecuted1);
            Assert.AreEqual(false, specificOtherHandlerExecuted2);
        }
コード例 #3
0
    // this is a separate method because you will need to set employerId
    // from multiple locations and should only ever call SetEmployerId
    // internally
    public Result ChangeEmployer(EmployerId id)
    {
        var result = this.SetEmployerId(id);

        if (result.Success)
        {
            DomainEventPublisher.Publish(
                new EmployeeEmployerChanged(id, this.id));
        }
        return(result);
    }
        public void Publish_ExecutesHandleForEvent_When_ThereIsOneGeneralSubscriber()
        {
            //arrange
            var generalHandlerExecuted = false;
            var publisher       = new DomainEventPublisher();
            var testDomainEvent = new TestDomainEvent();
            Action <DomainEvent> domainEventHandle = domainEventParam =>
            {
                generalHandlerExecuted = true;
            };

            publisher.Subscribe <DomainEvent>(domainEventHandle);

            //act
            publisher.Publish <TestDomainEvent>(new TestDomainEvent());

            //assert
            Assert.AreEqual(true, generalHandlerExecuted);
        }
		public void Publish_ExecutesHandleForEvent_When_ThereIsOneGeneralSubscriber()
		{
			//arrange
			var generalHandlerExecuted = false;			
			var publisher = new DomainEventPublisher();
			var testDomainEvent = new TestDomainEvent();			
			Action<DomainEvent> domainEventHandle = domainEventParam =>
			{
				generalHandlerExecuted = true;
			};

			publisher.Subscribe<DomainEvent>(domainEventHandle);

			//act
			publisher.Publish<TestDomainEvent>(new TestDomainEvent());

			//assert
			Assert.AreEqual(true, generalHandlerExecuted);			
		}
        public void Publish_ExecutesHandleForEvent_When_ThereIsOneSpecificSubscriber()
        {
            //arrange
            var specificHandlerExecuted = false;
            var publisher       = new DomainEventPublisher();
            var testDomainEvent = new TestDomainEvent();

            Action <DomainEvent> testDomainEventHandle = testDomainEventParam =>
            {
                specificHandlerExecuted = true;
            };

            publisher.Subscribe <TestDomainEvent>(testDomainEventHandle);

            //act
            publisher.Publish <TestDomainEvent>(new TestDomainEvent());

            //assert
            Assert.AreEqual(specificHandlerExecuted, true);
        }
		public void Publish_ExecutesHandleForEvent_When_ThereIsOneSpecificSubscriber()
		{
			//arrange			
			var specificHandlerExecuted = false;
			var publisher = new DomainEventPublisher();
			var testDomainEvent = new TestDomainEvent();
			
			Action<DomainEvent> testDomainEventHandle = testDomainEventParam => 
			{ 
				specificHandlerExecuted = true; 
			};
			
			publisher.Subscribe<TestDomainEvent>(testDomainEventHandle);
			
			//act
			publisher.Publish<TestDomainEvent>(new TestDomainEvent());
			
			//assert
			Assert.AreEqual(specificHandlerExecuted, true);			
		}
		public void Publish_ExecutesOnlyGeneralHandlersForEvent_When_ThereIsAMixOfGeneralSubscribersAndSpecificSubscribersForOtherEvents()
		{
			//arrange
			var generalHandlerExecuted1 = false;
			var generalHandlerExecuted2 = false;
			var specificHandlerExecuted1 = false;
			var specificHandlerExecuted2 = false;
			var publisher = new DomainEventPublisher();
			var testDomainEvent = new TestDomainEvent();
			Action<DomainEvent> generalEventHandle1 = domainEventParam =>
			{
				generalHandlerExecuted1 = true;
			};
			Action<DomainEvent> generalEventHandle2 = domainEventParam =>
			{
				generalHandlerExecuted2 = true;
			};
			Action<DomainEvent> specificEventHandle1 = domainEventParam =>
			{
				specificHandlerExecuted1 = true;
			};
			Action<DomainEvent> specificEventHandle2 = domainEventParam =>
			{
				specificHandlerExecuted2 = true;
			};

			publisher.Subscribe<DomainEvent>(generalEventHandle1);
			publisher.Subscribe<DomainEvent>(generalEventHandle2);
			publisher.Subscribe<TestDomainEvent2>(specificEventHandle1);
			publisher.Subscribe<TestDomainEvent2>(specificEventHandle2);
			
			//act			
			publisher.Publish<TestDomainEvent>(new TestDomainEvent());			

			//assert
			Assert.AreEqual(true, generalHandlerExecuted1);
			Assert.AreEqual(true, generalHandlerExecuted2);
			Assert.AreEqual(false, specificHandlerExecuted1);
			Assert.AreEqual(false, specificHandlerExecuted2);
		}
		public void Publish_DoesNotExecuteHandlersForASpecificEvent_When_ThereAreNoGeneralSubscribersAndNoSpecificSubscribersForThatEvent()
		{
			//arrange			
			var specificHandlerExecuted1 = false;
			var specificHandlerExecuted2 = false;
			var publisher = new DomainEventPublisher();			

			Action<DomainEvent> specificEventHandle1 = domainEventParam =>
			{
				specificHandlerExecuted1 = true;
			};

			Action<DomainEvent> specificEventHandle2 = domainEventParam =>
			{
				specificHandlerExecuted2 = true;
			};
			
			publisher.Subscribe<TestDomainEvent2>(specificEventHandle1);
			publisher.Subscribe<TestDomainEvent2>(specificEventHandle2);

			//act
			publisher.Publish<TestDomainEvent>(new TestDomainEvent());

			//assert			
			Assert.AreEqual(false, specificHandlerExecuted1);
			Assert.AreEqual(false, specificHandlerExecuted2);
		}