CharacterCreationTest.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using Content.Client.Lobby;
  2. using Content.Server.Preferences.Managers;
  3. using Content.Shared.Preferences;
  4. using Robust.Client.State;
  5. using Robust.Shared.Network;
  6. namespace Content.IntegrationTests.Tests.Lobby
  7. {
  8. [TestFixture]
  9. [TestOf(typeof(ClientPreferencesManager))]
  10. [TestOf(typeof(ServerPreferencesManager))]
  11. public sealed class CharacterCreationTest
  12. {
  13. [Test]
  14. public async Task CreateDeleteCreateTest()
  15. {
  16. await using var pair = await PoolManager.GetServerClient(new PoolSettings { InLobby = true });
  17. var server = pair.Server;
  18. var client = pair.Client;
  19. var clientNetManager = client.ResolveDependency<IClientNetManager>();
  20. var clientStateManager = client.ResolveDependency<IStateManager>();
  21. var clientPrefManager = client.ResolveDependency<IClientPreferencesManager>();
  22. var serverPrefManager = server.ResolveDependency<IServerPreferencesManager>();
  23. // Need to run them in sync to receive the messages.
  24. await pair.RunTicksSync(1);
  25. await PoolManager.WaitUntil(client, () => clientStateManager.CurrentState is LobbyState, 600);
  26. Assert.That(clientNetManager.ServerChannel, Is.Not.Null);
  27. var clientNetId = clientNetManager.ServerChannel.UserId;
  28. HumanoidCharacterProfile profile = null;
  29. await client.WaitAssertion(() =>
  30. {
  31. clientPrefManager.SelectCharacter(0);
  32. var clientCharacters = clientPrefManager.Preferences?.Characters;
  33. Assert.That(clientCharacters, Is.Not.Null);
  34. Assert.Multiple(() =>
  35. {
  36. Assert.That(clientCharacters, Has.Count.EqualTo(1));
  37. Assert.That(clientStateManager.CurrentState, Is.TypeOf<LobbyState>());
  38. });
  39. profile = HumanoidCharacterProfile.Random();
  40. clientPrefManager.CreateCharacter(profile);
  41. clientCharacters = clientPrefManager.Preferences?.Characters;
  42. Assert.That(clientCharacters, Is.Not.Null);
  43. Assert.That(clientCharacters, Has.Count.EqualTo(2));
  44. Assert.That(clientCharacters[1].MemberwiseEquals(profile));
  45. });
  46. await PoolManager.WaitUntil(server, () => serverPrefManager.GetPreferences(clientNetId).Characters.Count == 2, maxTicks: 60);
  47. await server.WaitAssertion(() =>
  48. {
  49. var serverCharacters = serverPrefManager.GetPreferences(clientNetId).Characters;
  50. Assert.That(serverCharacters, Has.Count.EqualTo(2));
  51. Assert.That(serverCharacters[1].MemberwiseEquals(profile));
  52. });
  53. await client.WaitAssertion(() =>
  54. {
  55. clientPrefManager.DeleteCharacter(1);
  56. var clientCharacters = clientPrefManager.Preferences?.Characters.Count;
  57. Assert.That(clientCharacters, Is.EqualTo(1));
  58. });
  59. await PoolManager.WaitUntil(server, () => serverPrefManager.GetPreferences(clientNetId).Characters.Count == 1, maxTicks: 60);
  60. await server.WaitAssertion(() =>
  61. {
  62. var serverCharacters = serverPrefManager.GetPreferences(clientNetId).Characters.Count;
  63. Assert.That(serverCharacters, Is.EqualTo(1));
  64. });
  65. await client.WaitIdleAsync();
  66. await client.WaitAssertion(() =>
  67. {
  68. profile = HumanoidCharacterProfile.Random();
  69. clientPrefManager.CreateCharacter(profile);
  70. var clientCharacters = clientPrefManager.Preferences?.Characters;
  71. Assert.That(clientCharacters, Is.Not.Null);
  72. Assert.That(clientCharacters, Has.Count.EqualTo(2));
  73. Assert.That(clientCharacters[1].MemberwiseEquals(profile));
  74. });
  75. await PoolManager.WaitUntil(server, () => serverPrefManager.GetPreferences(clientNetId).Characters.Count == 2, maxTicks: 60);
  76. await server.WaitAssertion(() =>
  77. {
  78. var serverCharacters = serverPrefManager.GetPreferences(clientNetId).Characters;
  79. Assert.That(serverCharacters, Has.Count.EqualTo(2));
  80. Assert.That(serverCharacters[1].MemberwiseEquals(profile));
  81. });
  82. await pair.CleanReturnAsync();
  83. }
  84. }
  85. }