@@ -344,3 +344,82 @@ def test_list_course_content_with_existing_contents(superadmin_client, create_co
344344 }
345345 assert "lesson" not in data ["course_contents" ][0 ]
346346 assert "quiz" not in data ["course_contents" ][1 ]
347+
348+
349+ def test_delete_course_content (superadmin_client , create_course ):
350+ url = get_url ()
351+ # Create a lesson content
352+ lesson_payload = {
353+ "content" : {
354+ "title" : LESSON_TITLE ,
355+ "content" : LESSON_CONTENT ,
356+ "type" : "lesson" ,
357+ },
358+ "priority" : 1 ,
359+ "waiting_period" : {"period" : 2 , "type" : "days" },
360+ }
361+ response = superadmin_client .post (
362+ url , json .dumps (lesson_payload ), content_type = "application/json"
363+ )
364+ assert response .status_code == 201
365+ data = response .json ()
366+ course_content_id = data ["id" ]
367+
368+ # Delete the created course content
369+ delete_url = reverse (
370+ "django_email_learning:api:single_course_content_view" ,
371+ kwargs = {
372+ "organization_id" : 1 ,
373+ "course_id" : 1 ,
374+ "course_content_id" : course_content_id ,
375+ },
376+ )
377+ contents_response = superadmin_client .get (url )
378+ assert contents_response .status_code == 200
379+ assert len (contents_response .json ()["course_contents" ]) == 1
380+
381+ delete_response = superadmin_client .delete (delete_url )
382+ assert delete_response .status_code == 200
383+
384+ # Verify that the course content is deleted
385+ contents_response_after_delete = superadmin_client .get (url )
386+ assert contents_response_after_delete .status_code == 200
387+ assert len (contents_response_after_delete .json ()["course_contents" ]) == 0
388+ get_response = superadmin_client .delete (delete_url )
389+ assert get_response .status_code == 404
390+
391+
392+ def test_viewer_cannot_delete_course_content (viewer_client , create_course ):
393+ url = get_url ()
394+ # Create a lesson content
395+ lesson_payload = {
396+ "content" : {
397+ "title" : LESSON_TITLE ,
398+ "content" : LESSON_CONTENT ,
399+ "type" : "lesson" ,
400+ },
401+ "priority" : 1 ,
402+ "waiting_period" : {"period" : 2 , "type" : "days" },
403+ }
404+ response = viewer_client .post (
405+ url , json .dumps (lesson_payload ), content_type = "application/json"
406+ )
407+ assert response .status_code == 403
408+
409+
410+ def test_anonymous_user_cannot_delete_course_content (anonymous_client , create_course ):
411+ url = get_url ()
412+ # Create a lesson content
413+ lesson_payload = {
414+ "content" : {
415+ "title" : LESSON_TITLE ,
416+ "content" : LESSON_CONTENT ,
417+ "type" : "lesson" ,
418+ },
419+ "priority" : 1 ,
420+ "waiting_period" : {"period" : 2 , "type" : "days" },
421+ }
422+ response = anonymous_client .post (
423+ url , json .dumps (lesson_payload ), content_type = "application/json"
424+ )
425+ assert response .status_code == 401
0 commit comments