Fixing the uses of the spawnable
This commit is contained in:
@@ -218,4 +218,45 @@ public class PlayerControllerTests
|
||||
|
||||
itemSvc.Verify();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Move_SpawnableSetsItemUses()
|
||||
{
|
||||
var playerSvc = new Mock<PlayerService>(cfg);
|
||||
var player = new Player { Id = "p", UserId = "u", LocationId = "loc" };
|
||||
playerSvc.Setup(p => p.GetByUserIdAsync("u")).ReturnsAsync(player);
|
||||
playerSvc.Setup(p => p.UpdateAsync(It.IsAny<Player>())).Returns(Task.CompletedTask);
|
||||
|
||||
var current = new Location { Id = "loc", X = 0, Y = 0, Z = 0 };
|
||||
var locSvc = new Mock<LocationService>(cfg);
|
||||
locSvc.Setup(l => l.GetByIdAsync("loc")).ReturnsAsync(current);
|
||||
locSvc.Setup(l => l.GetByCoordinatesAsync(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<int>()))
|
||||
.ReturnsAsync((Location?)null);
|
||||
locSvc.Setup(l => l.CreateAsync(It.IsAny<Location>())).Returns(Task.CompletedTask);
|
||||
locSvc.Setup(l => l.UpdateAsync(It.IsAny<Location>())).Returns(Task.CompletedTask);
|
||||
locSvc.Setup(l => l.RemovePlayerFromLocationAsync("loc", "p")).Returns(Task.CompletedTask);
|
||||
locSvc.Setup(l => l.AddPlayerToLocationAsync(It.IsAny<string>(), "p")).Returns(Task.CompletedTask);
|
||||
|
||||
var spawned = new Spawnable { Name = "wood", SpawnRate = 100, Uses = 3 };
|
||||
var spawnSvc = new Mock<SpawnableService>(cfg);
|
||||
spawnSvc.Setup(s => s.GetAllAsync()).ReturnsAsync([spawned]);
|
||||
|
||||
var itemSvc = new Mock<ItemService>(cfg);
|
||||
Item? created = null;
|
||||
itemSvc.Setup(i => i.CreateAsync(It.IsAny<Item>()))
|
||||
.Callback<Item>(it => { created = it; it.Id = "i"; })
|
||||
.Returns(Task.CompletedTask);
|
||||
itemSvc.Setup(i => i.GetByIdAsync("i")).ReturnsAsync(() => created!);
|
||||
itemSvc.Setup(i => i.UpdateAsync(It.IsAny<Item>())).Returns(Task.CompletedTask);
|
||||
|
||||
var controller = new PlayerController(playerSvc.Object, locSvc.Object, spawnSvc.Object, itemSvc.Object)
|
||||
{
|
||||
ControllerContext = ContextWithUser("u")
|
||||
};
|
||||
|
||||
await controller.Move(new MoveRequest { Direction = "N" });
|
||||
|
||||
Assert.NotNull(created);
|
||||
Assert.Equal(3, created!.UsesRemaining);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user