From 3c2fc08301d5c2b7a4c825b0c0db9943ad968a15 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");