public async Task UpdateChoiceTemplateAsync_UpdatedDto_ReturnsRegisteredDto() { _context.ChoiceTemplates.Add(new ChoiceTemplate { ChoiceTemplateId = 3, Choices = new List <Option> { new Option { OptionId = 1, Description = "choice1" }, new Option { OptionId = 2, Description = "choice2" } } }); _context.SaveChanges(); var target = new CategoryRepository(_context, _mapper); var dto = new ChoiceTemplateDto { ChoiceTemplateId = 3, // Choices = new List<OptionDto> // { // new OptionDto { OptionId = 1, Description = "newChoice1" }, // new OptionDto { OptionId = 2, Description = "newChoice2" } // } }; var actualDto = await target.UpdateChoiceTemplateAsync(dto); Assert.Equal(3, actualDto.ChoiceTemplateId); var actualEntity = _context.ChoiceTemplates.First(); Assert.Equal(3, actualEntity.ChoiceTemplateId); }
public async Task UpdateChoiceTemplateAsync_NonExistentId_ThrowsException() { _context.ChoiceTemplates.Add(new ChoiceTemplate { ChoiceTemplateId = 3, Choices = new List <Option> { new Option { OptionId = 1, Description = "choice1" }, new Option { OptionId = 2, Description = "choice2" } } }); _context.SaveChanges(); var target = new CategoryRepository(_context, _mapper); var dto = new ChoiceTemplateDto { ChoiceTemplateId = 2, }; await Assert.ThrowsAsync <InvalidOperationException>(() => target.UpdateChoiceTemplateAsync(dto) ); }
public async Task CreateChoiceTemplateAsync_NewDto_ReturnsRegisteredDto() { var target = new CategoryRepository(_context, _mapper); var dto = new ChoiceTemplateDto { Choices = new List <OptionDto> { new OptionDto { Description = "choice1" }, new OptionDto { Description = "choice2" } } }; var actualDto = await target.CreateChoiceTemplateAsync(dto); var choices = new List <string> { "choice1", "choice2" }; Assert.NotEqual(0, actualDto.ChoiceTemplateId); Assert.DoesNotContain(actualDto.Choices, x => x.OptionId == 0); Assert.Contains(actualDto.Choices, x => choices.Contains(x.Description)); var actualEntity = _context.ChoiceTemplates.First(); Assert.NotEqual(0, actualEntity.ChoiceTemplateId); Assert.DoesNotContain(actualEntity.Choices, x => x.OptionId == 0); Assert.Contains(actualEntity.Choices, x => choices.Contains(x.Description)); }
public async Task <IActionResult> UpdateChoiceTemplateAsync( [Required][FromRoute] int id, [Required][FromBody] ChoiceTemplateDto dto) { try { _logger.LogInformation($"try to update choice template {dto.ChoiceTemplateId}"); if (id != dto.ChoiceTemplateId) { return(BadRequest("Invalid ID supplied")); } if (!_repository.ChoiceTemplateExists(dto.ChoiceTemplateId)) { return(NotFound($"Template with Id = {dto.ChoiceTemplateId} not found")); } var result = await _repository.UpdateChoiceTemplateAsync(dto); return(CreatedAtAction( nameof(GetChoiceTemplateById), new { id = result.ChoiceTemplateId }, result )); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode( StatusCodes.Status500InternalServerError, "Internal Sever Error" )); } }
/// <inheritdoc/> public async Task <ChoiceTemplateDto> CreateChoiceTemplateAsync(ChoiceTemplateDto dto) { var entity = _mapper.Map <ChoiceTemplate>(dto); await _context.ChoiceTemplates.AddAsync(entity); await _context.SaveChangesAsync(); return(_mapper.Map <ChoiceTemplateDto>(entity)); }
/// <inheritdoc/> public async Task <ChoiceTemplateDto> UpdateChoiceTemplateAsync(ChoiceTemplateDto dto) { var entity = await _context.ChoiceTemplates .Include(x => x.Choices) .SingleAsync(x => x.ChoiceTemplateId == dto.ChoiceTemplateId); if (entity is not null) { _mapper.Map(dto, entity); _context.ChoiceTemplates.Update(entity); await _context.SaveChangesAsync(); } return(_mapper.Map <ChoiceTemplateDto>(entity)); }
public async Task <IActionResult> CreateChoiceTemplateAsync([Required][FromBody] ChoiceTemplateDto dto) { try { _logger.LogInformation("try to create choice template"); var result = await _repository.CreateChoiceTemplateAsync(dto); return(CreatedAtAction( nameof(GetChoiceTemplateById), new { id = result.ChoiceTemplateId }, result )); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode( StatusCodes.Status500InternalServerError, "Internal Sever Error" )); } }