using GameAuthApi.Services; using GameAuthApi.Models; using Microsoft.Extensions.Configuration; public class AdminServiceTests { [Fact] public async Task ResetLocations_DeletesWorldLocationsOnly() { var worldLocs = new List { new() { Id = "1", LocationType = "World" } }; var cfg = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary { {"MongoDB:ConnectionString", "mongodb://localhost"}, {"MongoDB:DatabaseName", "test"} }).Build(); var locSvc = new Mock(cfg); locSvc.Setup(l => l.GetByTypeAsync("World")).ReturnsAsync(worldLocs); locSvc.Setup(l => l.DeleteByTypeAsync("World")).Returns(Task.CompletedTask).Verifiable(); locSvc.Setup(l => l.CreateAsync(It.IsAny())).Returns(Task.CompletedTask); var itemSvc = new Mock(cfg); itemSvc.Setup(i => i.DeleteByLocationAsync("1")).Returns(Task.CompletedTask).Verifiable(); var playerSvc = new Mock(cfg); playerSvc.Setup(p => p.GetAllAsync()).ReturnsAsync(new List()); var adminSvc = new AdminService(locSvc.Object, itemSvc.Object, playerSvc.Object); await adminSvc.ResetLocationsAsync(); locSvc.Verify(); itemSvc.Verify(); } [Fact] public async Task ClearItems_RemovesAllItemsFromLocations() { var cfg = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary { {"MongoDB:ConnectionString", "mongodb://localhost"}, {"MongoDB:DatabaseName", "test"} }).Build(); var locSvc = new Mock(cfg); locSvc.Setup(l => l.ClearAllItemsAsync()).Returns(Task.CompletedTask).Verifiable(); var itemSvc = new Mock(cfg); itemSvc.Setup(i => i.DeleteAllAsync()).Returns(Task.CompletedTask).Verifiable(); var playerSvc = new Mock(cfg); var adminSvc = new AdminService(locSvc.Object, itemSvc.Object, playerSvc.Object); await adminSvc.ClearItemsAsync(); locSvc.Verify(); itemSvc.Verify(); } }