From 40adc49492bb85087c4c88155bea8f7ca835876c Mon Sep 17 00:00:00 2001 From: Phan Huy Tran Date: Wed, 25 Sep 2024 14:16:27 +0200 Subject: [PATCH] Ensure Snake Case in JSON --- requests/createProject.http | 6 ++-- .../project/dto/CreateProjectDto.java | 3 ++ .../project/dto/GetProjectDto.java | 17 ++-------- .../project/CreateProjectActionTest.java | 31 ++++++++++--------- 4 files changed, 25 insertions(+), 32 deletions(-) rename src/test/java/de/szut/lf8_starter/{ => integration}/project/CreateProjectActionTest.java (75%) diff --git a/requests/createProject.http b/requests/createProject.http index add2394..7b08e28 100644 --- a/requests/createProject.http +++ b/requests/createProject.http @@ -8,8 +8,8 @@ Content-Type: application/json "leading_employee": 1, "employees": [2, 3], "contractor": 4, - "contractorName": "Peter File", + "contractor_name": "Peter File", "comment": "goal of project", - "startDate": "01.01.2000", - "plannedEndDate": "01.01.2001" + "start_date": "01.01.2000", + "planned_end_date": "01.01.2001" } \ No newline at end of file diff --git a/src/main/java/de/szut/lf8_starter/project/dto/CreateProjectDto.java b/src/main/java/de/szut/lf8_starter/project/dto/CreateProjectDto.java index 4c6ab0d..ebf4393 100644 --- a/src/main/java/de/szut/lf8_starter/project/dto/CreateProjectDto.java +++ b/src/main/java/de/szut/lf8_starter/project/dto/CreateProjectDto.java @@ -1,6 +1,8 @@ package de.szut.lf8_starter.project.dto; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Getter; @@ -11,6 +13,7 @@ import java.util.List; @Getter @Setter +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) public class CreateProjectDto { @NotBlank private String name; diff --git a/src/main/java/de/szut/lf8_starter/project/dto/GetProjectDto.java b/src/main/java/de/szut/lf8_starter/project/dto/GetProjectDto.java index c90cd50..614ece1 100644 --- a/src/main/java/de/szut/lf8_starter/project/dto/GetProjectDto.java +++ b/src/main/java/de/szut/lf8_starter/project/dto/GetProjectDto.java @@ -1,6 +1,8 @@ package de.szut.lf8_starter.project.dto; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Getter; @@ -11,35 +13,22 @@ import java.util.List; @Getter @Setter +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) public class GetProjectDto { private long id; - - @NotBlank private String name; - - @NotNull private long leadingEmployee; - private List employees; - - @NotNull private long contractor; - - @NotBlank private String contractorName; - - @NotBlank private String comment; - @NotNull @JsonFormat(pattern = "dd.MM.yyyy") private LocalDate startDate; - @NotNull @JsonFormat(pattern = "dd.MM.yyyy") private LocalDate plannedEndDate; - @NotNull @JsonFormat(pattern = "dd.MM.yyyy") private LocalDate endDate; } diff --git a/src/test/java/de/szut/lf8_starter/project/CreateProjectActionTest.java b/src/test/java/de/szut/lf8_starter/integration/project/CreateProjectActionTest.java similarity index 75% rename from src/test/java/de/szut/lf8_starter/project/CreateProjectActionTest.java rename to src/test/java/de/szut/lf8_starter/integration/project/CreateProjectActionTest.java index b510ac7..22e40f8 100644 --- a/src/test/java/de/szut/lf8_starter/project/CreateProjectActionTest.java +++ b/src/test/java/de/szut/lf8_starter/integration/project/CreateProjectActionTest.java @@ -1,5 +1,6 @@ -package de.szut.lf8_starter.project; +package de.szut.lf8_starter.integration.project; +import de.szut.lf8_starter.project.ProjectRepository; import org.json.JSONObject; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -29,15 +30,15 @@ public class CreateProjectActionTest { void test() throws Exception { String content = """ { - "name": "name", - "leading_employee": 1, - "employees": [2, 3], - "contractor": 4, - "contractorName": "Peter File", - "comment": "goal of project", - "startDate": "01.01.2000", - "plannedEndDate": "01.01.2001" - } + "name": "name", + "leading_employee": 1, + "employees": [2, 3], + "contractor": 4, + "contractor_name": "Peter File", + "comment": "goal of project", + "start_date": "01.01.2000", + "planned_end_date": "01.01.2001" + } """; final var contentAsString = this.mockMvc.perform( @@ -45,13 +46,13 @@ public class CreateProjectActionTest { ) .andExpect(status().isCreated()) .andExpect(jsonPath("name", is("name"))) - .andExpect(jsonPath("leadingEmployee", is(0))) + .andExpect(jsonPath("leading_employee", is(1))) .andExpect(jsonPath("employees", is(Arrays.asList(2, 3)))) .andExpect(jsonPath("contractor", is(4))) - .andExpect(jsonPath("contractorName", is("Peter File"))) + .andExpect(jsonPath("contractor_name", is("Peter File"))) .andExpect(jsonPath("comment", is("goal of project"))) - .andExpect(jsonPath("startDate", is("01.01.2000"))) - .andExpect(jsonPath("plannedEndDate", is("01.01.2001"))) + .andExpect(jsonPath("start_date", is("01.01.2000"))) + .andExpect(jsonPath("planned_end_date", is("01.01.2001"))) .andReturn() .getResponse() .getContentAsString(); @@ -60,7 +61,7 @@ public class CreateProjectActionTest { final var project = this.projectRepository.findById(id); assertThat(project.get().getName()).isEqualTo("name"); - assertThat(project.get().getLeadingEmployee()).isEqualTo(0); + assertThat(project.get().getLeadingEmployee()).isEqualTo(1); assertThat(project.get().getContractor()).isEqualTo(4); assertThat(project.get().getContractorName()).isEqualTo("Peter File"); assertThat(project.get().getComment()).isEqualTo("goal of project");