Skip to content

Commit d5a46b9

Browse files
authored
Improve CreateDeleteCreateTest failure messages (space-wizards#40996)
* Improve CreateDeleteCreateTest failure messages * nameof
1 parent 6f253bc commit d5a46b9

1 file changed

Lines changed: 102 additions & 94 deletions

File tree

Lines changed: 102 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,122 @@
11
using Content.Client.Lobby;
22
using Content.Server.Preferences.Managers;
3+
using Content.Shared.Humanoid;
34
using Content.Shared.Preferences;
45
using Robust.Client.State;
5-
using Robust.Shared.Network;
66

7-
namespace Content.IntegrationTests.Tests.Lobby
7+
namespace Content.IntegrationTests.Tests.Lobby;
8+
9+
[TestFixture]
10+
[TestOf(typeof(ClientPreferencesManager))]
11+
[TestOf(typeof(ServerPreferencesManager))]
12+
public sealed class CharacterCreationTest
813
{
9-
[TestFixture]
10-
[TestOf(typeof(ClientPreferencesManager))]
11-
[TestOf(typeof(ServerPreferencesManager))]
12-
public sealed class CharacterCreationTest
14+
[Test]
15+
public async Task CreateDeleteCreateTest()
1316
{
14-
[Test]
15-
public async Task CreateDeleteCreateTest()
17+
await using var pair = await PoolManager.GetServerClient(new PoolSettings { InLobby = true });
18+
var server = pair.Server;
19+
var client = pair.Client;
20+
var user = pair.Client.User!.Value;
21+
var clientPrefManager = client.Resolve<IClientPreferencesManager>();
22+
var serverPrefManager = server.Resolve<IServerPreferencesManager>();
23+
24+
Assert.That(client.Resolve<IStateManager>().CurrentState, Is.TypeOf<LobbyState>());
25+
await client.WaitPost(() => clientPrefManager.SelectCharacter(0));
26+
await pair.RunTicksSync(5);
27+
28+
var clientCharacters = clientPrefManager.Preferences?.Characters;
29+
Assert.That(clientCharacters, Is.Not.Null);
30+
Assert.That(clientCharacters, Has.Count.EqualTo(1));
31+
32+
HumanoidCharacterProfile profile = null;
33+
await client.WaitPost(() =>
1634
{
17-
await using var pair = await PoolManager.GetServerClient(new PoolSettings { InLobby = true });
18-
var server = pair.Server;
19-
var client = pair.Client;
20-
21-
var clientNetManager = client.ResolveDependency<IClientNetManager>();
22-
var clientStateManager = client.ResolveDependency<IStateManager>();
23-
var clientPrefManager = client.ResolveDependency<IClientPreferencesManager>();
24-
25-
var serverPrefManager = server.ResolveDependency<IServerPreferencesManager>();
26-
27-
28-
// Need to run them in sync to receive the messages.
29-
await pair.RunTicksSync(1);
30-
31-
await PoolManager.WaitUntil(client, () => clientStateManager.CurrentState is LobbyState, 600);
32-
33-
Assert.That(clientNetManager.ServerChannel, Is.Not.Null);
34-
35-
var clientNetId = clientNetManager.ServerChannel.UserId;
36-
HumanoidCharacterProfile profile = null;
37-
38-
await client.WaitAssertion(() =>
39-
{
40-
clientPrefManager.SelectCharacter(0);
41-
42-
var clientCharacters = clientPrefManager.Preferences?.Characters;
43-
Assert.That(clientCharacters, Is.Not.Null);
44-
Assert.Multiple(() =>
45-
{
46-
Assert.That(clientCharacters, Has.Count.EqualTo(1));
47-
48-
Assert.That(clientStateManager.CurrentState, Is.TypeOf<LobbyState>());
49-
});
50-
51-
profile = HumanoidCharacterProfile.Random();
52-
clientPrefManager.CreateCharacter(profile);
53-
54-
clientCharacters = clientPrefManager.Preferences?.Characters;
55-
56-
Assert.That(clientCharacters, Is.Not.Null);
57-
Assert.That(clientCharacters, Has.Count.EqualTo(2));
58-
Assert.That(clientCharacters[1].MemberwiseEquals(profile));
59-
});
35+
profile = HumanoidCharacterProfile.Random();
36+
clientPrefManager.CreateCharacter(profile);
37+
});
38+
await pair.RunTicksSync(5);
6039

61-
await PoolManager.WaitUntil(server, () => serverPrefManager.GetPreferences(clientNetId).Characters.Count == 2, maxTicks: 60);
40+
clientCharacters = clientPrefManager.Preferences?.Characters;
41+
Assert.That(clientCharacters, Is.Not.Null);
42+
Assert.That(clientCharacters, Has.Count.EqualTo(2));
43+
AssertEqual(clientCharacters[1], profile);
6244

63-
await server.WaitAssertion(() =>
64-
{
65-
var serverCharacters = serverPrefManager.GetPreferences(clientNetId).Characters;
45+
await PoolManager.WaitUntil(server, () => serverPrefManager.GetPreferences(user).Characters.Count == 2, maxTicks: 60);
6646

67-
Assert.That(serverCharacters, Has.Count.EqualTo(2));
68-
Assert.That(serverCharacters[1].MemberwiseEquals(profile));
69-
});
47+
var serverCharacters = serverPrefManager.GetPreferences(user).Characters;
48+
Assert.That(serverCharacters, Has.Count.EqualTo(2));
49+
AssertEqual(serverCharacters[1], profile);
7050

71-
await client.WaitAssertion(() =>
72-
{
73-
clientPrefManager.DeleteCharacter(1);
51+
await client.WaitAssertion(() => clientPrefManager.DeleteCharacter(1));
52+
await pair.RunTicksSync(5);
53+
Assert.That(clientPrefManager.Preferences?.Characters.Count, Is.EqualTo(1));
54+
await PoolManager.WaitUntil(server, () => serverPrefManager.GetPreferences(user).Characters.Count == 1, maxTicks: 60);
55+
Assert.That(serverPrefManager.GetPreferences(user).Characters.Count, Is.EqualTo(1));
7456

75-
var clientCharacters = clientPrefManager.Preferences?.Characters.Count;
76-
Assert.That(clientCharacters, Is.EqualTo(1));
77-
});
57+
await client.WaitIdleAsync();
7858

79-
await PoolManager.WaitUntil(server, () => serverPrefManager.GetPreferences(clientNetId).Characters.Count == 1, maxTicks: 60);
80-
81-
await server.WaitAssertion(() =>
82-
{
83-
var serverCharacters = serverPrefManager.GetPreferences(clientNetId).Characters.Count;
84-
Assert.That(serverCharacters, Is.EqualTo(1));
85-
});
86-
87-
await client.WaitIdleAsync();
88-
89-
await client.WaitAssertion(() =>
90-
{
91-
profile = HumanoidCharacterProfile.Random();
92-
93-
clientPrefManager.CreateCharacter(profile);
94-
95-
var clientCharacters = clientPrefManager.Preferences?.Characters;
59+
await client.WaitAssertion(() =>
60+
{
61+
profile = HumanoidCharacterProfile.Random();
62+
clientPrefManager.CreateCharacter(profile);
63+
});
64+
await pair.RunTicksSync(5);
65+
66+
clientCharacters = clientPrefManager.Preferences?.Characters;
67+
Assert.That(clientCharacters, Is.Not.Null);
68+
Assert.That(clientCharacters, Has.Count.EqualTo(2));
69+
AssertEqual(clientCharacters[1], profile);
70+
71+
await PoolManager.WaitUntil(server, () => serverPrefManager.GetPreferences(user).Characters.Count == 2, maxTicks: 60);
72+
serverCharacters = serverPrefManager.GetPreferences(user).Characters;
73+
Assert.That(serverCharacters, Has.Count.EqualTo(2));
74+
AssertEqual(serverCharacters[1], profile);
75+
await pair.CleanReturnAsync();
76+
}
9677

97-
Assert.That(clientCharacters, Is.Not.Null);
98-
Assert.That(clientCharacters, Has.Count.EqualTo(2));
99-
Assert.That(clientCharacters[1].MemberwiseEquals(profile));
100-
});
78+
private void AssertEqual(ICharacterProfile clientCharacter, HumanoidCharacterProfile b)
79+
{
80+
if (clientCharacter.MemberwiseEquals(b))
81+
return;
10182

102-
await PoolManager.WaitUntil(server, () => serverPrefManager.GetPreferences(clientNetId).Characters.Count == 2, maxTicks: 60);
83+
if (clientCharacter is not HumanoidCharacterProfile a)
84+
{
85+
Assert.Fail($"Not a {nameof(HumanoidCharacterProfile)}");
86+
return;
87+
}
10388

104-
await server.WaitAssertion(() =>
105-
{
106-
var serverCharacters = serverPrefManager.GetPreferences(clientNetId).Characters;
89+
Assert.Multiple(() =>
90+
{
91+
Assert.That(a.Name, Is.EqualTo(b.Name));
92+
Assert.That(a.Age, Is.EqualTo(b.Age));
93+
Assert.That(a.Sex, Is.EqualTo(b.Sex));
94+
Assert.That(a.Gender, Is.EqualTo(b.Gender));
95+
Assert.That(a.Species, Is.EqualTo(b.Species));
96+
Assert.That(a.PreferenceUnavailable, Is.EqualTo(b.PreferenceUnavailable));
97+
Assert.That(a.SpawnPriority, Is.EqualTo(b.SpawnPriority));
98+
Assert.That(a.FlavorText, Is.EqualTo(b.FlavorText));
99+
Assert.That(a.JobPriorities, Is.EquivalentTo(b.JobPriorities));
100+
Assert.That(a.AntagPreferences, Is.EquivalentTo(b.AntagPreferences));
101+
Assert.That(a.TraitPreferences, Is.EquivalentTo(b.TraitPreferences));
102+
Assert.That(a.Loadouts, Is.EquivalentTo(b.Loadouts));
103+
AssertEqual(a.Appearance, b.Appearance);
104+
Assert.Fail("Profile not equal");
105+
});
106+
}
107107

108-
Assert.That(serverCharacters, Has.Count.EqualTo(2));
109-
Assert.That(serverCharacters[1].MemberwiseEquals(profile));
110-
});
111-
await pair.CleanReturnAsync();
112-
}
108+
private void AssertEqual(HumanoidCharacterAppearance a, HumanoidCharacterAppearance b)
109+
{
110+
if (a.MemberwiseEquals(b))
111+
return;
112+
113+
Assert.That(a.HairStyleId, Is.EqualTo(b.HairStyleId));
114+
Assert.That(a.HairColor, Is.EqualTo(b.HairColor));
115+
Assert.That(a.FacialHairStyleId, Is.EqualTo(b.FacialHairStyleId));
116+
Assert.That(a.FacialHairColor, Is.EqualTo(b.FacialHairColor));
117+
Assert.That(a.EyeColor, Is.EqualTo(b.EyeColor));
118+
Assert.That(a.SkinColor, Is.EqualTo(b.SkinColor));
119+
Assert.That(a.Markings, Is.EquivalentTo(b.Markings));
120+
Assert.Fail("Appearance not equal");
113121
}
114122
}

0 commit comments

Comments
 (0)