@@ -382,3 +382,80 @@ def test_send_user_reset_password_email(self, send_mail_mock):
382382 self .assertTrue (user .reset_password_url in mail .body )
383383 self .assertTrue (f'Hi { user .username } ,' in mail .body )
384384 send_mail_mock .assert_called_once ()
385+
386+
387+ class UserContentSummaryViewTest (OCLAPITestCase ):
388+ def setUp (self ):
389+ super ().setUp ()
390+ self .user = UserProfileFactory (username = 'summaryuser' )
391+ self .token = self .user .get_token ()
392+
393+ def test_unauthenticated (self ):
394+ response = self .client .get ('/users/summaryuser/content-summary/' )
395+ self .assertEqual (response .status_code , 401 )
396+
397+ def test_self_user (self ):
398+ response = self .client .get (
399+ '/users/summaryuser/content-summary/' ,
400+ HTTP_AUTHORIZATION = 'Token ' + self .token ,
401+ )
402+ self .assertEqual (response .status_code , 200 )
403+ self .assertEqual (response .data ['username' ], 'summaryuser' )
404+ self .assertEqual (response .data ['concepts_created' ], 0 )
405+ self .assertEqual (response .data ['concepts_updated' ], 0 )
406+ self .assertEqual (response .data ['mappings_created' ], 0 )
407+ self .assertEqual (response .data ['mappings_updated' ], 0 )
408+ self .assertEqual (response .data ['sources_owned' ], 0 )
409+ self .assertEqual (response .data ['collections_owned' ], 0 )
410+ self .assertEqual (response .data ['references_added' ], 0 )
411+ self .assertEqual (response .data ['versions_created' ], 0 )
412+ self .assertEqual (response .data ['expansions_created' ], 0 )
413+
414+ def test_other_user_forbidden (self ):
415+ other_user = UserProfileFactory (username = 'otheruser' )
416+ other_token = other_user .get_token ()
417+
418+ response = self .client .get (
419+ '/users/summaryuser/content-summary/' ,
420+ HTTP_AUTHORIZATION = 'Token ' + other_token ,
421+ )
422+ self .assertEqual (response .status_code , 403 )
423+
424+ def test_staff_can_view_other_user (self ):
425+ admin = UserProfileFactory (username = 'adminuser' , is_staff = True )
426+ admin_token = admin .get_token ()
427+
428+ response = self .client .get (
429+ '/users/summaryuser/content-summary/' ,
430+ HTTP_AUTHORIZATION = 'Token ' + admin_token ,
431+ )
432+ self .assertEqual (response .status_code , 200 )
433+ self .assertEqual (response .data ['username' ], 'summaryuser' )
434+
435+ def test_nonexistent_user (self ):
436+ response = self .client .get (
437+ '/users/doesnotexist/content-summary/' ,
438+ HTTP_AUTHORIZATION = 'Token ' + self .token ,
439+ )
440+ self .assertEqual (response .status_code , 404 )
441+
442+ def test_with_content (self ):
443+ from core .sources .tests .factories import UserSourceFactory
444+ from core .concepts .tests .factories import ConceptFactory
445+ from core .mappings .tests .factories import MappingFactory
446+ from core .collections .tests .factories import UserCollectionFactory
447+
448+ source = UserSourceFactory (user = self .user , created_by = self .user )
449+ ConceptFactory (parent = source , created_by = self .user , updated_by = self .user )
450+ MappingFactory (parent = source , created_by = self .user , updated_by = self .user )
451+ UserCollectionFactory (user = self .user , created_by = self .user )
452+
453+ response = self .client .get (
454+ '/users/summaryuser/content-summary/' ,
455+ HTTP_AUTHORIZATION = 'Token ' + self .token ,
456+ )
457+ self .assertEqual (response .status_code , 200 )
458+ self .assertEqual (response .data ['sources_owned' ], 1 )
459+ self .assertEqual (response .data ['collections_owned' ], 1 )
460+ self .assertGreaterEqual (response .data ['concepts_created' ], 1 )
461+ self .assertGreaterEqual (response .data ['mappings_created' ], 1 )
0 commit comments