public async Task CreateProjectTagAsync_BadRequest_ShouldThrowProjectApiException()
        {
            // Arrange
            var existingProjectTag = new GetProjectTagPayload
            {
                Id   = Guid.NewGuid().ToString(),
                Name = Guid.NewGuid().ToString(),
            };

            var createProjectTagRequest = new CreateProjectTagRequest(existingProjectTag.Name);

            var expectedResponse = new HttpResponseMessage
            {
                StatusCode     = HttpStatusCode.BadRequest,
                RequestMessage = new HttpRequestMessage
                {
                    RequestUri = new Uri("http://www.mock-web-address.com"),
                },
            };

            var projectApi = this.fixture.GetProjectApi(expectedResponse);

            // Act
            Func <Task> act = async() => await projectApi.CreateProjectTagAsync(createProjectTagRequest);

            // Assert
            await act.Should().ThrowAsync <FactroApiException>();
        }
        public async Task CreateProjectTagAsync_ValidRequest_ShouldCreateProjectTag()
        {
            // Arrange
            var tagName = Guid.NewGuid().ToString();

            var createProjectTagRequest = new CreateProjectTagRequest(tagName);

            var expectedProjectTag = new CreateProjectTagResponse
            {
                Id   = Guid.NewGuid().ToString(),
                Name = tagName,
            };

            var expectedResponseContent =
                new StringContent(JsonConvert.SerializeObject(expectedProjectTag, this.fixture.JsonSerializerSettings));

            var expectedResponse = new HttpResponseMessage
            {
                Content = expectedResponseContent,
            };

            var projectApi = this.fixture.GetProjectApi(expectedResponse);

            var createProjectTagResponse = default(CreateProjectTagResponse);

            // Act
            Func <Task> act = async() => createProjectTagResponse = await projectApi.CreateProjectTagAsync(createProjectTagRequest);

            // Assert
            await act.Should().NotThrowAsync();

            createProjectTagResponse.Should().BeEquivalentTo(expectedProjectTag);
        }
        public async Task CreateProjectTagAsync_NullRequestModelName_ShouldThrowArgumentNullException()
        {
            // Arrange
            var createProjectTagRequest = new CreateProjectTagRequest(name: null);

            var projectApi = this.fixture.GetProjectApi();

            // Act
            Func <Task> act = async() => await projectApi.CreateProjectTagAsync(createProjectTagRequest);

            // Assert
            await act.Should().ThrowAsync <ArgumentNullException>();
        }
Exemplo n.º 4
0
        public async Task <CreateProjectTagResponse> CreateProjectTagAsync(CreateProjectTagRequest createProjectTagRequest)
        {
            if (createProjectTagRequest == null)
            {
                throw new ArgumentNullException(nameof(createProjectTagRequest), $"{nameof(createProjectTagRequest)} can not be null.");
            }

            if (createProjectTagRequest.Name == null)
            {
                throw new ArgumentNullException(nameof(createProjectTagRequest), $"{nameof(createProjectTagRequest.Name)} can not be null.");
            }

            var requestRoute = ProjectApiEndpoints.Tag.Create();

            var requestString  = JsonConvert.SerializeObject(createProjectTagRequest, this.jsonSerializerSettings);
            var requestContent = ApiHelpers.GetStringContent(requestString);

            var response = await this.httpClient.PostAsync(requestRoute, requestContent);

            if (!response.IsSuccessStatusCode)
            {
                throw new FactroApiException(
                          "Could not create project tag.",
                          response.RequestMessage.RequestUri.ToString(),
                          response.StatusCode,
                          response.Content == null ? null : await response.Content.ReadAsStringAsync());
            }

            var responseContentString = await response.Content.ReadAsStringAsync();

            var result =
                JsonConvert.DeserializeObject <CreateProjectTagResponse>(
                    responseContentString,
                    this.jsonSerializerSettings);

            return(result);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Creates new project tag.
 /// </summary>
 /// <param name="request">Create tag request.</param>
 /// <returns>Newly created tag.</returns>
 public async Task <Tag> CreateTagAsync(CreateProjectTagRequest request)
 {
     Guard.NotNull(request, nameof(request));
     return(await _httpFacade.Post <Tag>($"projects/{request.ProjectId}/repository/tags", request));
 }