public void DadoTextoVazio_QuandoCriarOpcaoCorreta_DevoReceberFalha() { var opcao = Opcao.CriarCorreta(""); opcao.IsFailure.ShouldBeTrue(); opcao.Error.ShouldBe(QuestoesMotivosErro.TextoOpcaoObrigatorio); }
public void DadoValorDeId_QuandoCriarOpcaoCorreta_DevoOpcaoComIdInformado() { const int id = 1231; var opcao = Opcao.CriarCorreta(_texto, id); opcao.IsSuccess.ShouldBeTrue(); opcao.Value.Id.ShouldBe(id); }
public void DadoTextoValido_QuandoCriarOpcaoCorreta_DevoOpcaoCriadaCorretamente() { var opcao = Opcao.CriarCorreta(_texto); opcao.IsSuccess.ShouldBeTrue(); opcao.Value.Id.ShouldBe(0); opcao.Value.Texto.ShouldBe(_texto); opcao.Value.Correta.ShouldBeTrue(); }
public async Task <Result <int> > Handle(CriarQuestaoObjetivaComando request, CancellationToken cancellationToken) { var disciplina = await _disciplinasRepositorio.RecuperarAsync(request.DisciplinaId, cancellationToken); if (disciplina.HasNoValue) { return(Result.Failure <int>(QuestoesMotivosErro.DisciplinaNaoFoiLocalizada)); } var nivelEnsino = await _niveisEnsinoRepositorio.RecuperarAsync(request.NivelEnsinoId, cancellationToken); if (nivelEnsino.HasNoValue) { return(Result.Failure <int>(QuestoesMotivosErro.NivelEnsinoNaoLocalizado)); } var opcoes = request.Opcoes.Select(c => c.Correta ? Opcao.CriarCorreta(c.Texto) : Opcao.CriarIncorreta(c.Texto)) .ToList(); var(_, opcoesisFailure, opcoesError) = Result.Combine(opcoes); if (opcoesisFailure) { return(Result.Failure <int>(opcoesError)); } var(_, isFailure, questao, error) = QuestaoObjetiva.Criar(disciplina.Value.Id, nivelEnsino.Value.Id, request.Descricao, opcoes.Select(c => c.Value).ToList()); if (isFailure) { return(Result.Failure <int>(error)); } await _opcoesRepositorio.AdicionarAsync(questao, cancellationToken); await _opcoesRepositorio.UnitOfWork.SaveEntitiesAsync(cancellationToken); return(Result.Success(questao.Id)); }