public async Task <ApiResponse <GetCharacterQueryResult> > GetById(Guid id) { var query = new GetCharacterQuery { Id = id }; var data = await _operationMediator.HandleAsync(query); return(ApiResponse.Ok(data)); }
public async Task Ok() { var query = new GetCharacterQuery { Id = _character.Id }; var result = await _handler.Handle(query, CancellationToken.None); Assert.NotNull(result); Assert.StrictEqual(_character, result); }
public async Task <GetCharacterData> GetCharacter(GetCharacterQuery query) { var uri = $"/character/{query.Id}?private_key={_privateKey}"; if (!string.IsNullOrEmpty(query.Data)) { uri += $"&data={query.Data}"; } var data = await Send <GetCharacterData>(uri); return(data); }
public async Task CharacterNotExist_Exception() { const int missingId = 2; var query = new GetCharacterQuery { Id = missingId }; Task Act() => _handler.Handle(query, CancellationToken.None); var ex = await Record.ExceptionAsync(Act) as EntityNotFoundException <Character>; Assert.NotNull(ex); Assert.Equal(missingId, ex.EntityId); }
private async Task <Character> ProcessDetails(CharacterBrief character) { var query = new GetCharacterQuery() { Id = character.Id, Data = "CJ,FC" }; _logger.LogDebug("Getting details for {Name}. Id: {Id}.", character.Name, character.Id); var details = await _xivApiAccessor.GetCharacter(query); return(CharacterResultEngine.Merge(character, details)); }
public async void ReturnNullIfPlayerDoesNotOwnCharacter() { var mockUserService = new Mock <IUserService>(); mockUserService.Setup(u => u.GetAuthId()).Returns("562"); mockUserService.Setup(u => u.IsAdmin()).Returns(false); var request = new GetCharacterQuery() { Id = 1, Url = "localhost" }; var sut = new GetCharacterQuery.GetCharacterQueryHandler(_context, _mapper, mockUserService.Object, _tenant); var result = await sut.Handle(request, CancellationToken.None); result.ShouldBeNull(); }
public async Task Get_character_query_handler_should_throw_not_found_exception() { // Arrange var character = new CharacterBuilder().Generate().Build().First(); var query = new GetCharacterQuery { Id = character.Id + 1 }; var queryHandler = new GetCharacterQueryHandler(_testFixture.Context, _testFixture.Mapper); // Act async Task Act() => await queryHandler.Handle(query, CancellationToken.None); var ex = await Record.ExceptionAsync(Act); // Assert ex.ShouldBeOfType <NotFoundException>(); }
public async void GetCharacterBiography() { var mockUserService = new Mock <IUserService>(); mockUserService.Setup(u => u.GetAuthId()).Returns("123"); mockUserService.Setup(u => u.IsAdmin()).Returns(false); var request = new GetCharacterQuery() { Id = 1, Url = "localhost" }; var sut = new GetCharacterQuery.GetCharacterQueryHandler(_context, _mapper, mockUserService.Object, _tenant); var result = await sut.Handle(request, CancellationToken.None); result.ShouldBeOfType <EditBiographyDto>(); result.Firstname.ShouldBe("Dan"); result.Surname.ShouldBe("Taylor"); result.Types.ShouldNotBeEmpty(); }
private void PrintHelloWorld() { var collectionName = BaseConfigurator.GetAppCollectionName(); var context = new DbContext(collectionName); var broker = new EventBroker <DbContext>(context); int length = BaseConfigurator.GetTargetStringLength(); var asciiChars = new List <AsciiChar>(); for (int i = 0; i < length; i++) { char character = BaseConfigurator.GetTargetString()[i]; var dbQuery = Query.EQ("Character", character.ToString()); var query = new GetCharacterQuery(new AsciiChar(), dbQuery); var target = broker.Query <GetCharacterQuery, AsciiChar>(query); asciiChars.Add(target); } foreach (var item in asciiChars) { Console.Write(item.Character); } }
public async Task Get_character_query_handler_should_pass() { // Arrange var character = new CharacterBuilder().Generate().Build().First(); var episode = new EpisodeBuilder().Generate().SaveChanges(_testFixture.Context).Build().First(); character.Episodes.Add(new CharacterEpisode { CharacterId = character.Id, EpisodeId = episode.Id }); _testFixture.Context.Characters.Update(character); _testFixture.Context.SaveChanges(); var query = new GetCharacterQuery { Id = character.Id }; var queryHandler = new GetCharacterQueryHandler(_testFixture.Context, _testFixture.Mapper); // Act var response = await queryHandler.Handle(query, CancellationToken.None); // Assert response.Name.ShouldBe(character.Name); response.Episodes.Count.ShouldBe(1); response.Episodes.First().Name.ShouldBe(episode.Name); }
public async Task <VerifyCharacterResult> Process(VerifyCharacterCriteria criteria) { _verifyCharacterValidator.ValidateAndThrow(criteria); // Get the guild options for free company definition. _logger.LogTrace("Getting guild options for guild {Id}.", criteria.GuildId); var guildOptionsQuery = new GetOptionsQuery() { GuildId = criteria.GuildId }; var guildOptions = await _guildAccessor.GetOptions(guildOptionsQuery); if (guildOptions?.FreeCompany is null || guildOptions.VerifiedRoleId == 0) { _logger.LogDebug("Free Company options not defined for guild {Id}.", criteria.GuildId); return(new VerifyCharacterResult() { Status = Status.FreeCompanyUndefined }); } var result = new VerifyCharacterResult() { FreeCompanyName = guildOptions.FreeCompany.Name, VerifiedRoleId = guildOptions.VerifiedRoleId }; // Parse the query into name/server. _logger.LogTrace("Parsing query: {Query}.", criteria.Query); var(name, _) = NameServerEngine.Parse(criteria.Query); // Search for the character. _logger.LogTrace("Searching for {CharacterName} on {ServerName}.", name, guildOptions.FreeCompany.Server); var searchQuery = new SearchCharacterQuery() { Name = name, Server = guildOptions.FreeCompany.Server }; var searchData = await _xivApiAccessor.SearchCharacter(searchQuery); var characterId = searchData.Results?.FirstOrDefault()?.Id; _logger.LogDebug("Got character Id {Id}.", characterId); if (characterId is null) { result.Status = Status.NotVerified; result.Name = searchData.Results?.FirstOrDefault()?.Name; return(result); } // Check if character is already attached to a user. _logger.LogTrace("Checking database if {CharacterName} has already been tied to a user. CharacterId: {CharacterId}", name, characterId); var checkQuery = new SearchUserQuery() { CharacterId = characterId.Value }; var user = await _userAccessor.SearchUser(checkQuery); if (user is object) { _logger.LogDebug("{CharacterName} ({CharacterId}) has already been tied to UserId {UserId}.", name, characterId, user.Id); result.Status = Status.CharacterAlreadyVerified; result.Name = searchData.Results?.FirstOrDefault()?.Name; result.VerifiedUserId = user.Id; return(result); } // Get the character. _logger.LogTrace("Getting character with Id {Id}.", characterId); var getQuery = new GetCharacterQuery() { Id = characterId.Value }; var getData = await _xivApiAccessor.GetCharacter(getQuery); var characterFcId = getData?.Character?.FreeCompanyId; _logger.LogDebug("Got character Free Company Id {FcId}.", characterFcId); result.Name = getData?.Character?.Name; if (characterFcId != guildOptions.FreeCompany.Id) { result.Status = Status.NotVerified; _logger.LogDebug("{Name} failed verification. Character FC: {CFcId}. Guild FC: {FcId}", result.Name, characterFcId, guildOptions.FreeCompany.Id); return(result); } result.Status = Status.Verified; result.VerifiedUserId = criteria.UserId; _logger.LogDebug("{Name} has been verified with Free Company Id {FcId}.", result.Name, guildOptions.FreeCompany.Id); // Save character-user map to database. _logger.LogDebug("Saving {Name} to database with User Id {UserId}.", result.Name, criteria.UserId); var dataUser = await _userAccessor.GetUser(criteria.UserId) ?? new() { Id = criteria.UserId }; var mergedUser = dataUser.Merge(characterId.Value); mergedUser.Name = criteria.Name; mergedUser.Nicknames[criteria.GuildId] = result.Name ?? ""; await _userAccessor.SaveUser(mergedUser); return(result); } }