Compare commits

...

3 Commits

Author SHA1 Message Date
ce4e5848db fix: unserializable objects in HTTP-responses
All checks were successful
.NET Tests / test (push) Successful in 1m18s
2025-04-03 13:33:05 +02:00
421d33df99 Tests: Remove old DBContext to use custom Testcontainer DB 2025-04-03 13:32:15 +02:00
418153ffce remove debug message 2025-04-03 13:31:44 +02:00
3 changed files with 18 additions and 14 deletions

View File

@ -17,7 +17,7 @@ public class StreetController : ControllerBase
public async Task<IActionResult> CreateStreet([FromBody] CreateStreetDTO dto) public async Task<IActionResult> CreateStreet([FromBody] CreateStreetDTO dto)
{ {
if (dto == null) if (dto == null)
return BadRequest("Invalid request body."); return BadRequest();
try try
{ {
@ -28,9 +28,9 @@ public class StreetController : ControllerBase
return Created(); return Created();
} }
catch (InvalidOperationException ex) catch
{ {
return Conflict(ex); return Conflict();
} }
} }
@ -43,9 +43,9 @@ public class StreetController : ControllerBase
var street = await StreetService.GetStreetAsync(streetname); var street = await StreetService.GetStreetAsync(streetname);
return Ok(street); return Ok(street);
} }
catch (KeyNotFoundException ex) catch
{ {
return NotFound(ex); return NotFound();
} }
} }
@ -55,7 +55,7 @@ public class StreetController : ControllerBase
{ {
var deleted = await StreetService.DeleteStreetAsync(streetname); var deleted = await StreetService.DeleteStreetAsync(streetname);
if (!deleted) if (!deleted)
return NotFound($"Street '{streetname}' not found."); return NotFound();
return NoContent(); return NoContent();
} }
@ -65,24 +65,24 @@ public class StreetController : ControllerBase
public async Task<IActionResult> AddPoint(string streetname, [FromBody] AddPointDTO dto) public async Task<IActionResult> AddPoint(string streetname, [FromBody] AddPointDTO dto)
{ {
if (dto == null) if (dto == null)
return BadRequest("Invalid request body."); return BadRequest();
try try
{ {
await StreetService.AddPointAsync(streetname, StreetService.ToGeometryPoint(dto.Point), dto.usePostGIS); await StreetService.AddPointAsync(streetname, StreetService.ToGeometryPoint(dto.Point), dto.usePostGIS);
return Ok(); return Ok();
} }
catch (KeyNotFoundException ex) catch (KeyNotFoundException)
{ {
return NotFound(ex); return NotFound();
} }
catch (ArgumentException ex) catch (ArgumentException)
{ {
return BadRequest(ex); return BadRequest();
} }
catch catch
{ {
return Conflict("Concurrency conflict. Please retry your request."); return Conflict();
} }
} }
} }

View File

@ -32,8 +32,6 @@ public class APITests : IClassFixture<StreetWebApplicationFactory<Program>>
geometry = new[] { new { x = 10, y = 20 }, new { x = 15, y = 25 } } geometry = new[] { new { x = 10, y = 20 }, new { x = 15, y = 25 } }
}; };
Console.WriteLine(JsonConvert.SerializeObject(street));
var post_response = await client.PostAsJsonAsync("/api/streets/", street); var post_response = await client.PostAsJsonAsync("/api/streets/", street);
post_response.StatusCode.Should().Be(System.Net.HttpStatusCode.Created); post_response.StatusCode.Should().Be(System.Net.HttpStatusCode.Created);

View File

@ -18,6 +18,12 @@ public class StreetWebApplicationFactory<Program> : WebApplicationFactory<Progra
builder.ConfigureServices(services => builder.ConfigureServices(services =>
{ {
var descriptor = services.SingleOrDefault(d => d.ServiceType == typeof(DbContextOptions<StreetDbContext>));
if (descriptor != null)
{
services.Remove(descriptor);
}
// Use the test database // Use the test database
services.AddDbContext<StreetDbContext>(options => options.UseNpgsql(dbTestContainer.GetConnectionString(), o => o.UseNetTopologySuite())); services.AddDbContext<StreetDbContext>(options => options.UseNpgsql(dbTestContainer.GetConnectionString(), o => o.UseNetTopologySuite()));