Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageVersion Include="Microsoft.Web.LibraryManager.Build" Version="3.0.71" />
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" />
<PackageVersion Include="Serilog.Settings.Configuration" Version="9.0.0" />
<PackageVersion Include="Serilog.AspNetCore" Version="10.0.0" />
<PackageVersion Include="Serilog.Settings.Configuration" Version="10.0.0" />
<PackageVersion Include="Serilog.Sinks.File" Version="7.0.0" />
<PackageVersion Include="Serilog.Sinks.MSSqlServer" Version="9.0.2" />
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.15.0" />
<PackageVersion Include="Shouldly" Version="4.3.0" />
<PackageVersion Include="xunit.v3" Version="3.2.0" />
<PackageVersion Include="xunit.v3" Version="3.2.1" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
<PackageVersion Include="X.PagedList" Version="10.5.9" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,26 @@ public interface IDungeonService
Task<DungeonOptionModel[]> GetAllDungeonOptionsAsync(CancellationToken cancellationToken);
Task<DungeonOptionModel[]> GetAllDungeonOptionsForUserAsync(int userId, CancellationToken cancellationToken);
Task<DungeonOptionModel> GetDungeonOptionAsync(int id, CancellationToken cancellationToken);
Task<DungeonOptionModel?> GetDungeonOptionByNameAsync(string dungeonName, int userId, CancellationToken cancellationToken);

Task<DungeonOptionModel?> GetDungeonOptionByNameAsync(string dungeonName, int userId,
CancellationToken cancellationToken);

Task<DungeonModel> GetDungeonAsync(int id, CancellationToken cancellationToken);
Task<DungeonModel> CreateOrUpdateDungeonAsync(DungeonOptionModel optionModel, bool addDungeon, int level, CancellationToken cancellationToken);

Task<DungeonModel> CreateOrUpdateDungeonAsync(DungeonOptionModel optionModel, bool addDungeon, int level,
CancellationToken cancellationToken);

Task UpdateDungeonAsync(DungeonModel model, CancellationToken cancellationToken);
Task<int> CreateDungeonOptionAsync(DungeonOptionModel dungeonOption, CancellationToken cancellationToken);
Task<DungeonModel[]> ListUserDungeonsAsync(int userId, CancellationToken cancellationToken);
Task<DungeonModel[]> ListUserDungeonsByNameAsync(string dungeonName, int userId, CancellationToken cancellationToken);

Task<DungeonModel[]> ListUserDungeonsByNameAsync(string dungeonName, int userId,
CancellationToken cancellationToken);

Task<int> AddDungeonAsync(DungeonModel savedDungeon, CancellationToken cancellationToken);
Task<bool> DeleteDungeonOptionAsync(int id, CancellationToken cancellationToken);
Task<bool> DeleteDungeonAsync(int id, CancellationToken cancellationToken);
Task<DungeonModel> GenerateDungeonAsync(DungeonOptionModel model);
Task<DungeonModel> GenerateDungeonAsync(DungeonOptionModel model, CancellationToken cancellationToken);
Task RenameDungeonAsync(int optionId, int userId, string newName, CancellationToken cancellationToken);
Task<string> ExportToJsonAsync(int dungeonId, CancellationToken cancellationToken);
}
18 changes: 10 additions & 8 deletions src/Open5ETools.Core/Services/DM/DungeonService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ public async Task<DungeonModel> CreateOrUpdateDungeonAsync(DungeonOptionModel op
private async Task<DungeonModel> UpdateExistingDungeonAsync(DungeonOptionModel optionModel,
DungeonOptionModel existingDungeonOption, DungeonModel oldDungeon, CancellationToken cancellationToken)
{
var dungeonModel = await GenerateDungeonAsync(optionModel, existingDungeonOption.Id);
var dungeonModel = await GenerateDungeonAsync(optionModel, existingDungeonOption.Id, cancellationToken);
dungeonModel.Id = oldDungeon.Id;
dungeonModel.Level = oldDungeon.Level;
await UpdateDungeonAsync(dungeonModel, cancellationToken);
Expand All @@ -122,7 +122,7 @@ private async Task<DungeonModel> CreateOptionAndAddDungeonToItAsync(DungeonOptio
CancellationToken cancellationToken)
{
var dungeonOptionId = await CreateDungeonOptionAsync(optionModel, cancellationToken);
var dungeonModel = await GenerateDungeonAsync(optionModel, dungeonOptionId);
var dungeonModel = await GenerateDungeonAsync(optionModel, dungeonOptionId, cancellationToken);
dungeonModel.Level = 1;
var id = await AddDungeonAsync(dungeonModel, cancellationToken);
dungeonModel.Id = id;
Expand All @@ -135,7 +135,7 @@ private async Task<DungeonModel> AddDungeonToExistingOptionAsync(DungeonOptionMo
var existingDungeons =
(await ListUserDungeonsByNameAsync(optionModel.DungeonName, optionModel.UserId, cancellationToken))
.ToList();
var dungeonModel = await GenerateDungeonAsync(optionModel, optionModel.Id);
var dungeonModel = await GenerateDungeonAsync(optionModel, optionModel.Id, cancellationToken);
dungeonModel.Level = level;
if (existingDungeons.Exists(d => d.Level == level))
{
Expand All @@ -150,21 +150,23 @@ private async Task<DungeonModel> AddDungeonToExistingOptionAsync(DungeonOptionMo
return dungeonModel;
}

private async Task<DungeonModel> GenerateDungeonAsync(DungeonOptionModel optionModel, int optionId)
private async Task<DungeonModel> GenerateDungeonAsync(DungeonOptionModel optionModel, int optionId,
CancellationToken cancellationToken)
{
var dungeonModel = await GenerateDungeonAsync(optionModel);
var dungeonModel = await GenerateDungeonAsync(optionModel, cancellationToken);
dungeonModel.DungeonOptionId = optionId;
return dungeonModel;
}

public async Task<DungeonModel> GenerateDungeonAsync(DungeonOptionModel model)
public async Task<DungeonModel> GenerateDungeonAsync(DungeonOptionModel model, CancellationToken cancellationToken)
{
try
{
ValidateModel(model);
if (model.Corridor)
return await Task.FromResult(_dungeon.Generate(model));
return await Task.FromResult(_dungeonNcDungeon.Generate(model));
return await Task.Run(async () => await Task.FromResult(_dungeon.Generate(model)), cancellationToken);
return await Task.Run(async () => await Task.FromResult(_dungeonNcDungeon.Generate(model)),
cancellationToken);
}
catch (Exception ex)
{
Expand Down
37 changes: 20 additions & 17 deletions src/Open5ETools.Infrastructure/Data/AppDbContextInitializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public async Task SeedDataAsync(CancellationToken cancellationToken)
await SeedMonstersAsync(cancellationToken);
await SeedTreasuresAsync(cancellationToken);
await SeedOptionsAsync(cancellationToken);
await SeedDungeonsAsync(1, cancellationToken);
await SeedDungeonsAsync(TestAdminUserId, cancellationToken);
await SeedSpellsAsync(cancellationToken);
}
}
Expand All @@ -59,12 +59,12 @@ public async Task SeedTestBaseAsync(CancellationToken cancellationToken)
{
if (!_context.Users.Any())
{
await SeedUsersAsync(cancellationToken);
await SeedUsersAsync(cancellationToken, true);
await SeedMonstersAsync(cancellationToken);
await SeedTreasuresAsync(cancellationToken);
await SeedOptionsAsync(cancellationToken);
await SeedDungeonsAsync(1, cancellationToken);
await SeedDungeonsAsync(2, cancellationToken);
await SeedDungeonsAsync(TestAdminUserId, cancellationToken);
await SeedDungeonsAsync(TestUserId, cancellationToken);
await SeedSpellsAsync(cancellationToken);
}
}
Expand Down Expand Up @@ -516,7 +516,7 @@ private async Task SeedDungeonsAsync(int userId, CancellationToken token)
UserId = dungeonOption.UserId
};

var sd = await _dungeonService.GenerateDungeonAsync(model);
var sd = await _dungeonService.GenerateDungeonAsync(model, token);
sd.Level = 1;
await _dungeonService.AddDungeonAsync(sd, token);

Expand Down Expand Up @@ -563,12 +563,12 @@ private async Task SeedDungeonsAsync(int userId, CancellationToken token)
UserId = dungeonOption.UserId
};

sd = await _dungeonService.GenerateDungeonAsync(model);
sd = await _dungeonService.GenerateDungeonAsync(model, token);
sd.Level = 1;
await _dungeonService.AddDungeonAsync(sd, token);
}

private async Task SeedUsersAsync(CancellationToken token)
private async Task SeedUsersAsync(CancellationToken token, bool seedDeletedUtUser = false)
{
_context.Users.Add(new User
{
Expand All @@ -592,17 +592,20 @@ private async Task SeedUsersAsync(CancellationToken token)
Role = Role.User
});

_context.Users.Add(new User
if (seedDeletedUtUser)
{
Id = TestDeletedUserId,
Username = "UT Deleted User",
Password = PasswordHelper.EncryptPassword(config.Value.DefaultUserPassword),
FirstName = "Test",
LastName = "User",
Email = "user@user.com",
Role = Role.User,
IsDeleted = true
});
_context.Users.Add(new User
{
Id = TestDeletedUserId,
Username = "UT Deleted User",
Password = PasswordHelper.EncryptPassword(config.Value.DefaultUserPassword),
FirstName = "Test",
LastName = "User",
Email = "user@user.com",
Role = Role.User,
IsDeleted = true
});
}

await _context.SaveChangesAsync(token);
}
Expand Down
2 changes: 1 addition & 1 deletion src/Open5ETools.Web/Open5ETools.Web.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<TieredCompilation>true</TieredCompilation>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
<AssemblyVersion>1.0.4.1</AssemblyVersion>
<AssemblyVersion>1.0.4.2</AssemblyVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="IdentityModel"/>
Expand Down
14 changes: 9 additions & 5 deletions tests/Open5ETools.Core.Tests/DungeonServiceTests/Create.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ public async Task CreateDungeonOptionAsync_WithOptionModel_ReturnsNewEntityId()
Corridor = false,
UserId = 1
};
var result = await _dungeonService.CreateDungeonOptionAsync(optionsModel, TestContext.Current.CancellationToken);
var result =
await _dungeonService.CreateDungeonOptionAsync(optionsModel, TestContext.Current.CancellationToken);
result.ShouldBeGreaterThan(0);
}

Expand All @@ -41,7 +42,7 @@ public async Task AddDungeonAsync_WithDungeonModel_ReturnsNewEntityId()
{
var optionsModel =
(await _dungeonService.GetAllDungeonOptionsForUserAsync(1, TestContext.Current.CancellationToken)).First();
var dungeon = await _dungeonService.GenerateDungeonAsync(optionsModel);
var dungeon = await _dungeonService.GenerateDungeonAsync(optionsModel, TestContext.Current.CancellationToken);

var result = await _dungeonService.AddDungeonAsync(dungeon, TestContext.Current.CancellationToken);
result.ShouldBeGreaterThan(1);
Expand All @@ -63,7 +64,8 @@ public async Task CreateOrUpdateDungeonAsync_WithInvalidModel_ReturnsServiceAggr

var act = async () =>
{
await _dungeonService.CreateOrUpdateDungeonAsync(optionsModel, false, 1, TestContext.Current.CancellationToken);
await _dungeonService.CreateOrUpdateDungeonAsync(optionsModel, false, 1,
TestContext.Current.CancellationToken);
};

var result = await act.ShouldThrowAsync<ServiceAggregateException>();
Expand Down Expand Up @@ -97,7 +99,8 @@ public async Task CreateOrUpdateDungeonAsync_WithValidNewModel_CreateOptionAndRe
UserId = 1
};
var result =
await _dungeonService.CreateOrUpdateDungeonAsync(optionsModel, false, 1, TestContext.Current.CancellationToken);
await _dungeonService.CreateOrUpdateDungeonAsync(optionsModel, false, 1,
TestContext.Current.CancellationToken);
result.ShouldNotBeNull();
result.RoamingMonsterDescription.ShouldBe(Constants.Empty);
}
Expand All @@ -109,7 +112,8 @@ public async Task
const int userId = 1;
const int levelNumber = 2;
var existingDungeonOption =
(await _dungeonService.GetAllDungeonOptionsForUserAsync(userId, TestContext.Current.CancellationToken)).First();
(await _dungeonService.GetAllDungeonOptionsForUserAsync(userId, TestContext.Current.CancellationToken))
.First();
var currentDungeonCount =
(await _dungeonService.ListUserDungeonsByNameAsync(existingDungeonOption.DungeonName, userId,
TestContext.Current.CancellationToken)).Count();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public async Task GenerateDungeonAsync_WithValidOptionModel_ReturnsDungeonModel(
RoomSize = 20,
Corridor = false,
UserId = 1
});
}, TestContext.Current.CancellationToken);

result.DungeonTiles.ShouldNotBeNull();
}
Expand Down