1- using MockQueryable ;
1+ using Microsoft . Extensions . Logging ;
2+ using MockQueryable ;
23using Moq ;
3- using Microsoft . Extensions . Logging ;
44using StudentManagementSystem . Core . Models . Admin . Course ;
5+ using StudentManagementSystem . Core . Services ;
56using StudentManagementSystem . Core . Services . Admin ;
67using StudentManagementSystem . Infrastructure . Data . Common ;
78using StudentManagementSystem . Infrastructure . Data . Models ;
@@ -82,19 +83,15 @@ public async Task CourseExistAsync_ShouldReturnTrue_WhenCourseExists()
8283 }
8384
8485 [ Test ]
85- public async Task CourseExistAsync_ShouldReturnFalse_WhenCourseDoesNotExist ( )
86+ public void CourseExistAsync_ShouldThrowKeyNotFoundException_WhenCourseDoesNotExist ( )
8687 {
87-
8888 mockRepository . Setup ( repo => repo . AllAsReadOnly < Course > ( ) ) . Returns ( new List < Course >
8989 {
9090 new Course { Id = 1 , Name = "Math 101" , IsDeleted = false }
9191 } . AsQueryable ( ) . BuildMock ( ) ) ;
9292
93-
94- var result = await courseService . CourseExistAsync ( 99 ) ;
95-
96-
97- Assert . IsFalse ( result ) ;
93+ var ex = Assert . ThrowsAsync < KeyNotFoundException > ( async ( ) => await courseService . CourseExistAsync ( 99 ) ) ;
94+ Assert . That ( ex . Message , Is . EqualTo ( "Course with ID: 99 not found" ) ) ;
9895 }
9996
10097 [ Test ]
@@ -114,10 +111,10 @@ public async Task CreateCourseAsync_ShouldReturnCourseId_WhenCourseIsCreated()
114111 mockRepository . Setup ( repo => repo . AddAsync ( It . IsAny < Course > ( ) ) ) . Callback < Course > ( c => c . Id = newCourseId ) . Returns ( Task . CompletedTask ) ;
115112 mockRepository . Setup ( repo => repo . SaveChangesAsync ( ) ) . ReturnsAsync ( 1 ) ;
116113
114+ mockRepository . Setup ( repo => repo . AllAsReadOnly < Course > ( ) ) . Returns ( new List < Course > ( ) . AsQueryable ( ) . BuildMock ( ) ) ;
117115
118116 var result = await courseService . CreateCourseAsync ( courseForm , publisherId ) ;
119117
120-
121118 Assert . That ( result , Is . EqualTo ( newCourseId ) ) ;
122119 mockRepository . Verify ( repo => repo . AddAsync ( It . Is < Course > ( c =>
123120 c . Name == courseForm . Name &&
@@ -168,19 +165,19 @@ public async Task GetCourseDetailsModelByIdAsync_ShouldReturnCourseDetailsViewMo
168165 }
169166
170167 [ Test ]
171- public async Task GetCourseDetailsModelByIdAsync_ShouldThrowArgumentException_WhenCourseDoesNotExist ( )
168+ public void GetCourseDetailsModelByIdAsync_ShouldThrowKeyNotFoundException_WhenCourseDoesNotExist ( )
172169 {
173170
174171 mockRepository . Setup ( repo => repo . AllAsReadOnly < Course > ( ) )
175172 . Returns ( new List < Course > ( ) . AsQueryable ( ) . BuildMock ( ) ) ;
176173
177174
178- var exception = Assert . ThrowsAsync < ArgumentException > ( ( ) => courseService . GetCourseDetailsModelByIdAsync ( 99 ) ) ;
175+ var exception = Assert . ThrowsAsync < KeyNotFoundException > ( ( ) => courseService . GetCourseDetailsModelByIdAsync ( 99 ) ) ;
179176 Assert . That ( exception . Message , Is . EqualTo ( "Course with ID 99 not found." ) ) ;
180177 }
181178
182179 [ Test ]
183- public async Task GetCourseDetailsModelByIdAsync_ShouldThrowArgumentException_WhenCourseIsDeleted ( )
180+ public void GetCourseDetailsModelByIdAsync_ShouldThrowKeyNotFoundException_WhenCourseIsDeleted ( )
184181 {
185182
186183 var course = new Course
@@ -201,11 +198,10 @@ public async Task GetCourseDetailsModelByIdAsync_ShouldThrowArgumentException_Wh
201198 . Returns ( new List < Course > { course } . AsQueryable ( ) . BuildMock ( ) ) ;
202199
203200
204- var exception = Assert . ThrowsAsync < ArgumentException > ( ( ) => courseService . GetCourseDetailsModelByIdAsync ( 1 ) ) ;
201+ var exception = Assert . ThrowsAsync < KeyNotFoundException > ( ( ) => courseService . GetCourseDetailsModelByIdAsync ( 1 ) ) ;
205202 Assert . That ( exception . Message , Is . EqualTo ( "Course with ID 1 not found." ) ) ;
206203 }
207204
208-
209205 [ Test ]
210206 public async Task DeleteCourseAsync_ShouldSetCourseToDeleted_WhenCourseExistsAndNotDeleted ( )
211207 {
@@ -222,22 +218,6 @@ public async Task DeleteCourseAsync_ShouldSetCourseToDeleted_WhenCourseExistsAnd
222218 mockRepository . Verify ( repo => repo . SaveChangesAsync ( ) , Times . Once ) ;
223219 }
224220
225- [ Test ]
226- public async Task DeleteCourseAsync_ShouldNotChangeCourse_WhenCourseAlreadyDeleted ( )
227- {
228-
229- var course = new Course { Id = 1 , Name = "Math 101" , IsDeleted = true } ;
230- mockRepository . Setup ( repo => repo . GetByIdAsync < Course > ( 1 ) ) . ReturnsAsync ( course ) ;
231- mockRepository . Setup ( repo => repo . SaveChangesAsync ( ) ) . ReturnsAsync ( 1 ) ;
232-
233-
234- await courseService . DeleteCourseAsync ( 1 ) ;
235-
236-
237- Assert . IsTrue ( course . IsDeleted ) ;
238- mockRepository . Verify ( repo => repo . SaveChangesAsync ( ) , Times . Once ) ;
239- }
240-
241221 [ Test ]
242222 public async Task EditCourseAsync_ShouldUpdateCourse_WhenCourseExistsAndNotDeleted ( )
243223 {
@@ -266,7 +246,7 @@ public async Task EditCourseAsync_ShouldUpdateCourse_WhenCourseExistsAndNotDelet
266246 }
267247
268248 [ Test ]
269- public async Task EditCourseAsync_ShouldNotUpdateCourse_WhenCourseIsDeleted ( )
249+ public void EditCourseAsync_ShouldThrowKeyNotFoundException_WhenCourseIsDeleted ( )
270250 {
271251
272252 var course = new Course { Id = 1 , Name = "Math 101" , Description = "Old Description" , IsDeleted = true } ;
@@ -282,12 +262,8 @@ public async Task EditCourseAsync_ShouldNotUpdateCourse_WhenCourseIsDeleted()
282262 mockRepository . Setup ( repo => repo . SaveChangesAsync ( ) ) . ReturnsAsync ( 1 ) ;
283263
284264
285- await courseService . EditCourseAsync ( 1 , model , publisherId ) ;
286-
287-
288- Assert . That ( course . Name , Is . EqualTo ( "Math 101" ) ) ;
289- Assert . That ( course . Description , Is . EqualTo ( "Old Description" ) ) ;
290- mockRepository . Verify ( repo => repo . SaveChangesAsync ( ) , Times . Once ) ;
265+ var ex = Assert . ThrowsAsync < KeyNotFoundException > ( async ( ) => await courseService . EditCourseAsync ( 1 , model , publisherId ) ) ;
266+ Assert . That ( ex . Message , Is . EqualTo ( "Course with ID 1 not found." ) ) ;
291267 }
292268
293269 [ Test ]
@@ -350,13 +326,13 @@ public async Task GetCourseByIdAsync_ShouldReturnCourse_WhenCourseExists()
350326 }
351327
352328 [ Test ]
353- public async Task GetCourseByIdAsync_ShouldThrowException_WhenCourseDoesNotExist ( )
329+ public void GetCourseByIdAsync_ShouldThrowKeyNotFoundException_WhenCourseDoesNotExist ( )
354330 {
355331
356332 mockRepository . Setup ( repo => repo . GetByIdAsync < CourseServiceModel > ( 99 ) ) . ReturnsAsync ( ( CourseServiceModel ) null ) ;
357333
358334
359- var exception = Assert . ThrowsAsync < ArgumentException > ( ( ) => courseService . GetCourseByIdAsync ( 99 ) ) ;
335+ var exception = Assert . ThrowsAsync < KeyNotFoundException > ( ( ) => courseService . GetCourseByIdAsync ( 99 ) ) ;
360336 Assert . That ( exception . Message , Is . EqualTo ( "Course with ID 99 not found." ) ) ;
361337 }
362338
@@ -394,19 +370,19 @@ public async Task GetCourseFormModelByIdAsync_ShouldReturnCourseFormViewModel_Wh
394370 }
395371
396372 [ Test ]
397- public async Task GetCourseFormModelByIdAsync_ShouldThrowArgumentException_WhenCourseDoesNotExist ( )
373+ public void GetCourseFormModelByIdAsync_ShouldThrowKeyNotFoundException_WhenCourseDoesNotExist ( )
398374 {
399375
400376 mockRepository . Setup ( repo => repo . AllAsReadOnly < Course > ( ) )
401377 . Returns ( new List < Course > ( ) . AsQueryable ( ) . BuildMock ( ) ) ;
402378
403379
404- var exception = Assert . ThrowsAsync < ArgumentException > ( ( ) => courseService . GetCourseFormModelByIdAsync ( 99 ) ) ;
380+ var exception = Assert . ThrowsAsync < KeyNotFoundException > ( ( ) => courseService . GetCourseFormModelByIdAsync ( 99 ) ) ;
405381 Assert . AreEqual ( "Course with ID 99 not found." , exception . Message ) ;
406382 }
407383
408384 [ Test ]
409- public async Task GetCourseFormModelByIdAsync_ShouldThrowArgumentException_WhenCourseIsDeleted ( )
385+ public void GetCourseFormModelByIdAsync_ShouldThrowKeyNotFoundException_WhenCourseIsDeleted ( )
410386 {
411387
412388 var course = new Course
@@ -422,7 +398,7 @@ public async Task GetCourseFormModelByIdAsync_ShouldThrowArgumentException_WhenC
422398 . Returns ( new List < Course > { course } . AsQueryable ( ) . BuildMock ( ) ) ;
423399
424400
425- var exception = Assert . ThrowsAsync < ArgumentException > ( ( ) => courseService . GetCourseFormModelByIdAsync ( 1 ) ) ;
401+ var exception = Assert . ThrowsAsync < KeyNotFoundException > ( ( ) => courseService . GetCourseFormModelByIdAsync ( 1 ) ) ;
426402 Assert . That ( exception . Message , Is . EqualTo ( "Course with ID 1 not found." ) ) ;
427403 }
428404
0 commit comments