void updateBusinessProcess()

in ddm-rrm/src/it/java/com/epam/digital/data/platform/management/CandidateVersionBPControllerIT.java [362:409]


    void updateBusinessProcess() {
      // add file to "remote" repo
      final var headBpContent = context.getResourceContent(
          "/versions/candidates/{versionCandidateId}/business-processes/{businessProcessName}/PUT/valid-bp-head.bpmn");
      context.addFileToRemoteHeadRepo("/bpmn/valid-bp.bpmn", headBpContent);

      // mock gerrit change info for version candidate
      final var versionCandidateId = context.createVersionCandidate();

      // define expected bp content to update
      final var expectedBpContent = context.getResourceContent(
          "/versions/candidates/{versionCandidateId}/business-processes/{businessProcessName}/PUT/valid-bp-version-candidate.bpmn");

      // perform query
      mockMvc.perform(
          put("/versions/candidates/{versionCandidateId}/business-processes/{businessProcessName}",
              versionCandidateId, "valid-bp")
              .contentType(MediaType.TEXT_XML).content(expectedBpContent)
              .accept(MediaType.TEXT_XML)
      ).andExpectAll(
          status().isOk(),
          content().contentType("text/xml"),
          xpath("/bpmn:definitions/bpmn:process/@id", BPMN_NAMESPACES).string("valid-bp"),
          xpath("/bpmn:definitions/bpmn:process/@name", BPMN_NAMESPACES).string(
              "Valid BP Version Candidate")
      );

      // define expected created date for process
      final var expectedCreated = context.getHeadRepoDatesByPath("bpmn/valid-bp.bpmn")
          .getCreated();

      // assert that actual content and expected have no differences except for created and updated dates
      final var actualBpContent = context.getFileFromRemoteVersionCandidateRepo(
          "/bpmn/valid-bp.bpmn");

      assertNoDifferences(expectedBpContent, actualBpContent);

      // assert that business process dates are close to current date
      final var document = DocumentBuilderFactory.newInstance().newDocumentBuilder()
          .parse(new InputSource(new StringReader(actualBpContent)));
      final var createdXpath = XPathFactory.newInstance().newXPath();
      final var created = createdXpath.compile("/definitions/@created").evaluate(document);
      final var updated = createdXpath.compile("/definitions/@modified").evaluate(document);
      Assertions.assertThat(created)
          .isEqualTo(expectedCreated);
      Assertions.assertThat(LocalDateTime.parse(updated, JacksonConfig.DATE_TIME_FORMATTER))
          .isCloseTo(LocalDateTime.now(), within(1, ChronoUnit.MINUTES));
    }