public async Task <IActionResult> CriarQuestaoObjetiva([FromBody] CriarQuestaoObjetivaComando comando) { var(_, isFailure, questaoId, error) = await _mediator.Send(comando, new CancellationToken()); if (isFailure) { return(BadRequest(ErrorObjectResult.Criar("Não foi possível criar a questão", error))); } return(Ok(new { Id = questaoId })); }
public async Task DadoDescricaoInvalida_QuandoCriarQuestaoObjetiva_DevoReceberErro() { var comando = new CriarQuestaoObjetivaComando(_nivelEnsinoId, _disciplinaId, "", new CriarQuestaoObjetivaComando.Opcao[] { _opcaoCorreta, _opcaoIncorreta }); var(_, isFailure, _, error) = await _handler.Handle(comando, new CancellationToken()); isFailure.ShouldBeTrue(); error.ShouldBe(QuestoesMotivosErro.DescricaoObrigatoria); }
public async Task DadoNivelEnsinoInexistente_QuandoCriarQuestaoObjetiva_DevoReceberErro() { var comando = new CriarQuestaoObjetivaComando(75546, _disciplinaId, _descricao, new CriarQuestaoObjetivaComando.Opcao[] { _opcaoCorreta, _opcaoIncorreta }); var(_, isFailure, _, error) = await _handler.Handle(comando, new CancellationToken()); isFailure.ShouldBeTrue(); error.ShouldBe(QuestoesMotivosErro.NivelEnsinoNaoLocalizado); }
public async Task DadoParametrosValidos_QuandoCriarQuestaoObjetiva_DevoSalvarAlteracoesCorretamente() { var comando = new CriarQuestaoObjetivaComando(_nivelEnsinoId, _disciplinaId, _descricao, new CriarQuestaoObjetivaComando.Opcao[] { _opcaoCorreta, _opcaoIncorreta }); var(isSuccess, _, id, _) = await _handler.Handle(comando, new CancellationToken()); isSuccess.ShouldBeTrue(); id.ShouldBeGreaterThan(0); var questao = await _context.Questoes.FirstOrDefaultAsync(c => c.Id == id); questao.ShouldNotBeNull(); questao.Descricao.ShouldBe(_descricao); questao.DisciplinaId.ShouldBe(_disciplinaId); questao.NivelEnsinoId.ShouldBe(_nivelEnsinoId); questao.ShouldBeOfType(typeof(QuestaoObjetiva)); var objetiva = questao as QuestaoObjetiva; objetiva?.Opcoes.FirstOrDefault(c => c.Correta)?.Texto.ShouldBe(_opcaoCorreta.Texto); objetiva?.Opcoes.FirstOrDefault(c => !c.Correta)?.Texto.ShouldBe(_opcaoIncorreta.Texto); }