コード例 #1
0
    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);
    }
コード例 #2
0
    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)
                                                             );
    }
コード例 #3
0
    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));
    }
コード例 #4
0
    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"
                       ));
        }
    }
コード例 #5
0
    /// <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));
    }
コード例 #6
0
    /// <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));
    }
コード例 #7
0
    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"
                       ));
        }
    }