public void OnCreateUser_Should_Emit_UserCreatedEvent()
        {
            Given(aggregate => { });

            var fullname = Fullname.Create(Faker.Name.FirstName(), Faker.Name.LastName());
            var email    = Email.Create($"{Faker.Random.Word()}@example.com");
            var password = Password.Create(Faker.Random.Word());

            var start = DateTimeUtc.Now();

            When(aggregate =>
            {
                aggregate.Create(
                    fullname,
                    email,
                    password);
            });
            var end = DateTimeUtc.Now();

            Then(aggregate =>
            {
                aggregate.Fullname.Should().Be(fullname);
                aggregate.Email.Should().Be(email);
                aggregate.Password.Should().Be(password);
            });

            Then <UserCreatedEvent>((aggregate, @event) =>
            {
                @event.Firstname.Should().Be(fullname.Firstname);
                @event.Lastname.Should().Be(fullname.Lastname);
                @event.Email.Should().Be(email.ToString());
                @event.Password.Should().Be(password.ToString());
                @event.CreatedOn.Should().NotBe(default);
Ejemplo n.º 2
0
        protected void Emit(IDomainEvent @event)
        {
            if (_unCommittedEvents.Any(e => e.EventId == @event.EventId))
            {
                return;
            }

            @event.SetProperty(nameof(@event.CreatedOn), DateTimeUtc.Now().Value);

            Apply(@event);
            _unCommittedEvents.Add(@event);
        }