//TODO: Race condition here because it's possible the subsciber hasn't subscribed just yet. /// <inheritdoc /> public async Task OnGameInitialized() { CharacterListResponse listResponse = await CharacterQueryable.GetCharacters(AuthTokenRepository.RetrieveWithType()) .ConfigureAwait(true); if (!listResponse.isSuccessful || listResponse.CharacterIds.Count == 0) { if (Logger.IsErrorEnabled) { Logger.Error($"Failed to query character list. Recieved ResultCode: {listResponse.ResultCode}"); } //We don't have character creation... Soooo, nothing we can do right now. return; } //TODO: Should we make this API spit out network guids? foreach (var characterId in listResponse.CharacterIds) { NetworkEntityGuid entityGuid = new NetworkEntityGuidBuilder() .WithType(EntityType.Player) .WithId(characterId) .Build(); OnCharacterSelectionEntryChanged?.Invoke(this, new CharacterSelectionEntryDataChangeEventArgs(entityGuid)); } }
public async Task Test_Get_Characters_Contains_No_Characters_Added_From_Other_Account([Range(1, 20)] int count) { //arrange IServiceProvider serviceProvider = BuildServiceProvider <CharacterController>("Test", 1); CharacterController controller = serviceProvider.GetService <CharacterController>(); List <string> names = await AddTestValuesToRepository(count, serviceProvider, 2); //act CharacterListResponse response = await controller.GetCharacters(); //assert Assert.AreEqual(0, response.CharacterIds.Count, $"Expected NO characters to be provided. They're all under a different account. This is CRITICAL!"); Assert.True(response.ResultCode == CharacterListResponseCode.NoCharactersFoundError); Assert.False(response.isSuccessful); }
public async Task Test_Get_Characters_Contains_Same_Size_As_Characters_Added([Range(1, 20)] int count) { //arrange IServiceProvider serviceProvider = BuildServiceProvider <CharacterController>("Test", 1); CharacterController controller = serviceProvider.GetService <CharacterController>(); List <string> names = await AddTestValuesToRepository(count, serviceProvider); //act CharacterListResponse response = await controller.GetCharacters(); //assert Assert.AreEqual(count, response.CharacterIds.Count); Assert.True(response.ResultCode == CharacterListResponseCode.Success); Assert.True(response.isSuccessful); }
public async Task Test_Get_Characters_Empty_Datastore_Produces_Empty_Character_Result() { //arrange IServiceProvider serviceProvider = BuildServiceProvider <CharacterController>("Test", 1); CharacterController controller = serviceProvider.GetService <CharacterController>(); //act CharacterListResponse response = await controller.GetCharacters(); //assert Assert.NotNull(response); Assert.NotNull(response.CharacterIds); Assert.True(response.CharacterIds.Count == 0); Assert.True(response.ResultCode == CharacterListResponseCode.NoCharactersFoundError); Assert.False(response.isSuccessful); }