public async Task AddTagToCompanyAsync(string companyId, AddCompanyTagAssociationRequest addCompanyTagAssociationRequest) { if (string.IsNullOrWhiteSpace(companyId)) { throw new ArgumentNullException(nameof(companyId), $"{nameof(companyId)} can not be null, empty or whitespace."); } if (addCompanyTagAssociationRequest == null) { throw new ArgumentNullException(nameof(addCompanyTagAssociationRequest), $"{nameof(addCompanyTagAssociationRequest)} can not be null."); } if (addCompanyTagAssociationRequest.TagId == null) { throw new ArgumentNullException(nameof(addCompanyTagAssociationRequest), $"{nameof(addCompanyTagAssociationRequest.TagId)} can not be null."); } var requestRoute = CompanyApiEndpoints.Tag.Add(companyId); var requestString = JsonConvert.SerializeObject(addCompanyTagAssociationRequest, this.jsonSerializerSettings); var requestContent = ApiHelpers.GetStringContent(requestString); var response = await this.httpClient.PutAsync(requestRoute, requestContent); if (!response.IsSuccessStatusCode) { throw new FactroApiException( $"Could not add tag with id '{addCompanyTagAssociationRequest.TagId}' to company with id '{companyId}'.", response.RequestMessage.RequestUri.ToString(), response.StatusCode, response.Content == null ? null : await response.Content.ReadAsStringAsync()); } }
public async Task DeleteCompanyTagAsync_ExistingCompanyTagWithAssociation_ShouldDeleteCompanyTag() { // Arrange await this.fixture.ClearFactroInstanceAsync(); var companyApi = this.fixture.GetService <ICompanyApi>(); var existingCompany = await this.fixture.CreateTestCompanyAsync(companyApi); var existingCompanyTag = await this.fixture.CreateTestCompanyTagAsync(companyApi); var addCompanyTagRequest = new AddCompanyTagAssociationRequest(existingCompanyTag.Id); await companyApi.AddTagToCompanyAsync(existingCompany.Id, addCompanyTagRequest); var deleteCompanyTagResponse = new DeleteCompanyTagResponse(); // Act Func <Task> act = async() => deleteCompanyTagResponse = await companyApi.DeleteCompanyTagAsync(existingCompanyTag.Id); // Assert await act.Should().NotThrowAsync(); using (new AssertionScope()) { deleteCompanyTagResponse.Should().BeEquivalentTo(existingCompanyTag); (await this.fixture.GetCompanyTagsAsync(companyApi)).Should().NotContain(x => x.Id == existingCompanyTag.Id); } await this.fixture.ClearFactroInstanceAsync(); }
public async Task GetTagsOfCompanyAsync_ExistingCompanyWithTags_ShouldReturnExpectedCompany() { // Arrange await this.fixture.ClearFactroInstanceAsync(); var companyApi = this.fixture.GetService <ICompanyApi>(); var existingCompany = await this.fixture.CreateTestCompanyAsync(companyApi); var existingCompanyTags = new List <CreateCompanyTagResponse>(); const int companyTagCount = 5; for (var i = 0; i < companyTagCount; i++) { var createdCompanyTag = await this.fixture.CreateTestCompanyTagAsync(companyApi); existingCompanyTags.Add(createdCompanyTag); var addCompanyTagRequest = new AddCompanyTagAssociationRequest(createdCompanyTag.Id); await companyApi.AddTagToCompanyAsync(existingCompany.Id, addCompanyTagRequest); } var getCompanyTagsByIdResponse = new List <GetCompanyTagAssociationPayload>(); // Act Func <Task> act = async() => getCompanyTagsByIdResponse = (await companyApi.GetTagsOfCompanyAsync(existingCompany.Id)).ToList(); // Assert await act.Should().NotThrowAsync(); getCompanyTagsByIdResponse.Should().BeEquivalentTo(existingCompanyTags); await this.fixture.ClearFactroInstanceAsync(); }
public async Task RemoveTagFromCompanyAsync_ExistingCompanyWithAssociation_ShouldRemoveCompanyTag() { // Arrange await this.fixture.ClearFactroInstanceAsync(); var companyApi = this.fixture.GetService <ICompanyApi>(); var existingCompany = await this.fixture.CreateTestCompanyAsync(companyApi); var createdCompanyTag = await this.fixture.CreateTestCompanyTagAsync(companyApi); var addCompanyTagRequest = new AddCompanyTagAssociationRequest(createdCompanyTag.Id); await companyApi.AddTagToCompanyAsync(existingCompany.Id, addCompanyTagRequest); // Act Func <Task> act = async() => await companyApi.RemoveTagFromCompanyAsync(existingCompany.Id, createdCompanyTag.Id); // Assert await act.Should().NotThrowAsync(); using (new AssertionScope()) { (await companyApi.GetTagsOfCompanyAsync(existingCompany.Id)).Should().NotContain(x => x.Id == createdCompanyTag.Id); (await this.fixture.GetCompanyTagsAsync(companyApi)).Should().ContainEquivalentOf(createdCompanyTag); } await this.fixture.ClearFactroInstanceAsync(); }
public async Task AddTagToCompanyAsync_NullRequestModelTagId_ShouldThrowArgumentNullException() { // Arrange var companyId = Guid.NewGuid().ToString(); var addCompanyTagRequest = new AddCompanyTagAssociationRequest(tagId: null); var companyApi = this.fixture.GetCompanyApi(); // Act Func <Task> act = async() => await companyApi.AddTagToCompanyAsync(companyId, addCompanyTagRequest); // Assert await act.Should().ThrowAsync <ArgumentNullException>(); }
public async Task AddTagToCompanyAsync_ValidRequest_ShouldNotThrow() { // Arrange var tagId = Guid.NewGuid().ToString(); var addCompanyTagRequest = new AddCompanyTagAssociationRequest(tagId); var companyId = Guid.NewGuid().ToString(); var expectedResponse = new HttpResponseMessage(); var companyApi = this.fixture.GetCompanyApi(expectedResponse); // Act Func <Task> act = async() => await companyApi.AddTagToCompanyAsync(companyId, addCompanyTagRequest); // Assert await act.Should().NotThrowAsync(); }
public async Task AddTagToCompanyAsync_NotExistingCompany_ShouldNotAddCompanyTag() { // Arrange await this.fixture.ClearFactroInstanceAsync(); var companyApi = this.fixture.GetService <ICompanyApi>(); var createdCompanyTag = await this.fixture.CreateTestCompanyTagAsync(companyApi); var addCompanyTagRequest = new AddCompanyTagAssociationRequest(createdCompanyTag.Id); var companyId = Guid.NewGuid().ToString(); // Act Func <Task> act = async() => await companyApi.AddTagToCompanyAsync(companyId, addCompanyTagRequest); // Assert await act.Should().ThrowAsync <FactroApiException>(); (await companyApi.GetTagsOfCompanyAsync(companyId)).Should().BeEmpty(); await this.fixture.ClearFactroInstanceAsync(); }