Implement GET in FeedbackReceiversController.cs
This commit is contained in:
parent
2eb29a4a25
commit
b4021724f2
7 changed files with 59 additions and 18 deletions
|
@ -45,10 +45,10 @@ namespace Retroactiune.IntegrationTests.Retroactiune.WebAPI.Controllers
|
|||
{
|
||||
// Arrange
|
||||
var fixture = new Fixture();
|
||||
var item = fixture.Create<FeedbackReceiverDto>();
|
||||
var item = fixture.Create<FeedbackReceiverInDto>();
|
||||
item.Name = null;
|
||||
|
||||
var jsonContent = JsonSerializer.Serialize(new List<FeedbackReceiverDto> {item});
|
||||
var jsonContent = JsonSerializer.Serialize(new List<FeedbackReceiverInDto> {item});
|
||||
|
||||
// Test
|
||||
var httpResponse = await _client.PostAsync("/api/v1/FeedbackReceivers/",
|
||||
|
@ -63,10 +63,10 @@ namespace Retroactiune.IntegrationTests.Retroactiune.WebAPI.Controllers
|
|||
{
|
||||
// Arrange
|
||||
var fixture = new Fixture();
|
||||
var item = fixture.Create<FeedbackReceiverDto>();
|
||||
var item = fixture.Create<FeedbackReceiverInDto>();
|
||||
item.Description = null;
|
||||
|
||||
var jsonContent = JsonSerializer.Serialize(new List<FeedbackReceiverDto> {item});
|
||||
var jsonContent = JsonSerializer.Serialize(new List<FeedbackReceiverInDto> {item});
|
||||
|
||||
// Test
|
||||
var httpResponse = await _client.PostAsync("/api/v1/FeedbackReceivers/",
|
||||
|
@ -77,7 +77,7 @@ namespace Retroactiune.IntegrationTests.Retroactiune.WebAPI.Controllers
|
|||
}
|
||||
|
||||
[Theory, AutoData]
|
||||
public async Task Test_CreateFeedbackReceiver_Ok(IEnumerable<FeedbackReceiverDto> items)
|
||||
public async Task Test_CreateFeedbackReceiver_Ok(IEnumerable<FeedbackReceiverInDto> items)
|
||||
{
|
||||
// Arrange
|
||||
await _mongoDb.DropAsync();
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace Retroactiune.Tests.Retroactiune.WebAPI.Controllers
|
|||
|
||||
// Test
|
||||
var controller = new FeedbackReceiversController(mockService.Object, mapper, null);
|
||||
var result = await controller.Post(new List<FeedbackReceiverDto>());
|
||||
var result = await controller.Post(new List<FeedbackReceiverInDto>());
|
||||
|
||||
// Assert, null because we don't have the ApiBehaviourOptions set, which would generate the IActionResult for the invalid input.
|
||||
Assert.Null(result);
|
||||
|
@ -29,7 +29,7 @@ namespace Retroactiune.Tests.Retroactiune.WebAPI.Controllers
|
|||
}
|
||||
|
||||
[Theory, AutoData]
|
||||
public async Task Post_Successful_Creation_Two_items(IEnumerable<FeedbackReceiverDto> items)
|
||||
public async Task Post_Successful_Creation_Two_items(IEnumerable<FeedbackReceiverInDto> items)
|
||||
{
|
||||
// Arrange
|
||||
var mapper = TestUtils.GetMapper();
|
||||
|
|
|
@ -39,12 +39,12 @@ namespace Retroactiune.Controllers
|
|||
[HttpPost]
|
||||
[ProducesResponseType(typeof(BasicResponse), StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
public async Task<IActionResult> Post([Required] IEnumerable<FeedbackReceiverDto> items)
|
||||
public async Task<IActionResult> Post([Required] IEnumerable<FeedbackReceiverInDto> items)
|
||||
{
|
||||
var feedbackReceiversDto = items.ToList();
|
||||
if (!feedbackReceiversDto.Any())
|
||||
{
|
||||
ModelState.AddModelError(nameof(IEnumerable<FeedbackReceiverDto>),
|
||||
ModelState.AddModelError(nameof(IEnumerable<FeedbackReceiverInDto>),
|
||||
"At least one FeedbackReceiver item is required.");
|
||||
return _apiBehaviorOptions?.Value.InvalidModelStateResponseFactory(ControllerContext);
|
||||
}
|
||||
|
@ -82,14 +82,32 @@ namespace Retroactiune.Controllers
|
|||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpGet("{id}")]
|
||||
public BasicResponse Get(long id)
|
||||
/// <summary>
|
||||
/// Retrieves a FeedbackReceiver item from the database.
|
||||
/// </summary>
|
||||
/// <param name="guid">The guid of the item to be retrieved.</param>
|
||||
/// <returns>A Ok result with a <see cref="FeedbackReceiverOutDto"/>.</returns>
|
||||
/// <response code="200">The item returned successfully.</response>
|
||||
/// <response code="400">The request is invalid.</response>
|
||||
/// <response code="404">The item was not found.</response>
|
||||
[HttpGet("{guid}")]
|
||||
[ProducesResponseType(typeof(FeedbackReceiverOutDto), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(BasicResponse), StatusCodes.Status404NotFound)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
public async Task<IActionResult> Get(
|
||||
[StringLength(24, ErrorMessage = "invalid guid, must be 24 characters", MinimumLength = 24)]
|
||||
string guid)
|
||||
{
|
||||
// get feedback item from db
|
||||
return new BasicResponse()
|
||||
var result = await _service.FindAsync(new[] {guid});
|
||||
if (!result.Any())
|
||||
{
|
||||
Message = "hwlo"
|
||||
};
|
||||
return NotFound(new BasicResponse()
|
||||
{
|
||||
Message = $"Item with guid {guid} was not found."
|
||||
});
|
||||
}
|
||||
|
||||
return Ok(result.First());
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace Retroactiune
|
|||
{
|
||||
public MappingProfile()
|
||||
{
|
||||
CreateMap<FeedbackReceiver, FeedbackReceiverDto>().ReverseMap();
|
||||
CreateMap<FeedbackReceiver, FeedbackReceiverInDto>().ReverseMap();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,9 +3,9 @@
|
|||
namespace Retroactiune.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// FeedbackReceiverDto is the DTO for <see cref="FeedbackReceiver"/>
|
||||
/// FeedbackReceiverInDto is the DTO for <see cref="FeedbackReceiver"/>, used in incoming requests.
|
||||
/// </summary>
|
||||
public class FeedbackReceiverDto
|
||||
public class FeedbackReceiverInDto
|
||||
{
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
|
@ -13,4 +13,11 @@ namespace Retroactiune.Models
|
|||
[Required]
|
||||
public string Description { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// FeedbackReceiverDto is the DTO for <see cref="FeedbackReceiver"/>, used in outgoing requests.
|
||||
/// </summary>
|
||||
public class FeedbackReceiverOutDto : FeedbackReceiver
|
||||
{
|
||||
}
|
||||
}
|
|
@ -56,5 +56,20 @@ namespace Retroactiune.Services
|
|||
throw new GenericServiceException($"Operation failed: {e.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<FeedbackReceiver>> FindAsync(IEnumerable<string> guids)
|
||||
{
|
||||
try
|
||||
{
|
||||
var filter = new FilterDefinitionBuilder<FeedbackReceiver>();
|
||||
|
||||
var cursor = await _collection.FindAsync(filter.In(i => i.Id, guids));
|
||||
return cursor.ToList();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new GenericServiceException($"Operation failed: {e.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,5 +8,6 @@ namespace Retroactiune.Services
|
|||
{
|
||||
public Task CreateManyAsync(IEnumerable<FeedbackReceiver> items);
|
||||
public Task DeleteOneAsync(string guid);
|
||||
Task<IEnumerable<FeedbackReceiver>> FindAsync(IEnumerable<string> guid);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue