@@ -10,6 +10,58 @@ def test_user_followers(self):
1010 self .assertIsInstance (list (followers .values ())[0 ], UserShort )
1111
1212
13+ class ClientUsertagPaginationLiveTestCase (_helpers .ClientPrivateTestCase ):
14+ def __init__ (self , * args , ** kwargs ):
15+ self .cl = None
16+ return unittest .TestCase .__init__ (self , * args , ** kwargs )
17+
18+ def setup_method (self , * args , ** kwargs ):
19+ return None
20+
21+ def setUp (self ):
22+ if not TEST_ACCOUNTS_URL :
23+ self .skipTest ("TEST_ACCOUNTS_URL is required for usertag pagination live tests" )
24+ try :
25+ self .cl = self .fresh_account ()
26+ except RuntimeError as exc :
27+ self .skipTest (str (exc ))
28+
29+ def assertTaggedMediaPage (self , medias , amount ):
30+ self .assertGreater (len (medias ), 0 )
31+ self .assertLessEqual (len (medias ), amount )
32+ media = medias [0 ]
33+ self .assertIsInstance (media , Media )
34+ for field in REQUIRED_MEDIA_FIELDS :
35+ self .assertTrue (hasattr (media , field ))
36+
37+ def assertNoDuplicateMediasAcrossPages (self , first_page , next_page ):
38+ first_ids = {media .pk for media in first_page }
39+ next_ids = {media .pk for media in next_page }
40+ self .assertTrue (first_ids .isdisjoint (next_ids ), f"Duplicate medias across pages: { first_ids & next_ids } " )
41+
42+ def test_usertag_medias_paginated_live (self ):
43+ user_id = self .user_id_from_username ("instagram" )
44+
45+ first_page , end_cursor = self .cl .usertag_medias_paginated (user_id , amount = 2 )
46+ self .assertTaggedMediaPage (first_page , 2 )
47+ self .assertTrue (end_cursor )
48+
49+ next_page , _ = self .cl .usertag_medias_paginated (user_id , amount = 2 , end_cursor = end_cursor )
50+ self .assertTaggedMediaPage (next_page , 2 )
51+ self .assertNoDuplicateMediasAcrossPages (first_page , next_page )
52+
53+ def test_usertag_medias_paginated_v1_live (self ):
54+ user_id = self .user_id_from_username ("instagram" )
55+
56+ first_page , end_cursor = self .cl .usertag_medias_paginated_v1 (user_id , amount = 2 )
57+ self .assertTaggedMediaPage (first_page , 2 )
58+ self .assertTrue (end_cursor )
59+
60+ next_page , _ = self .cl .usertag_medias_paginated_v1 (user_id , amount = 2 , end_cursor = end_cursor )
61+ self .assertTaggedMediaPage (next_page , 2 )
62+ self .assertNoDuplicateMediasAcrossPages (first_page , next_page )
63+
64+
1365class ClientUserExtendTestCase (_helpers .ClientPrivateTestCase ):
1466 def test_username_from_user_id (self ):
1567 self .assertEqual (self .cl .username_from_user_id (25025320 ), "instagram" )
0 commit comments