@@ -614,15 +614,109 @@ def test_process_comments(self, mock_get_metadata, mock_make_request):
614614 movie_obj = trakt_importer .bulk_media [MediaTypes .MOVIE .value ][0 ]
615615 self .assertEqual (movie_obj .notes , "Great movie!" )
616616
617- @patch ("integrations.imports.trakt.TraktImporter.import_data" )
618- def test_importer_function (self , mock_import_data ):
619- """Test the main importer function."""
620- mock_import_data .return_value = (1 , 2 , 3 , 4 , "No warnings" )
617+ @patch ("integrations.imports.trakt.TraktImporter._get_paginated_data" )
618+ @patch ("integrations.imports.trakt.TraktImporter._make_api_request" )
619+ @patch ("integrations.imports.trakt.TraktImporter._get_metadata" )
620+ def test_public_import_full_flow (
621+ self ,
622+ mock_get_metadata ,
623+ mock_make_request ,
624+ mock_get_paginated ,
625+ ):
626+ """Test full import flow with public username (no OAuth)."""
627+ # Mock paginated data - history returns movies, comments returns empty
628+ mock_get_paginated .side_effect = [
629+ [
630+ {
631+ "type" : "movie" ,
632+ "movie" : {"title" : "Public Movie" , "ids" : {"tmdb" : 999 }},
633+ "watched_at" : "2023-01-01T00:00:00.000Z" ,
634+ },
635+ ],
636+ [], # Empty comments
637+ ]
638+
639+ # Mock API requests for watchlist and ratings
640+ mock_make_request .return_value = []
641+
642+ # Mock metadata
643+ mock_get_metadata .return_value = {
644+ "title" : "Public Movie" ,
645+ "image" : "movie.jpg" ,
646+ }
647+
648+ # Import with no token (public)
649+ imported_counts , _ = importer (None , self .user , "new" , "public_user" )
650+
651+ # Verify movie was imported
652+ self .assertEqual (imported_counts [MediaTypes .MOVIE .value ], 1 )
653+ self .assertEqual (Movie .objects .filter (user = self .user ).count (), 1 )
654+
655+ @patch ("integrations.imports.trakt.TraktImporter._get_paginated_data" )
656+ @patch ("integrations.imports.trakt.TraktImporter._make_api_request" )
657+ @patch ("integrations.imports.trakt.TraktImporter._get_metadata" )
658+ def test_oauth_import_full_flow (
659+ self ,
660+ mock_get_metadata ,
661+ mock_make_request ,
662+ mock_get_paginated ,
663+ ):
664+ """Test full import flow with OAuth token."""
665+ # Mock paginated data - history returns movies, comments returns empty
666+ mock_get_paginated .side_effect = [
667+ [
668+ {
669+ "type" : "movie" ,
670+ "movie" : {"title" : "OAuth Movie" , "ids" : {"tmdb" : 888 }},
671+ "watched_at" : "2023-01-01T00:00:00.000Z" ,
672+ },
673+ ],
674+ [], # Empty comments
675+ ]
676+
677+ # Mock API requests for watchlist and ratings
678+ mock_make_request .return_value = []
679+
680+ # Mock metadata
681+ mock_get_metadata .return_value = {
682+ "title" : "OAuth Movie" ,
683+ "image" : "movie.jpg" ,
684+ }
685+
686+ # Import with encrypted token (OAuth)
687+ encrypted_token = helpers .encrypt ("test_refresh_token" )
688+ imported_counts , _ = importer (
689+ encrypted_token ,
690+ self .user ,
691+ "new" ,
692+ "oauth_user" ,
693+ )
694+
695+ # Verify movie was imported
696+ self .assertEqual (imported_counts [MediaTypes .MOVIE .value ], 1 )
697+ self .assertEqual (Movie .objects .filter (user = self .user ).count (), 1 )
698+
699+ def test_trakt_importer_with_refresh_token (self ):
700+ """Test TraktImporter initialization with refresh token."""
701+ encrypted_token = helpers .encrypt ("test_token" )
702+ importer = TraktImporter (
703+ "testuser" ,
704+ self .user ,
705+ "new" ,
706+ refresh_token = encrypted_token ,
707+ )
708+
709+ self .assertEqual (importer .username , "testuser" )
710+ self .assertEqual (importer .refresh_token , encrypted_token )
711+ self .assertEqual (importer .mode , "new" )
621712
622- result = importer ("testuser" , self .user , "new" )
713+ def test_trakt_importer_without_refresh_token (self ):
714+ """Test TraktImporter initialization without refresh token (public)."""
715+ importer = TraktImporter ("testuser" , self .user , "new" , refresh_token = None )
623716
624- # Check that the result is passed through correctly
625- self .assertEqual (result , (1 , 2 , 3 , 4 , "No warnings" ))
717+ self .assertEqual (importer .username , "testuser" )
718+ self .assertIsNone (importer .refresh_token )
719+ self .assertEqual (importer .mode , "new" )
626720
627721
628722class ImportSimkl (TestCase ):
0 commit comments