public void WhenAFakeUserIsCreated_TheVersionIsOne()
        {
            // Arrange
            IEventStore       eventStore       = new MockEventStore(new List <IAggregateEvent>());
            IEventBus         eventBus         = new MockEventBus();
            IDateTimeProvider dateTimeProvider = new DateTimeProvider();
            Guid   userGuid = Guid.NewGuid();
            string username = "******";

            // Act
            FakeUser fakeUser = FakeUser.CreateNew(userGuid, eventStore, eventBus, dateTimeProvider, dateTimeProvider.CurrentDateTime, username);

            // Assert
            Assert.AreEqual(1, fakeUser.Version);
        }
        public void WhenAFakeUserIsCreated_TheEventIsPublishedToTheEventBus()
        {
            // Arrange
            IEventStore       eventStore       = new MockEventStore(new List <IAggregateEvent>());
            MockEventBus      eventBus         = new MockEventBus();
            IDateTimeProvider dateTimeProvider = new DateTimeProvider();
            Guid   userGuid = Guid.NewGuid();
            string username = "******";

            // Act
            FakeUser fakeUser = FakeUser.CreateNew(userGuid, eventStore, eventBus, dateTimeProvider, dateTimeProvider.CurrentDateTime, username);

            // Assert
            Assert.IsTrue(eventBus.PublishedEvents.Count() >= 1);

            IEvent @event = eventBus.PublishedEvents.Dequeue();

            Assert.IsInstanceOfType(@event, typeof(FakeUserCreated));
        }