Exemplo n.º 1
0
        UserRegisterCommand_WithRequiredPropertiesNotInformed_Handle_ShouldReturnAllErrors()
        {
            //Arrange
            DomainEvent.Register <DomainNotification>(dn => _notifications.Add(dn));

            _mocker.GetMock <IValidationService>()
            .Setup(v => v.Validate(It.IsAny <ICommand>()))
            .Returns(() => true);

            var invalidCommand = new UserRegisterCommandBuilder();

            var handler = _mocker.Resolve <UserCommandHandler>();

            //Act
            handler.Handle(invalidCommand);

            //Assert
            _notifications.Should()
            .NotBeEmpty()
            .And.Contain(n => n.Value == Domain.Main.Resources.Messages.EmailRequired)
            .And.Contain(n => n.Value == Domain.Main.Resources.Messages.UserRegisterPasswordRequired)
            .And.HaveCount(2);

            _mocker.GetMock <IValidationService>().Verify(x => x.Validate(It.IsAny <ICommand>()), Times.Once());
            _mocker.GetMock <IPersonRepository>().Verify(x => x.GetByEmail(It.IsAny <string>()), Times.Never());
        }
Exemplo n.º 2
0
        UserRegisterCommand_WithInvalidPropertiesFromRepositories_Handle_ShouldReturnAllErrors()
        {
            //Arrange
            DomainEvent.Register <DomainNotification>(dn => _notifications.Add(dn));

            _mocker.GetMock <IValidationService>()
            .Setup(v => v.Validate(It.IsAny <ICommand>()))
            .Returns(() => true);

            var existingUserEmail = "*****@*****.**";

            var invalidCommand = new UserRegisterCommandBuilder()
                                 .WithPassword("123")
                                 .WithEmail(existingUserEmail);

            _mocker.GetMock <IPersonRepository>()
            .Setup(u => u.GetByEmail(It.IsAny <string>()))
            .Returns(() => new PersonBuilder()
                     .WithEmail(existingUserEmail));

            var handler = _mocker.Resolve <UserCommandHandler>();

            //Act
            handler.Handle(invalidCommand);

            //Assert
            _notifications.Should()
            .NotBeEmpty()
            .And.HaveCount(1)
            .And.Contain(n => n.Value == Domain.Main.Resources.Messages.UserRegisterEmailAlreadyTaken);

            _mocker.GetMock <IValidationService>().Verify(x => x.Validate(It.IsAny <ICommand>()), Times.Once());
            _mocker.GetMock <IPersonRepository>().Verify(x => x.GetByEmail(It.IsAny <string>()), Times.Once());
        }
Exemplo n.º 3
0
        public void UserRegisterCommand_Valid_Handle_ShouldReturnSuccessAndRegisterUserProperly()
        {
            //Arrange
            DomainEvent.Register <DomainNotification>(dn => _notifications.Add(dn));

            _mocker.GetMock <IValidationService>()
            .Setup(v => v.Validate(It.IsAny <ICommand>()))
            .Returns(() => true);

            Person person = null;

            var validCommand = new UserRegisterCommandBuilder()
                               .WithPassword("12345")
                               .WithEmail("*****@*****.**");

            _mocker.GetMock <IPersonRepository>()
            .Setup(u => u.GetByEmail(It.IsAny <string>()))
            .Returns(() => null);

            _mocker.GetMock <IPersonRepository>()
            .Setup(u => u.Add(It.IsAny <Person>()))
            .Callback((Person u) =>
            {
                person = new PersonBuilder()
                         .WithPersonId(u.PersonId)
                         .WithSerialKey(u.SerialKey);
            })
            .Returns(() => person);

            var handler = _mocker.Resolve <UserCommandHandler>();

            //Act
            var commandResult = handler.Handle(validCommand);

            //Assert
            _notifications.Should().BeEmpty();
            person.Should().NotBeNull();
            person.PersonId.Should().NotBe(Guid.Empty);
            person.SerialKey.Should().NotBeEmpty();
            person.Active.Should().BeTrue();
            commandResult.Should().BeEquivalentTo(new UserRegisterCommandResult()
            {
                SerialKey = person.SerialKey
            });

            _mocker.GetMock <IValidationService>().Verify(x => x.Validate(It.IsAny <ICommand>()), Times.Once());
            _mocker.GetMock <IPersonRepository>().Verify(x => x.GetByEmail(It.IsAny <string>()), Times.Once());
            _mocker.GetMock <IPersonRepository>().Verify(x => x.Add(It.IsAny <Person>()), Times.Once());
        }