Adding consume property to create/update spawnable dtos

This commit is contained in:
hz
2025-06-09 19:07:48 -05:00
parent 83030c2a4e
commit 603a18e006
5 changed files with 16 additions and 6 deletions
+2 -2
View File
@@ -94,7 +94,7 @@ public class PlayerController : ControllerBase
} }
[HttpPut] [HttpPut]
[Authorize(Roles = "SUPER")] [Authorize(Roles = "USER,SUPER")]
public async Task<IActionResult> Update([FromBody] UpdatePlayerRequest req) public async Task<IActionResult> Update([FromBody] UpdatePlayerRequest req)
{ {
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
@@ -109,7 +109,7 @@ public class PlayerController : ControllerBase
} }
[HttpDelete] [HttpDelete]
[Authorize(Roles = "SUPER")] [Authorize(Roles = "USER,SUPER")]
public async Task<IActionResult> Delete() public async Task<IActionResult> Delete()
{ {
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
+3 -1
View File
@@ -26,7 +26,8 @@ public class SpawnableController : ControllerBase
Name = req.Name.ToLower(), Name = req.Name.ToLower(),
SpawnRate = req.SpawnRate, SpawnRate = req.SpawnRate,
CollectAction = req.CollectAction, CollectAction = req.CollectAction,
CollectResults = req.CollectResults CollectResults = req.CollectResults,
ConsumeOnSuccess = req.ConsumeOnSuccess
}; };
await _spawnableService.CreateAsync(spawnable); await _spawnableService.CreateAsync(spawnable);
@@ -45,6 +46,7 @@ public class SpawnableController : ControllerBase
spawnable.SpawnRate = req.SpawnRate; spawnable.SpawnRate = req.SpawnRate;
spawnable.CollectAction = req.CollectAction; spawnable.CollectAction = req.CollectAction;
spawnable.CollectResults = req.CollectResults; spawnable.CollectResults = req.CollectResults;
spawnable.ConsumeOnSuccess = req.ConsumeOnSuccess;
await _spawnableService.UpdateAsync(spawnable); await _spawnableService.UpdateAsync(spawnable);
return Ok(spawnable); return Ok(spawnable);
@@ -21,7 +21,8 @@ public class SpawnableControllerTests
sp.CollectAction == "gather" && sp.CollectAction == "gather" &&
sp.CollectResults.Count == 2 && sp.CollectResults.Count == 2 &&
sp.CollectResults[0].Result == "resource" && sp.CollectResults[0].Result == "resource" &&
sp.CollectResults[0].SuccessRate == 75))) sp.CollectResults[0].SuccessRate == 75 &&
sp.ConsumeOnSuccess)))
.Returns(Task.CompletedTask).Verifiable(); .Returns(Task.CompletedTask).Verifiable();
var controller = new SpawnableController(svc.Object); var controller = new SpawnableController(svc.Object);
@@ -34,7 +35,8 @@ public class SpawnableControllerTests
{ {
new() { Result = "resource", SuccessRate = 75 }, new() { Result = "resource", SuccessRate = 75 },
new() { Result = "nothing", SuccessRate = 25 } new() { Result = "nothing", SuccessRate = 25 }
} },
ConsumeOnSuccess = true
}); });
Assert.IsType<OkObjectResult>(result); Assert.IsType<OkObjectResult>(result);
@@ -74,7 +76,7 @@ public class SpawnableControllerTests
svc.Setup(s => s.GetByIdAsync("id")).ReturnsAsync((Spawnable)null); svc.Setup(s => s.GetByIdAsync("id")).ReturnsAsync((Spawnable)null);
var controller = new SpawnableController(svc.Object); var controller = new SpawnableController(svc.Object);
var result = await controller.Update("id", new UpdateSpawnableRequest { Name="n", SpawnRate=1, CollectAction="a" }); var result = await controller.Update("id", new UpdateSpawnableRequest { Name="n", SpawnRate=1, CollectAction="a", ConsumeOnSuccess = false });
Assert.IsType<NotFoundObjectResult>(result); Assert.IsType<NotFoundObjectResult>(result);
} }
+3
View File
@@ -12,4 +12,7 @@ public class CreateSpawnableRequest
// Possible outcomes of collecting the item // Possible outcomes of collecting the item
public List<CollectOutcome> CollectResults { get; set; } = []; public List<CollectOutcome> CollectResults { get; set; } = [];
// Should the spawnable be removed after a successful action?
public bool ConsumeOnSuccess { get; set; } = false;
} }
+3
View File
@@ -8,4 +8,7 @@ public class UpdateSpawnableRequest
public int SpawnRate { get; set; } public int SpawnRate { get; set; }
public string CollectAction { get; set; } public string CollectAction { get; set; }
public List<CollectOutcome> CollectResults { get; set; } = []; public List<CollectOutcome> CollectResults { get; set; } = [];
// Should the spawnable be removed after a successful action?
public bool ConsumeOnSuccess { get; set; } = false;
} }