public async Task PostCreateCharacterAsync_ShouldCreateCharacterWithCharacterService_ThenReturnCharacterResponse() { var createCharacterRequest = new CreateCharacterRequest(); var createdCharacter = new Character(); var characterResponse = new CreateCharacterResponse(); _characterService.CreateCharacterAsync(_executionContext, createCharacterRequest) .Returns(createdCharacter); _mapper.Map <CreateCharacterResponse>(createdCharacter) .Returns(characterResponse); var result = await _controller.PostCreateCharacterAsync(_executionContext, createCharacterRequest); result.Value.Should().BeSameAs(characterResponse); result.StatusCode.Should().Be(StatusCodes.Status201Created); }
/// <summary> /// Creates a character with the given parameters. /// </summary> /// <param name="guildID">The ID of the guild the user is on.</param> /// <param name="userID">The ID of the discord user.</param> /// <param name="name">The name of the character.</param> /// <param name="avatarUrl">The character's avatar url.</param> /// <param name="nickname">The nickname that should be applied to the user when the character is active.</param> /// <param name="summary">The summary of the character.</param> /// <param name="description">The full description of the character.</param> /// <param name="pronounFamily">The pronoun family of the character.</param> /// <param name="ct">The cancellation token in use.</param> /// <returns>A creation result which may or may not have been successful.</returns> public async Task <Result <Character> > CreateCharacterAsync ( Snowflake guildID, Snowflake userID, string name, string?avatarUrl = null, string?nickname = null, string?summary = null, string?description = null, string?pronounFamily = null, CancellationToken ct = default ) { var getUser = await _users.GetOrRegisterUserAsync(userID, ct); if (!getUser.IsSuccess) { return(Result <Character> .FromError(getUser)); } var getServer = await _servers.GetOrRegisterServerAsync(guildID, ct); if (!getServer.IsSuccess) { return(Result <Character> .FromError(getServer)); } var user = getUser.Entity; var server = getServer.Entity; return(await _characters.CreateCharacterAsync ( user, server, name, avatarUrl, nickname, summary, description, pronounFamily, ct )); }
public async Task <CreatedActionResult <CreateCharacterResponse> > PostCreateCharacterAsync( [FromServices] NaheulbookExecutionContext executionContext, CreateCharacterRequest request ) { try { var character = await _characterService.CreateCharacterAsync(executionContext, request); return(_mapper.Map <CreateCharacterResponse>(character)); } catch (ForbiddenAccessException ex) { throw new HttpErrorException(StatusCodes.Status403Forbidden, ex); } catch (GroupNotFoundException ex) { throw new HttpErrorException(StatusCodes.Status400BadRequest, ex); } }
public async Task <IActionResult> CreateCharacterAsync(Character character) { var newCharacter = await characterService.CreateCharacterAsync(character.Name, character.Description, character.Age); return(Created($"/api/character/{newCharacter}", newCharacter)); }