void createForm()

in ddm-rrm/src/it/java/com/epam/digital/data/platform/management/MasterVersionFormsControllerIT.java [194:235]


    void createForm() {

      // define expected form content to create
      final var expectedFormContent = context.getResourceContent(
          "/versions/master/forms/{formName}/POST/valid-form-master.json");

      // perform query
      mockMvc.perform(
          post("/versions/master/forms/{formName}",
              "valid-form-master")
              .contentType(MediaType.APPLICATION_JSON)
              .content(expectedFormContent)
              .accept(MediaType.APPLICATION_JSON)
      ).andExpectAll(
          status().isCreated(),
          content().contentType(MediaType.APPLICATION_JSON),
          jsonPath("$.name", is("valid-form")),
          jsonPath("$.title", is("Valid form"))
      );

      // get created form
      var result = mockMvc.perform(
              get("/versions/master/forms/{formName}", "valid-form-master")
                  .accept(MediaType.APPLICATION_JSON)
          ).andExpectAll(
              status().isOk(),
              jsonPath("$.name", is("valid-form")),
              jsonPath("$.title", is("Valid form")))
          .andReturn()
          .getResponse();

      // assert that form dates are close to current date
      var form = JsonParser.parseString(result.getContentAsString()).getAsJsonObject();
      final var created = LocalDateTime.parse(form.get("created").getAsString(),
          JacksonConfig.DATE_TIME_FORMATTER).format(JacksonConfig.DATE_TIME_FORMATTER);
      final var updated = LocalDateTime.parse(form.get("modified").getAsString(),
          JacksonConfig.DATE_TIME_FORMATTER).format(JacksonConfig.DATE_TIME_FORMATTER);
      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));
    }