11package controllers
22
3- import dto .request .column .CreateColumnRequest
4- import dto .request .task .{AssignMemberRequest , CreateTaskRequest , UpdateTaskRequest }
5- import dto .request .task .{CreateTaskRequest , UpdateTaskRequest }
3+ import dto .request .task .{
4+ AssignMemberRequest ,
5+ CreateTaskRequest ,
6+ UpdateTaskRequest
7+ }
68import dto .response .task .{TaskSearchResponse , TaskSummaryResponse }
79import exception .AppException
810import org .scalatest .BeforeAndAfterAll
@@ -18,7 +20,7 @@ import play.api.{Application, Configuration}
1820import services ._
1921
2022class TaskControllerSpec
21- extends PlaySpec
23+ extends PlaySpec
2224 with GuiceOneAppPerSuite
2325 with Injecting
2426 with ScalaFutures
@@ -86,6 +88,21 @@ class TaskControllerSpec
8688 )
8789 }
8890
91+ " fail when creating task with unexisting column id" in {
92+ val body = Json .toJson(CreateTaskRequest (" Task 1" , 1 ))
93+ val request = FakeRequest (POST , " /api/columns/0/tasks" )
94+ .withCookies(Cookie (cookieName, fakeToken))
95+ .withBody(body)
96+
97+ val ex = intercept[AppException ] {
98+ await(route(app, request).get)
99+ }
100+ ex.statusCode mustBe NOT_FOUND
101+ ex.message must include(
102+ " Column with ID 0 does not exist or is not active"
103+ )
104+ }
105+
89106 " assign member into a task successfully" in {
90107 val body = Json .toJson(AssignMemberRequest (1 ))
91108 val request = FakeRequest (POST , " /api/projects/1/tasks/1/members" )
@@ -100,6 +117,20 @@ class TaskControllerSpec
100117 )
101118 }
102119
120+ " fail when assign member with unexist task id" in {
121+ val body = Json .toJson(AssignMemberRequest (1 ))
122+ val request = FakeRequest (POST , " /api/projects/1/tasks/0/members" )
123+ .withCookies(Cookie (cookieName, fakeToken))
124+ .withBody(body)
125+
126+ val ex = intercept[AppException ] {
127+ await(route(app, request).get)
128+ }
129+
130+ ex.statusCode mustBe NOT_FOUND
131+ ex.message must include(" Task with ID 0 does not exist" )
132+ }
133+
103134 " fail when creating task with duplicate position in same column" in {
104135 val body = Json .toJson(CreateTaskRequest (" Task 1" , 1 ))
105136 val request = FakeRequest (POST , " /api/columns/1/tasks" )
@@ -117,7 +148,9 @@ class TaskControllerSpec
117148
118149 " update task successfully" in {
119150 val body =
120- Json .toJson(UpdateTaskRequest (" Updated Task" , None , None , None , None , None ))
151+ Json .toJson(
152+ UpdateTaskRequest (" Updated Task" , None , None , None , None , None )
153+ )
121154 val request = FakeRequest (PATCH , " /api/tasks/1" )
122155 .withCookies(Cookie (cookieName, fakeToken))
123156 .withBody(body)
@@ -130,10 +163,30 @@ class TaskControllerSpec
130163 .as[String ] mustBe " Task updated successfully"
131164 }
132165
166+ " fail when updating task with unexist task id" in {
167+ val body =
168+ Json .toJson(
169+ UpdateTaskRequest (" Updated Task" , None , None , None , None , None )
170+ )
171+ val request = FakeRequest (PATCH , " /api/tasks/0" )
172+ .withCookies(Cookie (cookieName, fakeToken))
173+ .withBody(body)
174+ .withHeaders(CONTENT_TYPE -> " application/json" )
175+
176+ val ex = intercept[AppException ] {
177+ await(route(app, request).get)
178+ }
179+
180+ ex.statusCode mustBe NOT_FOUND
181+ ex.message must include(" Task with ID 0 does not exist" )
182+ }
183+
133184 " fail to update non-existent task" in {
134185 val nonExistentTaskId = 9999
135186 val body =
136- Json .toJson(UpdateTaskRequest (" Some Task" , None , None , None , None , None ))
187+ Json .toJson(
188+ UpdateTaskRequest (" Some Task" , None , None , None , None , None )
189+ )
137190 val request = FakeRequest (PATCH , s " /api/tasks/ $nonExistentTaskId" )
138191 .withCookies(Cookie (cookieName, fakeToken))
139192 .withBody(body)
@@ -197,11 +250,7 @@ class TaskControllerSpec
197250
198251 // Create and archive a task in the new column
199252 val taskId = await(
200- taskService.createNewTask(
201- CreateTaskRequest (" Task to Archive" , 1 ),
202- 1 ,
203- 1
204- )
253+ taskService.createNewTask(CreateTaskRequest (" Task to Archive" , 1 ), 1 , 1 )
205254 )
206255 await(taskService.archiveTask(taskId, 1 ))
207256
@@ -216,16 +265,24 @@ class TaskControllerSpec
216265 tasks.exists(task => task.id == taskId && task.name == " Task to Archive" ) mustBe true
217266 }
218267
268+ " fail when get archived tasks with unexist project id" in {
269+ val request = FakeRequest (GET , " /api/projects/0/columns/tasks/archived" )
270+ .withCookies(Cookie (cookieName, fakeToken))
271+ val result = route(app, request).get
272+
273+ val ex = intercept[AppException ] {
274+ await(result)
275+ }
276+ ex.statusCode mustBe NOT_FOUND
277+ ex.message must include(" Project not found" )
278+ }
279+
219280 " get active tasks successfully" in {
220281 val taskService = inject[TaskService ]
221282
222283 // Create a new task in the existing column
223284 val taskId = await(
224- taskService.createNewTask(
225- CreateTaskRequest (" Active Task" , 1 ),
226- 1 ,
227- 1
228- )
285+ taskService.createNewTask(CreateTaskRequest (" Active Task" , 1 ), 1 , 1 )
229286 )
230287
231288 val request = FakeRequest (GET , " /api/projects/1/columns/tasks/active" )
@@ -239,16 +296,24 @@ class TaskControllerSpec
239296 tasks.exists(task => task.id == taskId && task.name == " Active Task" ) mustBe true
240297 }
241298
299+ " fail get active tasks with unexist project id" in {
300+ val request = FakeRequest (GET , " /api/projects/0/columns/tasks/active" )
301+ .withCookies(Cookie (cookieName, fakeToken))
302+ val result = route(app, request).get
303+
304+ val ex = intercept[AppException ] {
305+ await(result)
306+ }
307+ ex.statusCode mustBe NOT_FOUND
308+ ex.message must include(" Project not found" )
309+ }
310+
242311 " search tasks successfully" in {
243312 val taskService = inject[TaskService ]
244313
245314 // Create a new task in the existing column
246315 val taskId = await(
247- taskService.createNewTask(
248- CreateTaskRequest (" search Task" , 1502 ),
249- 1 ,
250- 1
251- )
316+ taskService.createNewTask(CreateTaskRequest (" search Task" , 1502 ), 1 , 1 )
252317 )
253318
254319 val request = FakeRequest (GET , " /api/tasks?page=1&size=10&keyword=search" )
0 commit comments