Beispiel #1
0
        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);
        }
Beispiel #2
0
    /// <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);
            }
        }
Beispiel #4
0
        public async Task <IActionResult> CreateCharacterAsync(Character character)
        {
            var newCharacter = await characterService.CreateCharacterAsync(character.Name, character.Description, character.Age);

            return(Created($"/api/character/{newCharacter}", newCharacter));
        }