public void PublishingSingleShouldPublishEventToAllRegisteredBuses()
		{
			var firstBusMock = new Mock<IEventBus>();
			var secondBusMock = new Mock<IEventBus>();
			var dispatcher = new EventDispatcher();
			var eventMock = new Mock<IEvent>();
			dispatcher.RegisterBus(firstBusMock.Object);
			dispatcher.RegisterBus(secondBusMock.Object);
			dispatcher.Publish(eventMock.Object);

			firstBusMock.Verify(b => b.Publish(It.IsAny<IEvent>()), Times.Once());
			secondBusMock.Verify(b => b.Publish(It.IsAny<IEvent>()), Times.Once());
		}
		public void PublishingSingleEventShouldPublishEventToRegisteredBus()
		{
			var busMock = new Mock<IEventBus>();
			var dispatcher = new EventDispatcher();
			var eventMock = new Mock<IEvent>();
			dispatcher.RegisterBus(busMock.Object);
			dispatcher.Publish(eventMock.Object);
			
			busMock.Verify(b => b.Publish(It.IsAny<IEvent>()), Times.Once());
		}
		public void PublishingMultipleEvennntsShouldPublishEventsToAllRegisteredBuses()
		{
			var firstBusMock = new Mock<IEventBus>();
			var secondBusMock = new Mock<IEventBus>();
			var dispatcher = new EventDispatcher();
			dispatcher.RegisterBus(firstBusMock.Object);
			dispatcher.RegisterBus(secondBusMock.Object);
			var events = new List<IEvent>();
			for (var i = 0; i < 10; i++)
			{
				var eventMock = new Mock<IEvent>();
				events.Add(eventMock.Object);
			}


			dispatcher.Publish(events);

			firstBusMock.Verify(b => b.Publish(It.IsAny<IEnumerable<IEvent>>()), Times.Once());
			secondBusMock.Verify(b => b.Publish(It.IsAny<IEnumerable<IEvent>>()), Times.Once());
		}