コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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();
        }
コード例 #7
0
        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();
        }