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>(); }
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); }
/// <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)); }