void createBusinessProcess()

in ddm-rrm/src/it/java/com/epam/digital/data/platform/management/MasterVersionBPControllerIT.java [176:219]


    void createBusinessProcess() {

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

      // perform query
      mockMvc.perform(
          post("/versions/master/business-processes/{businessProcessName}",
              "valid-bp")
              .contentType(MediaType.TEXT_XML)
              .content(expectedBpContent)
              .accept(MediaType.TEXT_XML)
      ).andExpectAll(
          status().isCreated(),
          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")
      );

      // assert that actual content and expected have no differences except for created and updated dates
      var actualBpContent = mockMvc.perform(
          get("/versions/master/business-processes/{businessProcessName}", "valid-bp")
              .accept(MediaType.TEXT_XML, MediaType.APPLICATION_JSON)
      ).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")
      ).andReturn().getResponse().getContentAsString();

      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(LocalDateTime.parse(created, JacksonConfig.DATE_TIME_FORMATTER))
          .isCloseTo(LocalDateTime.now(), within(1, ChronoUnit.MINUTES));
      Assertions.assertThat(LocalDateTime.parse(updated, JacksonConfig.DATE_TIME_FORMATTER))
          .isCloseTo(LocalDateTime.now(), within(1, ChronoUnit.MINUTES));
    }