コード例 #1
0
        public async void CreateDeveloperTest(
            Status expectedStatus,
            bool validCPF = false
            )
        {
            var developerDto = new DeveloperCreateDto
            {
                Name     = RandomHelper.RandomString(),
                Login    = RandomHelper.RandomString(),
                Password = RandomHelper.RandomNumbers(),
                CPF      = RandomHelper.RandomNumbers(11)
            };
            var developersPersisted = new List <Developer>();

            _developerRepository.Setup(d => d.CreateAsync(Capture.In(developersPersisted)));
            _developerRepository.Setup(d => d.ExistByLoginAsync(developerDto.Login, default))
            .ReturnsAsync(expectedStatus == Status.Conflict);
            _mockyRepository.Setup(m => m.ValidateCPFAsync(developerDto.CPF))
            .ReturnsAsync(new Result <bool>(validCPF));

            var service = new DeveloperService(_developerRepository.Object, _workRepository.Object, _mockyRepository.Object);
            var result  = await service.CreateDeveloperAsync(developerDto);

            Assert.Equal(expectedStatus, result.Status);
            if (expectedStatus == Status.Success)
            {
                _developerRepository.Verify(d => d.CreateAsync(It.IsAny <Developer>()), Times.Once);
                _mockyRepository.Verify(d => d.ValidateCPFAsync(developerDto.CPF), Times.Once);
                var developer = developersPersisted.Single();
                Assert.Equal(developerDto.Name, developer.Name);
                Assert.Equal(developerDto.Login, developer.Login);
                Assert.Equal(developerDto.CPF, developer.CPF);
                Assert.Equal(MD5Crypto.Encode(developerDto.Password), developer.PasswordHash);
            }
            else
            {
                _developerRepository.Verify(d => d.CreateAsync(It.IsAny <Developer>()), Times.Never);
            }
        }