@@ -67,25 +67,13 @@ def test_user_list_endpoint_get(client, user, is_author, has_image, is_unlisted)
6767
6868
6969def test_user_list_endpoint_list_query_count_constant (
70- client , django_assert_num_queries
70+ client , django_assert_max_num_queries
7171):
7272 """User list list queries should not grow with list count."""
7373 user = UserFactory .create ()
7474 client .force_login (user )
7575
76- user_list = factories .UserListFactory .create (author = user )
77- course = factories .CourseFactory .create ()
78- UserListRelationship .objects .create (
79- parent = user_list ,
80- child = course .learning_resource ,
81- position = 0 ,
82- )
83-
84- with django_assert_num_queries (5 , exact = False ):
85- baseline_resp = client .get (reverse ("lr:v1:userlists_api-list" ))
86- assert baseline_resp .status_code == 200
87-
88- for _ in range (4 ):
76+ def _create_list_with_item ():
8977 user_list = factories .UserListFactory .create (author = user )
9078 course = factories .CourseFactory .create ()
9179 UserListRelationship .objects .create (
@@ -94,7 +82,19 @@ def test_user_list_endpoint_list_query_count_constant(
9482 position = 0 ,
9583 )
9684
97- with django_assert_num_queries (5 , exact = False ):
85+ _create_list_with_item ()
86+
87+ # Cap well below what an N+1 on topics/children/image would produce
88+ # for the expanded case (5 lists with related data).
89+ query_budget = 20
90+ with django_assert_max_num_queries (query_budget ):
91+ baseline_resp = client .get (reverse ("lr:v1:userlists_api-list" ))
92+ assert baseline_resp .status_code == 200
93+
94+ for _ in range (4 ):
95+ _create_list_with_item ()
96+
97+ with django_assert_max_num_queries (query_budget ):
9898 expanded_resp = client .get (reverse ("lr:v1:userlists_api-list" ))
9999 assert expanded_resp .status_code == 200
100100
0 commit comments