Invite Cancel + Gang Owner Transfer Unit Tests

This commit is contained in:
Kaleb Schmenk
2025-05-05 01:20:07 -04:00
parent 21712a0496
commit c287f56078
2 changed files with 64 additions and 0 deletions

View File

@@ -1,6 +1,9 @@
using Commands;
using Commands.Gang;
using CounterStrikeSharp.API.Modules.Commands;
using GangsAPI;
using GangsAPI.Data.Command;
using GangsAPI.Extensions;
using GangsAPI.Services.Gang;
using GangsAPI.Services.Menu;
using Microsoft.Extensions.DependencyInjection;
@@ -86,4 +89,32 @@ public class GangTests(IServiceProvider provider) : TestParent(provider,
Command.Name));
Assert.NotNull(menus.GetActiveMenu(TestPlayer));
}
[Fact]
public async Task Gang_Transfer_Ownership()
{
// Ensure command is registered
Commands.RegisterCommand(new TransferCommand(provider));
// Create original owner and owned gang
await Players.CreatePlayer(TestPlayer.Steam, TestPlayer.Name);
var owner = await Players.GetPlayer(TestPlayer.Steam);
Assert.NotNull(owner);
var gang = await Gangs.CreateGang("Test Gang", owner);
Assert.NotNull(gang);
Assert.NotNull(owner.GangRank);
// Create player to transfer ownership to
var newOwner = await Players.CreatePlayer(new Random().NextULong(), "NewOwner");
newOwner.GangId = gang.GangId;
var rank = await Ranks.GetLowerRank(gang.GangId, owner.GangRank.Value);
Assert.NotNull(rank);
newOwner.GangRank = rank.Rank;
await Players.UpdatePlayer(newOwner);
// Transfer ownership
Assert.Equal(CommandResult.SUCCESS,
await Commands.ProcessCommand(TestPlayer, CommandCallingContext.Console,
"transfer", newOwner.Steam.ToString()));
}
}

View File

@@ -4,6 +4,7 @@ using GangsAPI;
using GangsAPI.Data;
using GangsAPI.Data.Command;
using GangsAPI.Extensions;
using GangsAPI.Perks;
using GangsAPI.Permissions;
using GangsAPI.Services;
using GangsAPI.Services.Gang;
@@ -195,4 +196,36 @@ public class InviteTests(IServiceProvider provider)
[Locale.Get(MSG.COMMAND_INVITE_SUCCESS, guest.Name!, gang.Name)],
TestPlayer.ConsoleOutput);
}
[Fact]
public async Task Invite_Cancel_When_Max_Capacity() {
// Create executor and gang
await Players.CreatePlayer(TestPlayer.Steam, TestPlayer.Name);
var gang = await Gangs.CreateGang("Test Gang", TestPlayer);
Assert.NotNull(gang);
// Send player that we want to cancel the invite to an invite
var playerToCancel = await Players.CreatePlayer(new Random().NextULong(), "PlayerToCancel");
await Players.UpdatePlayer(playerToCancel);
Assert.Equal(CommandResult.SUCCESS,
await Commands.ProcessCommand(TestPlayer, CommandCallingContext.Console,
"invite", playerToCancel.Steam.ToString()));
// Assume gang capacity and current member count
var capacity = 20;
var members = 1;
// Fill gang to capacity starting at the current member count
for (int i = members; i < capacity; ++i) {
var guest = await Players.CreatePlayer(new Random().NextULong(), "Guest" + i);
guest.GangId = gang.GangId;
guest.GangRank = (await Ranks.GetJoinRank(gang)).Rank;
await Players.UpdatePlayer(guest);
}
// Attempt to cancel invite to player
Assert.Equal(CommandResult.SUCCESS,
await Commands.ProcessCommand(TestPlayer, CommandCallingContext.Console,
"invite", "cancel", playerToCancel.Name!));
}
}