From 531c16d18f2032f486795c533a3ef7c07f95687d Mon Sep 17 00:00:00 2001 From: Hayk Hovhannisyan Date: Fri, 30 Jan 2026 13:44:31 +0400 Subject: [PATCH 1/4] IRT-5557: For Agreement Template, Agreement and B2B Scenario, implement methods to get a single object from the Integration Suite --- build.gradle | 2 +- .../integration/tpm/client/AgreementClient.java | 9 +++++++++ .../tpm/client/AgreementTemplateClient.java | 15 +++++++++++++-- .../integration/tpm/client/B2BScenarioClient.java | 10 ++++++++++ .../client/integration/AgreementClientTest.java | 12 ++++++++++++ .../integration/AgreementTemplateClientTest.java | 15 +++++++++++++++ .../client/integration/B2BScenarioClientTest.java | 12 ++++++++++++ 7 files changed, 72 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 78b52d4..dd3a331 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group = 'com.github.figaf' -version = '2.13-IRT-5516-SNAPSHOT' +version = '2.13-IRT-5557-SNAPSHOT' ext { enableSnapshotsForDependencyResolutionAndPublishing = project.findProperty('enableSnapshots') ?: 'false' diff --git a/src/main/java/com/figaf/integration/tpm/client/AgreementClient.java b/src/main/java/com/figaf/integration/tpm/client/AgreementClient.java index 65b028d..6381ea8 100644 --- a/src/main/java/com/figaf/integration/tpm/client/AgreementClient.java +++ b/src/main/java/com/figaf/integration/tpm/client/AgreementClient.java @@ -36,6 +36,15 @@ public List getAllMetadata(RequestContext requestContext) { ); } + public TpmObjectMetadata getSingleMetadata(RequestContext requestContext, String agreementId) { + log.debug("#getSingleMetadata: requestContext = {}, agreementId = {}", requestContext, agreementId); + return executeGet( + requestContext.withPreservingIntegrationSuiteUrl(), + String.format(AGREEMENT_RESOURCE, agreementId), + response -> new GenericTpmResponseParser().parseSingleObject(response, TpmObjectType.CLOUD_AGREEMENT) + ); + } + public TpmObjectMetadata createAgreement(RequestContext requestContext, AgreementCreationRequest agreementCreationRequest) { log.debug("#createAgreement: requestContext = {}, agreementCreationRequest = {}", requestContext, agreementCreationRequest); String payload = serializeToJson(agreementCreationRequest); diff --git a/src/main/java/com/figaf/integration/tpm/client/AgreementTemplateClient.java b/src/main/java/com/figaf/integration/tpm/client/AgreementTemplateClient.java index aa34749..740f641 100644 --- a/src/main/java/com/figaf/integration/tpm/client/AgreementTemplateClient.java +++ b/src/main/java/com/figaf/integration/tpm/client/AgreementTemplateClient.java @@ -5,6 +5,7 @@ import com.figaf.integration.tpm.entity.*; import com.figaf.integration.tpm.enumtypes.TpmObjectType; import com.figaf.integration.tpm.parser.B2BScenarioResponseParser; +import com.figaf.integration.tpm.parser.GenericTpmResponseParser; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.json.JSONArray; @@ -21,7 +22,8 @@ @Slf4j public class AgreementTemplateClient extends TpmBaseClient { - private static final String AGREEMENT_TEMPLATE_RESOURCE = "/itspaces/tpm/api/2.0/agreementtemplates"; + private static final String AGREEMENT_TEMPLATE_RESOURCE = "/itspaces/tpm/api/2.0/agreementtemplates/%s"; + private static final String AGREEMENT_TEMPLATES_RESOURCE = "/itspaces/tpm/api/2.0/agreementtemplates"; private static final String AGREEMENT_TEMPLATE_B2B_SCENARIOS_RESOURCE = "/itspaces/tpm/api/2.0/agreementtemplates/%s/b2bscenario/%s"; public AgreementTemplateClient(HttpClientsFactory httpClientsFactory) { @@ -33,7 +35,7 @@ public List getAllMetadata(RequestContext requestCont return executeGet( requestContext.withPreservingIntegrationSuiteUrl(), - AGREEMENT_TEMPLATE_RESOURCE, + AGREEMENT_TEMPLATES_RESOURCE, response -> { JSONArray agreementTemplates = new JSONArray(response); List agreementTemplateMetadataList = new ArrayList<>(); @@ -74,6 +76,15 @@ public List getAllMetadata(RequestContext requestCont ); } + public TpmObjectMetadata getSingleMetadata(RequestContext requestContext, String agreementTemplateId) { + log.debug("#getSingleMetadata: requestContext = {}, agreementTemplateId = {}", requestContext, agreementTemplateId); + return executeGet( + requestContext.withPreservingIntegrationSuiteUrl(), + format(AGREEMENT_TEMPLATE_RESOURCE, agreementTemplateId), + response -> new GenericTpmResponseParser().parseSingleObject(response, TpmObjectType.CLOUD_AGREEMENT_TEMPLATE) + ); + } + public List getB2BScenariosForAgreementTemplate(RequestContext requestContext, String agreementTemplateId, String b2BScenarioDetailsId) { log.debug("#getB2BScenariosForAgreementTemplate: requestContext = {}, agreementTemplateId = {}, b2BScenarioDetailsId = {}", requestContext, agreementTemplateId, b2BScenarioDetailsId); return executeGet( diff --git a/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java b/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java index d1dd8fc..5b7f51a 100644 --- a/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java +++ b/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java @@ -5,6 +5,7 @@ import com.figaf.integration.common.factory.HttpClientsFactory; import com.figaf.integration.tpm.entity.B2BScenarioMetadata; import com.figaf.integration.tpm.entity.TpmObjectMetadata; +import com.figaf.integration.tpm.enumtypes.TpmObjectType; import com.figaf.integration.tpm.parser.B2BScenarioResponseParser; import lombok.extern.slf4j.Slf4j; import org.json.JSONArray; @@ -37,6 +38,15 @@ public List getB2BScenariosForAgreement(RequestContext requ ); } + public TpmObjectMetadata getSingleMetadata(RequestContext requestContext, String agreementId, String b2BScenarioDetailsId) { + log.debug("#getSingleMetadata: requestContext = {}, agreementId = {}", requestContext, agreementId); + return executeGet( + requestContext.withPreservingIntegrationSuiteUrl(), + String.format(B2B_SCENARIO_RESOURCE, agreementId, b2BScenarioDetailsId), + response -> new B2BScenarioResponseParser().parseSingleObject(response, TpmObjectType.CLOUD_B2B_SCENARIO) + ); + } + public JSONObject getB2BScenariosForAgreementAsJsonObject(RequestContext requestContext, String agreementId) { log.debug("#getB2BScenariosForAgreementAsJsonResponse: requestContext = {}, agreementId = {}", requestContext, agreementId); return executeGet( diff --git a/src/test/java/com/figaf/integration/tpm/client/integration/AgreementClientTest.java b/src/test/java/com/figaf/integration/tpm/client/integration/AgreementClientTest.java index ed057df..709eaa8 100644 --- a/src/test/java/com/figaf/integration/tpm/client/integration/AgreementClientTest.java +++ b/src/test/java/com/figaf/integration/tpm/client/integration/AgreementClientTest.java @@ -43,6 +43,18 @@ void test_getAllMetadata(AgentTestData agentTestData) { assertThat(agreementsMetadata.get(0).getAgreementLifeCycleMetadata()).isNotNull(); } + @ParameterizedTest(name = PARAMETERIZED_TEST_NAME) + @ArgumentsSource(AgentTestDataProvider.class) + void test_getSingleMetadata(AgentTestData agentTestData) { + log.debug("#test_getSingleMetadata: agentTestData={}", agentTestData); + RequestContext requestContext = agentTestData.createRequestContext(agentTestData.getTitle()); + List agreementsMetadata = agreementClient.getAllMetadata(requestContext); + for (TpmObjectMetadata singleMetadata : agreementsMetadata) { + TpmObjectMetadata agreementMetadata = agreementClient.getSingleMetadata(requestContext, singleMetadata.getObjectId()); + assertThat(agreementMetadata).as(METADATA_NOT_NULL_MSG).isNotNull(); + } + } + @ParameterizedTest(name = PARAMETERIZED_TEST_NAME) @ArgumentsSource(AgentTestDataProvider.class) void test_createAndDeleteAgreement(CustomHostAgentTestData customHostAgentTestData) { diff --git a/src/test/java/com/figaf/integration/tpm/client/integration/AgreementTemplateClientTest.java b/src/test/java/com/figaf/integration/tpm/client/integration/AgreementTemplateClientTest.java index a1e169c..dbacc2f 100644 --- a/src/test/java/com/figaf/integration/tpm/client/integration/AgreementTemplateClientTest.java +++ b/src/test/java/com/figaf/integration/tpm/client/integration/AgreementTemplateClientTest.java @@ -8,6 +8,7 @@ import com.figaf.integration.tpm.entity.AdministrativeData; import com.figaf.integration.tpm.entity.AgreementTemplateMetadata; import com.figaf.integration.tpm.entity.B2BScenarioInAgreementTemplate; +import com.figaf.integration.tpm.entity.TpmObjectMetadata; import com.figaf.integration.tpm.entity.TpmObjectReference; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeAll; @@ -41,6 +42,20 @@ void test_getAllMetadata(AgentTestData agentTestData) { assertThat(agreementTemplateMetadataList).isNotEmpty(); } + @ParameterizedTest(name = PARAMETERIZED_TEST_NAME) + @ArgumentsSource(AgentTestDataProvider.class) + void test_getSingleMetadata(AgentTestData agentTestData) { + log.debug("#test_getSingleMetadata: agentTestData={}", agentTestData); + RequestContext requestContext = agentTestData.createRequestContext(agentTestData.getTitle()); + + List agreementTemplateMetadataList = agreementTemplateClient.getAllMetadata(requestContext); + for (AgreementTemplateMetadata agreementTemplateMetadata : agreementTemplateMetadataList) { + TpmObjectMetadata tpmObjectMetadata = agreementTemplateClient.getSingleMetadata(requestContext, agreementTemplateMetadata.getObjectId()); + assertThat(tpmObjectMetadata).isNotNull(); + } + assertThat(agreementTemplateMetadataList).isNotEmpty(); + } + @ParameterizedTest(name = PARAMETERIZED_TEST_NAME) @ArgumentsSource(AgentTestDataProvider.class) void test_getB2BScenariosForAgreementTemplate(AgentTestData agentTestData) { diff --git a/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java b/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java index fee6f66..438f94a 100644 --- a/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java +++ b/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java @@ -79,6 +79,18 @@ void test_getB2BScenariosForAgreement(AgentTestData agentTestData) { assertThat(receiverCommunicationMetadataList).isNotEmpty(); } + @ParameterizedTest(name = PARAMETERIZED_TEST_NAME) + @ArgumentsSource(AgentTestDataProvider.class) + void test_getSingleMetadata(AgentTestData agentTestData) { + RequestContext requestContext = agentTestData.createRequestContext(agentTestData.getTitle()); + List agreements = agreementClient.getAllMetadata(requestContext); + + for (TpmObjectMetadata agreement : agreements) { + TpmObjectMetadata tpmObjectMetadata = b2BScenarioClient.getSingleMetadata(requestContext, agreement.getObjectId(), agreement.getB2bScenarioDetailsId()); + assertThat(tpmObjectMetadata).isNotNull(); + } + } + @ParameterizedTest(name = PARAMETERIZED_TEST_NAME) @ArgumentsSource(AgentTestDataProvider.class) void test_getB2BScenariosForAgreementAsJsonObject(AgentTestData agentTestData) { From 8efafc9ed54c144112963d534b7ca4f21bc3f70f Mon Sep 17 00:00:00 2001 From: Hayk Hovhannisyan Date: Fri, 30 Jan 2026 16:58:14 +0400 Subject: [PATCH 2/4] IRT-5557: Add new parseSingleResponse common method for AgreementTemplateMetadata retrieval --- .../tpm/client/AgreementTemplateClient.java | 73 ++++++++++--------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/figaf/integration/tpm/client/AgreementTemplateClient.java b/src/main/java/com/figaf/integration/tpm/client/AgreementTemplateClient.java index 740f641..31d9b5a 100644 --- a/src/main/java/com/figaf/integration/tpm/client/AgreementTemplateClient.java +++ b/src/main/java/com/figaf/integration/tpm/client/AgreementTemplateClient.java @@ -3,9 +3,7 @@ import com.figaf.integration.common.entity.RequestContext; import com.figaf.integration.common.factory.HttpClientsFactory; import com.figaf.integration.tpm.entity.*; -import com.figaf.integration.tpm.enumtypes.TpmObjectType; import com.figaf.integration.tpm.parser.B2BScenarioResponseParser; -import com.figaf.integration.tpm.parser.GenericTpmResponseParser; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.json.JSONArray; @@ -17,6 +15,9 @@ import java.util.List; import static com.figaf.integration.common.utils.Utils.optString; +import static com.figaf.integration.tpm.enumtypes.TpmObjectType.CLOUD_AGREEMENT_TEMPLATE; +import static com.figaf.integration.tpm.enumtypes.TpmObjectType.CLOUD_COMPANY_PROFILE; +import static com.figaf.integration.tpm.enumtypes.TpmObjectType.CLOUD_SUBSIDIARY; import static java.lang.String.format; @Slf4j @@ -40,48 +41,19 @@ public List getAllMetadata(RequestContext requestCont JSONArray agreementTemplates = new JSONArray(response); List agreementTemplateMetadataList = new ArrayList<>(); for (int i = 0; i < agreementTemplates.length(); i++) { - JSONObject agreementTemplateJSONObject = agreementTemplates.getJSONObject(i); - AgreementTemplateMetadata agreementTemplateMetadata = new AgreementTemplateMetadata(); - String agreementTemplateId = agreementTemplateJSONObject.getString("id"); - agreementTemplateMetadata.setObjectId(agreementTemplateId); - agreementTemplateMetadata.setTpmObjectType(TpmObjectType.CLOUD_AGREEMENT_TEMPLATE); - agreementTemplateMetadata.setDisplayedName(agreementTemplateJSONObject.getString("displayName")); - JSONObject administrativeDataJsonObject = agreementTemplateJSONObject.getJSONObject("administrativeData"); - AdministrativeData administrativeData = buildAdministrativeDataObject(administrativeDataJsonObject); - agreementTemplateMetadata.setAdministrativeData(administrativeData); - agreementTemplateMetadata.setPayload(agreementTemplateJSONObject.toString()); - String b2BScenarioDetailsId = optString(agreementTemplateJSONObject, "B2BScenarioDetailsId"); - agreementTemplateMetadata.setB2bScenarioDetailsId(b2BScenarioDetailsId); - - AdministrativeData b2bScenarioAdministrativeData = getB2bScenarioDetailsAdministrativeData(requestContext, agreementTemplateId, b2BScenarioDetailsId); - agreementTemplateMetadata.setB2bScenarioDetailsAdministrativeData(b2bScenarioAdministrativeData); - - JSONObject companyDataJsonObject = agreementTemplateJSONObject.getJSONObject("CompanyData"); - TpmObjectReference tpmObjectReference = new TpmObjectReference(); - tpmObjectReference.setObjectId(companyDataJsonObject.getString("Id")); - String selectedProfileType = optString(companyDataJsonObject, "SelectedProfileType"); - if ("SUBSIDIARY".equals(selectedProfileType)) { - tpmObjectReference.setTpmObjectType(TpmObjectType.CLOUD_SUBSIDIARY); - } else { - tpmObjectReference.setTpmObjectType(TpmObjectType.CLOUD_COMPANY_PROFILE); - } - agreementTemplateMetadata.setTpmObjectReferences(Collections.singletonList(tpmObjectReference)); - - agreementTemplateMetadataList.add(agreementTemplateMetadata); + agreementTemplateMetadataList.add(parseSingleObject(requestContext, agreementTemplates.getJSONObject(i))); } - return agreementTemplateMetadataList; } - ); } - public TpmObjectMetadata getSingleMetadata(RequestContext requestContext, String agreementTemplateId) { + public AgreementTemplateMetadata getSingleMetadata(RequestContext requestContext, String agreementTemplateId) { log.debug("#getSingleMetadata: requestContext = {}, agreementTemplateId = {}", requestContext, agreementTemplateId); return executeGet( requestContext.withPreservingIntegrationSuiteUrl(), format(AGREEMENT_TEMPLATE_RESOURCE, agreementTemplateId), - response -> new GenericTpmResponseParser().parseSingleObject(response, TpmObjectType.CLOUD_AGREEMENT_TEMPLATE) + response -> parseSingleObject(requestContext, new JSONObject(response)) ); } @@ -159,4 +131,37 @@ public AdministrativeData getB2bScenarioDetailsAdministrativeData(RequestContext } } + private AgreementTemplateMetadata parseSingleObject(RequestContext requestContext, JSONObject agreementTemplateJSONObject) { + AgreementTemplateMetadata agreementTemplateMetadata = new AgreementTemplateMetadata(); + + String agreementTemplateId = agreementTemplateJSONObject.getString("id"); + agreementTemplateMetadata.setObjectId(agreementTemplateId); + agreementTemplateMetadata.setTpmObjectType(CLOUD_AGREEMENT_TEMPLATE); + agreementTemplateMetadata.setDisplayedName(agreementTemplateJSONObject.getString("displayName")); + + JSONObject administrativeDataJsonObject = agreementTemplateJSONObject.getJSONObject("administrativeData"); + AdministrativeData administrativeData = buildAdministrativeDataObject(administrativeDataJsonObject); + agreementTemplateMetadata.setAdministrativeData(administrativeData); + + agreementTemplateMetadata.setPayload(agreementTemplateJSONObject.toString()); + + String b2BScenarioDetailsId = optString(agreementTemplateJSONObject, "B2BScenarioDetailsId"); + agreementTemplateMetadata.setB2bScenarioDetailsId(b2BScenarioDetailsId); + + AdministrativeData b2bScenarioAdministrativeData = getB2bScenarioDetailsAdministrativeData(requestContext, agreementTemplateId, b2BScenarioDetailsId); + agreementTemplateMetadata.setB2bScenarioDetailsAdministrativeData(b2bScenarioAdministrativeData); + + JSONObject companyDataJsonObject = agreementTemplateJSONObject.getJSONObject("CompanyData"); + + TpmObjectReference tpmObjectReference = new TpmObjectReference(); + tpmObjectReference.setObjectId(companyDataJsonObject.getString("Id")); + + String selectedProfileType = optString(companyDataJsonObject, "SelectedProfileType"); + tpmObjectReference.setTpmObjectType("SUBSIDIARY".equals(selectedProfileType) ? CLOUD_SUBSIDIARY : CLOUD_COMPANY_PROFILE); + + agreementTemplateMetadata.setTpmObjectReferences(Collections.singletonList(tpmObjectReference)); + + return agreementTemplateMetadata; + } + } \ No newline at end of file From c1d5eb82951a185339efaf255d81d7c72edfa85d Mon Sep 17 00:00:00 2001 From: Hayk Hovhannisyan Date: Fri, 30 Jan 2026 20:09:21 +0400 Subject: [PATCH 3/4] IRT-5557: Add new getSingleMetadata with agreementMetadata and composite b2bscenarioId --- .../tpm/client/B2BScenarioClient.java | 25 ++++++++++++------- .../integration/B2BScenarioClientTest.java | 11 +++++--- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java b/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java index 5b7f51a..0340b51 100644 --- a/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java +++ b/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java @@ -5,7 +5,6 @@ import com.figaf.integration.common.factory.HttpClientsFactory; import com.figaf.integration.tpm.entity.B2BScenarioMetadata; import com.figaf.integration.tpm.entity.TpmObjectMetadata; -import com.figaf.integration.tpm.enumtypes.TpmObjectType; import com.figaf.integration.tpm.parser.B2BScenarioResponseParser; import lombok.extern.slf4j.Slf4j; import org.json.JSONArray; @@ -24,9 +23,11 @@ public class B2BScenarioClient extends TpmBaseClient { private static final String B2B_SCENARIOS_RESOURCE = "/itspaces/tpm/api/2.0/tradingpartneragreements/%s/b2bscenario"; private static final String B2B_SCENARIO_RESOURCE = "/itspaces/tpm/api/2.0/tradingpartneragreements/%s/b2bscenario/%s"; + private final AgreementClient agreementClient; - public B2BScenarioClient(HttpClientsFactory httpClientsFactory) { + public B2BScenarioClient(HttpClientsFactory httpClientsFactory, AgreementClient agreementClient) { super(httpClientsFactory); + this.agreementClient = agreementClient; } public List getB2BScenariosForAgreement(RequestContext requestContext, TpmObjectMetadata agreementMetadata) { @@ -38,13 +39,19 @@ public List getB2BScenariosForAgreement(RequestContext requ ); } - public TpmObjectMetadata getSingleMetadata(RequestContext requestContext, String agreementId, String b2BScenarioDetailsId) { - log.debug("#getSingleMetadata: requestContext = {}, agreementId = {}", requestContext, agreementId); - return executeGet( - requestContext.withPreservingIntegrationSuiteUrl(), - String.format(B2B_SCENARIO_RESOURCE, agreementId, b2BScenarioDetailsId), - response -> new B2BScenarioResponseParser().parseSingleObject(response, TpmObjectType.CLOUD_B2B_SCENARIO) - ); + public B2BScenarioMetadata getSingleMetadata(RequestContext requestContext, String agreementId, String compositeB2bScenarioId) { + log.debug("#getSingleMetadata: requestContext = {}, agreementId = {}, compositeB2bScenarioId = {}", requestContext, agreementId, compositeB2bScenarioId); + TpmObjectMetadata agreementMetadata = agreementClient.getSingleMetadata(requestContext, agreementId); + + // First get all scenarios + List allScenarios = getB2BScenariosForAgreement(requestContext, agreementMetadata); + + + // Then filter by the specific ID + return allScenarios.stream() + .filter(scenario -> scenario.getObjectId().equals(compositeB2bScenarioId)) + .findFirst() + .orElse(null); } public JSONObject getB2BScenariosForAgreementAsJsonObject(RequestContext requestContext, String agreementId) { diff --git a/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java b/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java index 438f94a..adf4fa9 100644 --- a/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java +++ b/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java @@ -29,7 +29,7 @@ class B2BScenarioClientTest { static void setUp() { HttpClientsFactory httpClientsFactory = new HttpClientsFactory(); agreementClient = new AgreementClient(httpClientsFactory); - b2BScenarioClient = new B2BScenarioClient(httpClientsFactory); + b2BScenarioClient = new B2BScenarioClient(httpClientsFactory, agreementClient); } @ParameterizedTest(name = PARAMETERIZED_TEST_NAME) @@ -81,13 +81,16 @@ void test_getB2BScenariosForAgreement(AgentTestData agentTestData) { @ParameterizedTest(name = PARAMETERIZED_TEST_NAME) @ArgumentsSource(AgentTestDataProvider.class) - void test_getSingleMetadata(AgentTestData agentTestData) { + void test_getSingleB2BScenarioMetadata(AgentTestData agentTestData) { RequestContext requestContext = agentTestData.createRequestContext(agentTestData.getTitle()); List agreements = agreementClient.getAllMetadata(requestContext); for (TpmObjectMetadata agreement : agreements) { - TpmObjectMetadata tpmObjectMetadata = b2BScenarioClient.getSingleMetadata(requestContext, agreement.getObjectId(), agreement.getB2bScenarioDetailsId()); - assertThat(tpmObjectMetadata).isNotNull(); + List b2BScenariosForAgreement = b2BScenarioClient.getB2BScenariosForAgreement(requestContext, agreement); + for (B2BScenarioMetadata b2BScenarioForAgreement : b2BScenariosForAgreement) { + B2BScenarioMetadata b2BScenarioMetadata = b2BScenarioClient.getSingleMetadata(requestContext, agreement.getObjectId(), b2BScenarioForAgreement.getObjectId()); + assertThat(b2BScenarioMetadata).isNotNull(); + } } } From 304e2483bcb14f41ca632a689e74b58825d3093b Mon Sep 17 00:00:00 2001 From: Hayk Hovhannisyan Date: Mon, 2 Feb 2026 09:13:32 +0400 Subject: [PATCH 4/4] IRT-5557: Handle PR comments --- .../tpm/client/B2BScenarioClient.java | 2 +- .../integration/B2BScenarioClientTest.java | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java b/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java index 0340b51..7ae1489 100644 --- a/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java +++ b/src/main/java/com/figaf/integration/tpm/client/B2BScenarioClient.java @@ -51,7 +51,7 @@ public B2BScenarioMetadata getSingleMetadata(RequestContext requestContext, Stri return allScenarios.stream() .filter(scenario -> scenario.getObjectId().equals(compositeB2bScenarioId)) .findFirst() - .orElse(null); + .orElseThrow(() -> new ClientIntegrationException(format("B2B scenario with ID '%s' not found for agreement '%s'", compositeB2bScenarioId, agreementId))); } public JSONObject getB2BScenariosForAgreementAsJsonObject(RequestContext requestContext, String agreementId) { diff --git a/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java b/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java index adf4fa9..0a8b0ce 100644 --- a/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java +++ b/src/test/java/com/figaf/integration/tpm/client/integration/B2BScenarioClientTest.java @@ -83,11 +83,20 @@ void test_getB2BScenariosForAgreement(AgentTestData agentTestData) { @ArgumentsSource(AgentTestDataProvider.class) void test_getSingleB2BScenarioMetadata(AgentTestData agentTestData) { RequestContext requestContext = agentTestData.createRequestContext(agentTestData.getTitle()); - List agreements = agreementClient.getAllMetadata(requestContext); - - for (TpmObjectMetadata agreement : agreements) { - List b2BScenariosForAgreement = b2BScenarioClient.getB2BScenariosForAgreement(requestContext, agreement); - for (B2BScenarioMetadata b2BScenarioForAgreement : b2BScenariosForAgreement) { + List limitedAgreements = agreementClient + .getAllMetadata(requestContext) + .stream() + .limit(10) // Take first 10 agreements + .toList(); + + for (TpmObjectMetadata agreement : limitedAgreements) { + List limitedB2BScenariosForAgreement = + b2BScenarioClient + .getB2BScenariosForAgreement(requestContext, agreement) + .stream() + .limit(10) // Take first 10 B2BScenarios For Agreement + .toList(); + for (B2BScenarioMetadata b2BScenarioForAgreement : limitedB2BScenariosForAgreement) { B2BScenarioMetadata b2BScenarioMetadata = b2BScenarioClient.getSingleMetadata(requestContext, agreement.getObjectId(), b2BScenarioForAgreement.getObjectId()); assertThat(b2BScenarioMetadata).isNotNull(); }