PageRenderTime 50ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/Source/Bifrost.Tests/Events/EventDispatcherTests.cs

#
C# | 80 lines | 67 code | 13 blank | 0 comment | 2 complexity | d690a39ef5fc6d8f26ab48d0ff9d2259 MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. using System.Collections.Generic;
  2. using Bifrost.Events;
  3. using Moq;
  4. using NUnit.Framework;
  5. namespace Bifrost.Tests.Events
  6. {
  7. [TestFixture]
  8. public class EventDispatcherTests
  9. {
  10. [Test]
  11. public void PublishingSingleEventShouldPublishEventToRegisteredBus()
  12. {
  13. var busMock = new Mock<IEventBus>();
  14. var dispatcher = new EventDispatcher();
  15. var eventMock = new Mock<IEvent>();
  16. dispatcher.RegisterBus(busMock.Object);
  17. dispatcher.Publish(eventMock.Object);
  18. busMock.Verify(b => b.Publish(It.IsAny<IEvent>()), Times.Once());
  19. }
  20. [Test]
  21. public void PublishingSingleShouldPublishEventToAllRegisteredBuses()
  22. {
  23. var firstBusMock = new Mock<IEventBus>();
  24. var secondBusMock = new Mock<IEventBus>();
  25. var dispatcher = new EventDispatcher();
  26. var eventMock = new Mock<IEvent>();
  27. dispatcher.RegisterBus(firstBusMock.Object);
  28. dispatcher.RegisterBus(secondBusMock.Object);
  29. dispatcher.Publish(eventMock.Object);
  30. firstBusMock.Verify(b => b.Publish(It.IsAny<IEvent>()), Times.Once());
  31. secondBusMock.Verify(b => b.Publish(It.IsAny<IEvent>()), Times.Once());
  32. }
  33. [Test]
  34. public void PublishingMultipleEventsShouldPublishEventsToRegisteredBus()
  35. {
  36. var busMock = new Mock<IEventBus>();
  37. var dispatcher = new EventDispatcher();
  38. var events = new List<IEvent>();
  39. for( var i=0; i<10; i++ )
  40. {
  41. var eventMock = new Mock<IEvent>();
  42. events.Add(eventMock.Object);
  43. }
  44. dispatcher.RegisterBus(busMock.Object);
  45. dispatcher.Publish(events);
  46. busMock.Verify(b => b.Publish(It.IsAny<IEnumerable<IEvent>>()), Times.Once());
  47. }
  48. [Test]
  49. public void PublishingMultipleEvennntsShouldPublishEventsToAllRegisteredBuses()
  50. {
  51. var firstBusMock = new Mock<IEventBus>();
  52. var secondBusMock = new Mock<IEventBus>();
  53. var dispatcher = new EventDispatcher();
  54. dispatcher.RegisterBus(firstBusMock.Object);
  55. dispatcher.RegisterBus(secondBusMock.Object);
  56. var events = new List<IEvent>();
  57. for (var i = 0; i < 10; i++)
  58. {
  59. var eventMock = new Mock<IEvent>();
  60. events.Add(eventMock.Object);
  61. }
  62. dispatcher.Publish(events);
  63. firstBusMock.Verify(b => b.Publish(It.IsAny<IEnumerable<IEvent>>()), Times.Once());
  64. secondBusMock.Verify(b => b.Publish(It.IsAny<IEnumerable<IEvent>>()), Times.Once());
  65. }
  66. }
  67. }