From 43de649491072e669f93ae965dde611faa566587 Mon Sep 17 00:00:00 2001
From: idolice <349031587@qq.com>
Date: Mon, 25 May 2020 11:18:45 +0800
Subject: [PATCH 1/9] data-binding
---
README.md | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index d423f9d7..8188e8b4 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,20 @@
### 作业描述
-#### 切换到课程对应的分支查看每节课的作业要求
-* Routing: routing
-* Data Binding: data-binding
-* Validation: validation
-* Customised Response: customize-response
-* Error Handling: error-handling
-
- 注意:最终需要将改动合并到master分支
+根据课堂上的demo,完成下面需求
+1. 提供获取某一条热搜事件的接口
+2. 提供能够根据起始参数,获取对应范围内的热搜事件列表的接口
+3. 提供添加热搜事件的接口(事件包含两个字段:事件名称和关键字)
+4. 提供修改某条热搜事件的接口(demo没有展示,请大家自己完成)
+5. 提供删除某条热搜事件的接口(demo没有展示,请大家自己完成)
+
+#### 需求4、5详细描述
+
+* 需求4: 修改某条事件时(通过参数传递的序号,修改列表中对应的事件数据),如果RequestBody只传了eventName没有传keyword那么仅仅只修改eventName
+ 如果只传了keyword没有传eventName,那么只修改keyword字段
+ 如果两个字段都传了,那么都进行修改
+
+* 需求5: 通过参数传递的序号,删除列表中对应的某条事件数据
+
+
+ 注意:所有的需求都请先写测试再写实现
From 080e6c25e7a67fdd3015234f687f45e8834930f2 Mon Sep 17 00:00:00 2001
From: liyixuan <13069579956@163.com>
Date: Tue, 15 Sep 2020 18:17:22 +0800
Subject: [PATCH 2/9] getOneRsEvent and getRSEvent
---
.../thoughtworks/rslist/api/RsController.java | 21 +++++++++++-
.../rslist/api/RsControllerTest.java | 34 +++++++++++++++++++
2 files changed, 54 insertions(+), 1 deletion(-)
create mode 100644 src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
diff --git a/src/main/java/com/thoughtworks/rslist/api/RsController.java b/src/main/java/com/thoughtworks/rslist/api/RsController.java
index 6899e4de..1ed72329 100644
--- a/src/main/java/com/thoughtworks/rslist/api/RsController.java
+++ b/src/main/java/com/thoughtworks/rslist/api/RsController.java
@@ -1,5 +1,8 @@
package com.thoughtworks.rslist.api;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
@@ -7,5 +10,21 @@
@RestController
public class RsController {
- private List rsList = Arrays.asList("第一条事件", "第二条事件", "第三条事件");
+ private List rsList = Arrays.asList("第一条事件","第二条事件","第三条事件");
+
+ // @GetMapping("/rs/list")
+// public String getRslist(){
+// return rsList.toString();
+// }
+ @GetMapping("/rs/{index}")
+ public String getOneRsEvent(@PathVariable int index){
+ return rsList.get(index -1);
+ }
+ @GetMapping("/rs/list")
+ public String getRsEventBetween(@RequestParam(required = false) Integer start,@RequestParam(required = false) Integer end){
+ if(start == null || end == null){
+ return rsList.toString();
+ }
+ return rsList.subList(start-1,end).toString();
+ }
}
diff --git a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
new file mode 100644
index 00000000..470108bd
--- /dev/null
+++ b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
@@ -0,0 +1,34 @@
+package com.thoughtworks.rslist.api;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@AutoConfigureMockMvc
+public class RsControllerTest {
+ @Autowired
+ MockMvc mockMvc;
+ @Test
+ public void should_get_rs_event_list() throws Exception{
+ mockMvc.perform(get("/rs/list")).andExpect(content().string("[第一条事件, 第二条事件, 第三条事件]"))
+ .andExpect(status().isOk());
+ }
+
+ @Test
+ public void should_get_one_rs_event() throws Exception{
+ mockMvc.perform(get("/rs/1")).andExpect(content().string("第一条事件"))
+ .andExpect(status().isOk());
+ }
+ @Test
+ public void should_get_rs_event_between() throws Exception{
+ mockMvc.perform(get("/rs/list?start=1&end=2")).andExpect(content().string("[第一条事件, 第二条事件]"))
+ .andExpect(status().isOk());
+ }
+}
From 7708f2f103a895f3183454250caaddcd529ee169 Mon Sep 17 00:00:00 2001
From: liyixuan <13069579956@163.com>
Date: Tue, 15 Sep 2020 18:53:42 +0800
Subject: [PATCH 3/9] refactoring
---
.../thoughtworks/rslist/api/RsController.java | 19 ++++++--
.../thoughtworks/rslist/domain/RsEvent.java | 27 +++++++++++
.../rslist/api/RsControllerTest.java | 48 +++++++++++++++++--
3 files changed, 84 insertions(+), 10 deletions(-)
create mode 100644 src/main/java/com/thoughtworks/rslist/domain/RsEvent.java
diff --git a/src/main/java/com/thoughtworks/rslist/api/RsController.java b/src/main/java/com/thoughtworks/rslist/api/RsController.java
index 1ed72329..6d83807d 100644
--- a/src/main/java/com/thoughtworks/rslist/api/RsController.java
+++ b/src/main/java/com/thoughtworks/rslist/api/RsController.java
@@ -1,30 +1,39 @@
package com.thoughtworks.rslist.api;
+import com.thoughtworks.rslist.domain.RsEvent;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@RestController
public class RsController {
- private List rsList = Arrays.asList("第一条事件","第二条事件","第三条事件");
+ private List rsList = initRsEventList();
+ private List initRsEventList(){
+ List rsEventList = new ArrayList<>();
+ rsEventList.add(new RsEvent("第一条事件","无标签"));
+ rsEventList.add(new RsEvent("第二条事件","无标签"));
+ rsEventList.add(new RsEvent("第三条事件","无标签"));
+ return rsEventList;
+ }
// @GetMapping("/rs/list")
// public String getRslist(){
// return rsList.toString();
// }
@GetMapping("/rs/{index}")
- public String getOneRsEvent(@PathVariable int index){
+ public RsEvent getOneRsEvent(@PathVariable int index){
return rsList.get(index -1);
}
@GetMapping("/rs/list")
- public String getRsEventBetween(@RequestParam(required = false) Integer start,@RequestParam(required = false) Integer end){
+ public List getRsEventBetween(@RequestParam(required = false) Integer start,@RequestParam(required = false) Integer end){
if(start == null || end == null){
- return rsList.toString();
+ return rsList;
}
- return rsList.subList(start-1,end).toString();
+ return rsList.subList(start-1,end);
}
}
diff --git a/src/main/java/com/thoughtworks/rslist/domain/RsEvent.java b/src/main/java/com/thoughtworks/rslist/domain/RsEvent.java
new file mode 100644
index 00000000..81eea6bc
--- /dev/null
+++ b/src/main/java/com/thoughtworks/rslist/domain/RsEvent.java
@@ -0,0 +1,27 @@
+package com.thoughtworks.rslist.domain;
+
+public class RsEvent {
+ private String eventName;
+ private String keyWord;
+
+ public RsEvent(String eventName,String keyWord){
+ this.eventName = eventName;
+ this.keyWord = keyWord;
+ }
+
+ public String getKeyWord() {
+ return keyWord;
+ }
+
+ public void setKeyWord(String keyWord) {
+ this.keyWord = keyWord;
+ }
+
+ public String getEventName() {
+ return eventName;
+ }
+
+ public void setEventName(String eventName) {
+ this.eventName = eventName;
+ }
+}
diff --git a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
index 470108bd..6eea3084 100644
--- a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
+++ b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
@@ -6,9 +6,10 @@
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
+import static org.hamcrest.Matchers.hasSize;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+import static org.hamcrest.Matchers.is;
@SpringBootTest
@AutoConfigureMockMvc
@@ -17,18 +18,55 @@ public class RsControllerTest {
MockMvc mockMvc;
@Test
public void should_get_rs_event_list() throws Exception{
- mockMvc.perform(get("/rs/list")).andExpect(content().string("[第一条事件, 第二条事件, 第三条事件]"))
+ mockMvc.perform(get("/rs/list")).andExpect(jsonPath("$",hasSize(3)))
+ .andExpect(jsonPath("$[0].eventName",is("第一条事件")))
+ .andExpect(jsonPath("$[0].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[1].eventName",is("第二条事件")))
+ .andExpect(jsonPath("$[1].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[2].eventName",is("第三条事件")))
+ .andExpect(jsonPath("$[2].keyWord",is("无标签")))
.andExpect(status().isOk());
}
@Test
public void should_get_one_rs_event() throws Exception{
- mockMvc.perform(get("/rs/1")).andExpect(content().string("第一条事件"))
+ mockMvc.perform(get("/rs/1"))
+ .andExpect(jsonPath("$.eventName",is("第一条事件")))
+ .andExpect(jsonPath("$.keyWord",is("无标签")))
+ .andExpect(status().isOk());
+ mockMvc.perform(get("/rs/2"))
+ .andExpect(jsonPath("$.eventName",is("第二条事件")))
+ .andExpect(jsonPath("$.keyWord",is("无标签")))
+ .andExpect(status().isOk());
+ mockMvc.perform(get("/rs/3"))
+ .andExpect(jsonPath("$.eventName",is("第三条事件")))
+ .andExpect(jsonPath("$.keyWord",is("无标签")))
.andExpect(status().isOk());
}
@Test
public void should_get_rs_event_between() throws Exception{
- mockMvc.perform(get("/rs/list?start=1&end=2")).andExpect(content().string("[第一条事件, 第二条事件]"))
+ mockMvc.perform(get("/rs/list?start=1&end=2"))
+ .andExpect(jsonPath("$",hasSize(2)))
+ .andExpect(jsonPath("$[0].eventName",is("第一条事件")))
+ .andExpect(jsonPath("$[0].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[1].eventName",is("第二条事件")))
+ .andExpect(jsonPath("$[1】.keyWord",is("无标签")))
+ .andExpect(status().isOk());
+ mockMvc.perform(get("/rs/list?start=2&end=3"))
+ .andExpect(jsonPath("$",hasSize(2)))
+ .andExpect(jsonPath("$[0].eventName",is("第二条事件")))
+ .andExpect(jsonPath("$[0].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[1].eventName",is("第三条事件")))
+ .andExpect(jsonPath("$[1】.keyWord",is("无标签")))
+ .andExpect(status().isOk());
+ mockMvc.perform(get("/rs/list?start=1&end=3"))
+ .andExpect(jsonPath("$",hasSize(3)))
+ .andExpect(jsonPath("$[0].eventName",is("第一条事件")))
+ .andExpect(jsonPath("$[0].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[1].eventName",is("第二条事件")))
+ .andExpect(jsonPath("$[1】.keyWord",is("无标签")))
+ .andExpect(jsonPath("$[2].eventName",is("第三条事件")))
+ .andExpect(jsonPath("$[2】.keyWord",is("无标签")))
.andExpect(status().isOk());
}
}
From b19e522ffc0decf0683ac4d6410f2ae18df07436 Mon Sep 17 00:00:00 2001
From: liyixuan <13069579956@163.com>
Date: Tue, 15 Sep 2020 19:25:49 +0800
Subject: [PATCH 4/9] add rs event
---
.../thoughtworks/rslist/api/RsController.java | 19 ++++++++-------
.../thoughtworks/rslist/domain/RsEvent.java | 4 ++++
.../rslist/api/RsControllerTest.java | 23 +++++++++++++++++++
3 files changed, 38 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/thoughtworks/rslist/api/RsController.java b/src/main/java/com/thoughtworks/rslist/api/RsController.java
index 6d83807d..de836e09 100644
--- a/src/main/java/com/thoughtworks/rslist/api/RsController.java
+++ b/src/main/java/com/thoughtworks/rslist/api/RsController.java
@@ -1,10 +1,9 @@
package com.thoughtworks.rslist.api;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.thoughtworks.rslist.domain.RsEvent;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Arrays;
@@ -21,14 +20,11 @@ private List initRsEventList(){
return rsEventList;
}
- // @GetMapping("/rs/list")
-// public String getRslist(){
-// return rsList.toString();
-// }
@GetMapping("/rs/{index}")
public RsEvent getOneRsEvent(@PathVariable int index){
return rsList.get(index -1);
}
+
@GetMapping("/rs/list")
public List getRsEventBetween(@RequestParam(required = false) Integer start,@RequestParam(required = false) Integer end){
if(start == null || end == null){
@@ -36,4 +32,11 @@ public List getRsEventBetween(@RequestParam(required = false) Integer s
}
return rsList.subList(start-1,end);
}
+
+ @PostMapping("/rs/event")
+ public void addRsEvent(@RequestBody String rsEvent) throws JsonProcessingException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ RsEvent event = objectMapper.readValue(rsEvent,RsEvent.class);
+ rsList.add(event);
+ }
}
diff --git a/src/main/java/com/thoughtworks/rslist/domain/RsEvent.java b/src/main/java/com/thoughtworks/rslist/domain/RsEvent.java
index 81eea6bc..79d18026 100644
--- a/src/main/java/com/thoughtworks/rslist/domain/RsEvent.java
+++ b/src/main/java/com/thoughtworks/rslist/domain/RsEvent.java
@@ -9,6 +9,10 @@ public RsEvent(String eventName,String keyWord){
this.keyWord = keyWord;
}
+ public RsEvent(){
+
+ }
+
public String getKeyWord() {
return keyWord;
}
diff --git a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
index 6eea3084..d2bb9a35 100644
--- a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
+++ b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
@@ -1,13 +1,17 @@
package com.thoughtworks.rslist.api;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.thoughtworks.rslist.domain.RsEvent;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import static org.hamcrest.Matchers.hasSize;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.hamcrest.Matchers.is;
@@ -69,4 +73,23 @@ public void should_get_rs_event_between() throws Exception{
.andExpect(jsonPath("$[2】.keyWord",is("无标签")))
.andExpect(status().isOk());
}
+ @Test
+ public void should_add_rs_event() throws Exception{
+ RsEvent rsEvent = new RsEvent("猪肉涨价了","经济");
+ ObjectMapper objectMapper = new ObjectMapper();
+ String jsonString = objectMapper.writeValueAsString(rsEvent);
+ mockMvc.perform(post("/rs/event").content(jsonString).contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk());
+
+ mockMvc.perform(get("/rs/list")).andExpect(jsonPath("$",hasSize(4)))
+ .andExpect(jsonPath("$[0].eventName",is("第一条事件")))
+ .andExpect(jsonPath("$[0].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[1].eventName",is("第二条事件")))
+ .andExpect(jsonPath("$[1].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[2].eventName",is("第三条事件")))
+ .andExpect(jsonPath("$[2].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[3].eventName",is("猪肉涨价了")))
+ .andExpect(jsonPath("$[3].keyWord",is("经济")))
+ .andExpect(status().isOk());
+ }
}
From 1cc3e4820ef17331f60a451a60424009d43aa7fb Mon Sep 17 00:00:00 2001
From: liyixuan <13069579956@163.com>
Date: Tue, 15 Sep 2020 20:51:11 +0800
Subject: [PATCH 5/9] delete_rs_event
---
.../com/thoughtworks/rslist/api/RsController.java | 7 +++++++
.../thoughtworks/rslist/api/RsControllerTest.java | 15 +++++++++++++++
2 files changed, 22 insertions(+)
diff --git a/src/main/java/com/thoughtworks/rslist/api/RsController.java b/src/main/java/com/thoughtworks/rslist/api/RsController.java
index de836e09..e98b92ac 100644
--- a/src/main/java/com/thoughtworks/rslist/api/RsController.java
+++ b/src/main/java/com/thoughtworks/rslist/api/RsController.java
@@ -8,6 +8,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.function.UnaryOperator;
@RestController
public class RsController {
@@ -39,4 +40,10 @@ public void addRsEvent(@RequestBody String rsEvent) throws JsonProcessingExcepti
RsEvent event = objectMapper.readValue(rsEvent,RsEvent.class);
rsList.add(event);
}
+
+ @PostMapping("/rs/{index}")
+ public void deleteRsEvent(@PathVariable int index) {
+ rsList.remove(index-1);
+ }
+
}
diff --git a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
index d2bb9a35..a2231487 100644
--- a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
+++ b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
@@ -92,4 +92,19 @@ public void should_add_rs_event() throws Exception{
.andExpect(jsonPath("$[3].keyWord",is("经济")))
.andExpect(status().isOk());
}
+
+
+ @Test
+ public void should_delete_rs_event() throws Exception {
+ mockMvc.perform(post("/rs/1")).andExpect(status().isOk());
+
+ mockMvc.perform(get("/rs/list")).andExpect(jsonPath("$",hasSize(2)))
+ .andExpect(jsonPath("$[0].eventName",is("第二条事件")))
+ .andExpect(jsonPath("$[0].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[1].eventName",is("第三条事件")))
+ .andExpect(jsonPath("$[1].keyWord",is("无标签")))
+ .andExpect(status().isOk());
+
+ }
+
}
From 0ddc03601661f45f9bfd8877b785abfa40b9642f Mon Sep 17 00:00:00 2001
From: liyixuan <13069579956@163.com>
Date: Wed, 16 Sep 2020 05:49:57 +0800
Subject: [PATCH 6/9] modify rs's eventName and keyWord
---
.../thoughtworks/rslist/api/RsController.java | 5 +++++
.../rslist/api/RsControllerTest.java | 22 +++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/src/main/java/com/thoughtworks/rslist/api/RsController.java b/src/main/java/com/thoughtworks/rslist/api/RsController.java
index e98b92ac..47b97486 100644
--- a/src/main/java/com/thoughtworks/rslist/api/RsController.java
+++ b/src/main/java/com/thoughtworks/rslist/api/RsController.java
@@ -46,4 +46,9 @@ public void deleteRsEvent(@PathVariable int index) {
rsList.remove(index-1);
}
+ @PostMapping("/rs/{index}")
+ public void modifyRsEvent(@PathVariable int index,@RequestBody(required = false) String eventName,@RequestBody String keyWord) {
+
+ }
+
}
diff --git a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
index a2231487..74dcbf4f 100644
--- a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
+++ b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
@@ -93,6 +93,28 @@ public void should_add_rs_event() throws Exception{
.andExpect(status().isOk());
}
+ @Test
+ public void should_modify_rs_event_eventName_and_keyWord() throws Exception {
+ String modifyString = "{\"eventName\":\"猪肉涨价了\",\"keyWord\":\"经济\"}";
+
+
+ ObjectMapper objectMapper = new ObjectMapper();
+ String jsonString = objectMapper.writeValueAsString(modifyString);
+
+ mockMvc.perform(post("/rs/1").content(jsonString).contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk());
+
+ mockMvc.perform(get("/rs/list")).andExpect(jsonPath("$",hasSize(3)))
+ .andExpect(jsonPath("$[0].eventName",is("猪肉涨价了")))
+ .andExpect(jsonPath("$[0].keyWord",is("经济")))
+ .andExpect(jsonPath("$[1].eventName",is("第二条事件")))
+ .andExpect(jsonPath("$[1].keyWord",is("无标签")))
+ .andExpect(jsonPath("$[2].eventName",is("第三条事件")))
+ .andExpect(jsonPath("$[2].keyWord",is("无标签")))
+ .andExpect(status().isOk());
+
+ }
+
@Test
public void should_delete_rs_event() throws Exception {
From 2a0bed017f5841d55f2fb52d4cb43faefc0c2306 Mon Sep 17 00:00:00 2001
From: liyixuan <13069579956@163.com>
Date: Wed, 16 Sep 2020 09:19:58 +0800
Subject: [PATCH 7/9] patch
---
.../com/thoughtworks/rslist/api/RsController.java | 9 ++++-----
.../thoughtworks/rslist/api/RsControllerTest.java | 13 +++++--------
2 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/thoughtworks/rslist/api/RsController.java b/src/main/java/com/thoughtworks/rslist/api/RsController.java
index 47b97486..ea546478 100644
--- a/src/main/java/com/thoughtworks/rslist/api/RsController.java
+++ b/src/main/java/com/thoughtworks/rslist/api/RsController.java
@@ -41,14 +41,13 @@ public void addRsEvent(@RequestBody String rsEvent) throws JsonProcessingExcepti
rsList.add(event);
}
- @PostMapping("/rs/{index}")
+ @DeleteMapping ("/rs/{index}")
public void deleteRsEvent(@PathVariable int index) {
rsList.remove(index-1);
}
- @PostMapping("/rs/{index}")
- public void modifyRsEvent(@PathVariable int index,@RequestBody(required = false) String eventName,@RequestBody String keyWord) {
-
+ @PatchMapping("/rs/{index}")
+ public void modifyRsEvent(@PathVariable int index,@RequestBody RsEvent rsEvent ) {
+ rsList.set(index - 1,rsEvent);
}
-
}
diff --git a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
index 74dcbf4f..e7646ed6 100644
--- a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
+++ b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
@@ -10,8 +10,7 @@
import org.springframework.test.web.servlet.MockMvc;
import static org.hamcrest.Matchers.hasSize;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.hamcrest.Matchers.is;
@@ -95,13 +94,11 @@ public void should_add_rs_event() throws Exception{
@Test
public void should_modify_rs_event_eventName_and_keyWord() throws Exception {
- String modifyString = "{\"eventName\":\"猪肉涨价了\",\"keyWord\":\"经济\"}";
-
-
+ RsEvent rsEvent = new RsEvent("猪肉涨价了","经济");
ObjectMapper objectMapper = new ObjectMapper();
- String jsonString = objectMapper.writeValueAsString(modifyString);
+ String jsonString = objectMapper.writeValueAsString(rsEvent);
- mockMvc.perform(post("/rs/1").content(jsonString).contentType(MediaType.APPLICATION_JSON))
+ mockMvc.perform(patch("/rs/1").content(jsonString).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
mockMvc.perform(get("/rs/list")).andExpect(jsonPath("$",hasSize(3)))
@@ -118,7 +115,7 @@ public void should_modify_rs_event_eventName_and_keyWord() throws Exception {
@Test
public void should_delete_rs_event() throws Exception {
- mockMvc.perform(post("/rs/1")).andExpect(status().isOk());
+ mockMvc.perform(delete("/rs/1")).andExpect(status().isOk());
mockMvc.perform(get("/rs/list")).andExpect(jsonPath("$",hasSize(2)))
.andExpect(jsonPath("$[0].eventName",is("第二条事件")))
From e6f354814f4efe1e9b56fe6f57f03823f03da666 Mon Sep 17 00:00:00 2001
From: liyixuan <13069579956@163.com>
Date: Wed, 16 Sep 2020 11:14:01 +0800
Subject: [PATCH 8/9] test environment
---
.../java/com/thoughtworks/rslist/api/RsControllerTest.java | 3 ---
1 file changed, 3 deletions(-)
diff --git a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
index e7646ed6..a9de3371 100644
--- a/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
+++ b/src/test/java/com/thoughtworks/rslist/api/RsControllerTest.java
@@ -109,10 +109,8 @@ public void should_modify_rs_event_eventName_and_keyWord() throws Exception {
.andExpect(jsonPath("$[2].eventName",is("第三条事件")))
.andExpect(jsonPath("$[2].keyWord",is("无标签")))
.andExpect(status().isOk());
-
}
-
@Test
public void should_delete_rs_event() throws Exception {
mockMvc.perform(delete("/rs/1")).andExpect(status().isOk());
@@ -123,7 +121,6 @@ public void should_delete_rs_event() throws Exception {
.andExpect(jsonPath("$[1].eventName",is("第三条事件")))
.andExpect(jsonPath("$[1].keyWord",is("无标签")))
.andExpect(status().isOk());
-
}
}
From eb471709197ca7d533d887be8600d0ec95cb2195 Mon Sep 17 00:00:00 2001
From: liyixuan <13069579956@163.com>
Date: Wed, 16 Sep 2020 15:11:46 +0800
Subject: [PATCH 9/9] add annotation
---
.../rslist/api/UserController.java | 27 ++++++
.../com/thoughtworks/rslist/domain/User.java | 76 ++++++++++++++++
.../rslist/api/UserControllerTest.java | 89 +++++++++++++++++++
3 files changed, 192 insertions(+)
create mode 100644 src/main/java/com/thoughtworks/rslist/api/UserController.java
create mode 100644 src/main/java/com/thoughtworks/rslist/domain/User.java
create mode 100644 src/test/java/com/thoughtworks/rslist/api/UserControllerTest.java
diff --git a/src/main/java/com/thoughtworks/rslist/api/UserController.java b/src/main/java/com/thoughtworks/rslist/api/UserController.java
new file mode 100644
index 00000000..6d161428
--- /dev/null
+++ b/src/main/java/com/thoughtworks/rslist/api/UserController.java
@@ -0,0 +1,27 @@
+package com.thoughtworks.rslist.api;
+
+import com.thoughtworks.rslist.domain.User;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController
+public class UserController{
+ List userList = new ArrayList<>();
+
+ @PostMapping("/user")
+ public void addUser(@RequestBody @Valid User user){
+ userList.add(user);
+ }
+
+ @GetMapping("/user")
+ public List getUserList(){
+ return userList;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/thoughtworks/rslist/domain/User.java b/src/main/java/com/thoughtworks/rslist/domain/User.java
new file mode 100644
index 00000000..ca0e65a8
--- /dev/null
+++ b/src/main/java/com/thoughtworks/rslist/domain/User.java
@@ -0,0 +1,76 @@
+package com.thoughtworks.rslist.domain;
+
+import javax.validation.constraints.*;
+
+public class User {
+ @NotNull
+ @Size(max = 8)
+ private String name;
+ @NotNull
+ private String gender;
+ @NotNull
+ @Min(18)
+ @Max(100)
+ private int age;
+ @Email
+ private String email;
+ @Pattern(regexp = "1\\d{10}")
+ private String phone;
+ private int voteNum = 10;
+
+ public User(String name, String gender, int age, String email, String phone) {
+ this.name = name;
+ this.gender = gender;
+ this.age = age;
+ this.email = email;
+ this.phone = phone;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName() {
+ this.name = name;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public int getVoteNum() {
+ return voteNum;
+ }
+
+ public void setVoteNum(int voteNum) {
+ this.voteNum = voteNum;
+ }
+}
diff --git a/src/test/java/com/thoughtworks/rslist/api/UserControllerTest.java b/src/test/java/com/thoughtworks/rslist/api/UserControllerTest.java
new file mode 100644
index 00000000..c848049e
--- /dev/null
+++ b/src/test/java/com/thoughtworks/rslist/api/UserControllerTest.java
@@ -0,0 +1,89 @@
+package com.thoughtworks.rslist.api;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.thoughtworks.rslist.domain.RsEvent;
+import com.thoughtworks.rslist.domain.User;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.hamcrest.Matchers.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@SpringBootTest
+@AutoConfigureMockMvc
+public class UserControllerTest {
+ @Autowired
+ MockMvc mockMvc;
+
+ @Test
+ public void should_register_user() throws Exception {
+ User user = new User("lyx","female",18,"1@2.com","12222222222");
+ ObjectMapper objectMapper = new ObjectMapper();
+ String jsonString = objectMapper.writeValueAsString(user);
+ mockMvc.perform(post("/user")
+ .content(jsonString)
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk());
+
+ mockMvc.perform(get("/user"))
+ .andExpect(jsonPath("$",hasSize(1)))
+ .andExpect(jsonPath("$[0].name",is("lyx")))
+ .andExpect(jsonPath("$[0].gender",is("female")))
+ .andExpect(jsonPath("$[0].age",is(18)))
+ .andExpect(jsonPath("$[0].email",is("1@2.com")))
+ .andExpect(jsonPath("$[0].phone",is("12222222222")))
+ .andExpect(status().isOk());
+ }
+
+
+ @Test
+ public void name_should_less_than_8() throws Exception{
+ User user = new User("lyx111111","female",18,"1@2.com","12222222222");
+ ObjectMapper objectMapper = new ObjectMapper();
+ String jsonString = objectMapper.writeValueAsString(user);
+ mockMvc.perform(post("/user")
+ .content(jsonString)
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isBadRequest());
+ }
+
+ @Test
+ public void age_should_between_18_and_100() throws Exception{
+ User user = new User("lyx","female",118,"1@2.com","12222222222");
+ ObjectMapper objectMapper = new ObjectMapper();
+ String jsonString = objectMapper.writeValueAsString(user);
+ mockMvc.perform(post("/user")
+ .content(jsonString)
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isBadRequest());
+ }
+
+ @Test
+ public void email_should_right() throws Exception{
+ User user = new User("lyx","female",28,".com","12222222222");
+ ObjectMapper objectMapper = new ObjectMapper();
+ String jsonString = objectMapper.writeValueAsString(user);
+ mockMvc.perform(post("/user")
+ .content(jsonString)
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isBadRequest());
+ }
+
+ @Test
+ public void phone_should_right() throws Exception{
+ User user = new User("lyx","female",28,".com","3312222222222");
+ ObjectMapper objectMapper = new ObjectMapper();
+ String jsonString = objectMapper.writeValueAsString(user);
+ mockMvc.perform(post("/user")
+ .content(jsonString)
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isBadRequest());
+ }
+}
\ No newline at end of file