From 3042aa19554afdbcd774ed04c3d75e8130d55f44 Mon Sep 17 00:00:00 2001
From: SofianeLasri <alasri250@gmail.com>
Date: Mon, 4 Nov 2024 15:19:14 +0100
Subject: [PATCH] test: add unit tests for PlayerController and ShopController

- Add PlayerControllerTest to verify retrieval of all players and individual player by UUID.
- Add ShopControllerTest to verify retrieval of all shops and individual shop by item name.
---
 .../PlayerControllerTest.java                 | 34 +++++++++++++++++++
 .../ShopControllerTest.java                   | 31 +++++++++++++++++
 2 files changed, 65 insertions(+)
 create mode 100644 src/test/java/com/slprojects/democultureconceptsinfo/PlayerControllerTest.java
 create mode 100644 src/test/java/com/slprojects/democultureconceptsinfo/ShopControllerTest.java

diff --git a/src/test/java/com/slprojects/democultureconceptsinfo/PlayerControllerTest.java b/src/test/java/com/slprojects/democultureconceptsinfo/PlayerControllerTest.java
new file mode 100644
index 0000000..71e8f9d
--- /dev/null
+++ b/src/test/java/com/slprojects/democultureconceptsinfo/PlayerControllerTest.java
@@ -0,0 +1,34 @@
+package com.slprojects.democultureconceptsinfo;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.test.web.servlet.MockMvc;
+
+import java.util.UUID;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@WebMvcTest(PlayerController.class)
+public class PlayerControllerTest {
+    @Autowired
+    private MockMvc mockMvc;
+
+    @Test
+    public void testGetAllPlayers() throws Exception {
+        mockMvc.perform(get("/players"))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$").isArray())
+                .andExpect(jsonPath("$[0].username").value("JohnDoe"));
+    }
+
+    @Test
+    public void testGetPlayer() throws Exception {
+        UUID uuid = PlayerService.firstFakePlayer.getUuid();
+        mockMvc.perform(get("/player").param("uuid", uuid.toString()))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.username").value("JohnDoe"));
+    }
+}
diff --git a/src/test/java/com/slprojects/democultureconceptsinfo/ShopControllerTest.java b/src/test/java/com/slprojects/democultureconceptsinfo/ShopControllerTest.java
new file mode 100644
index 0000000..c313021
--- /dev/null
+++ b/src/test/java/com/slprojects/democultureconceptsinfo/ShopControllerTest.java
@@ -0,0 +1,31 @@
+package com.slprojects.democultureconceptsinfo;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+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.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@WebMvcTest(ShopController.class)
+public class ShopControllerTest {
+    @Autowired
+    private MockMvc mockMvc;
+
+    @Test
+    public void testGetAllShops() throws Exception {
+        mockMvc.perform(get("/shops"))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$").isArray())
+                .andExpect(jsonPath("$[0].itemName").value("Sword"));
+    }
+
+    @Test
+    public void testGetShop() throws Exception {
+        mockMvc.perform(get("/shop").param("itemName", "Sword"))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.itemName").value("Sword"));
+    }
+}
-- 
GitLab