Fixing the uses of the spawnable
This commit is contained in:
@@ -223,7 +223,8 @@ public class PlayerController : ControllerBase
|
|||||||
var tempItem = new Item
|
var tempItem = new Item
|
||||||
{
|
{
|
||||||
Name = s.Name,
|
Name = s.Name,
|
||||||
LocationId = null
|
LocationId = null,
|
||||||
|
UsesRemaining = s.Uses
|
||||||
};
|
};
|
||||||
|
|
||||||
await _itemService.CreateAsync(tempItem);
|
await _itemService.CreateAsync(tempItem);
|
||||||
|
|||||||
@@ -218,4 +218,45 @@ public class PlayerControllerTests
|
|||||||
|
|
||||||
itemSvc.Verify();
|
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