예제 #1
0
        public async Task <IActionResult> Post([FromServices] CadastrarEmpresaPresenter presenter,
                                               [FromServices] CadastrarEmpresaCasoDeUso casoDeUso,
                                               [FromBody] CadastrarEmpresaRequest request)
        {
            var input = new CadastrarEmpresaInput(request.UF, request.NomeFantasia, request.CNPJ);
            await casoDeUso.Execute(input);

            return(presenter.ViewModel);
        }
        public async Task Deve_Adicionar_Notificacao_Se_CNPJ_Ja_Cadastrado()
        {
            var input = new CadastrarEmpresaInput("any_uf", "any_empresa", "33.194.965/0001-11");
            var sut   = CriarSUT();

            _empresaRepositorioMock.Setup(rep => rep.EmpresaJaCadastrada(new Domain.Common.ValueObjects.CNPJ(input.CNPJ))).ReturnsAsync(true);

            await sut.Execute(input);

            _empresaPresenterMock.Verify(presenter => presenter.AddNotification("CNPJ já cadastrado"), Times.Once());
        }
        public async Task Deve_Adicionar_CadastrarEmpresaOutput_Corretamente_Se_Empresa_Cadastrada_Com_Sucesso()
        {
            var input   = new CadastrarEmpresaInput("any_uf", "any_empresa", "33.194.965/0001-11");
            var empresa = _empresaFactory.NovaEmpresa(input.UF, input.NomeFantasia, input.CNPJ);

            _empresaFactoryMock.Setup(f => f.NovaEmpresa(input.UF, input.NomeFantasia, input.CNPJ)).Returns(empresa);

            CadastrarEmpresaOutput result = null;

            _empresaPresenterMock.Setup(presenter => presenter.AddResult(It.IsAny <CadastrarEmpresaOutput>()))
            .Callback((CadastrarEmpresaOutput r) => result = r);

            var sut = CriarSUT(empresaFactoryMock: _empresaFactoryMock);
            await sut.Execute(input);

            Assert.Equal(empresa.Id, result?.Id);
            Assert.Equal(empresa.UF, result?.UF);
            Assert.Equal(empresa.NomeFantasia, result?.NomeFantasia);
            Assert.Equal(empresa.CNPJ.ToString(), result?.CNPJ);
        }