1+ from submissions .models import Submission
2+ from users .tests .factories import UserFactory
13from voting .tests .factories .vote import VoteFactory
24from conferences .tests .factories import ConferenceFactory
35from submissions .tests .factories import SubmissionFactory
68pytestmark = pytest .mark .django_db
79
810
11+ def test_submissions_are_random_by_user (graphql_client , mock_has_ticket ):
12+ user_1 = UserFactory (id = 100 )
13+ user_2 = UserFactory (id = 103 )
14+ user_3 = UserFactory (id = 104 )
15+
16+ graphql_client .force_login (user_1 )
17+
18+ submission = SubmissionFactory (id = 1 )
19+ submission_2 = SubmissionFactory (id = 2 , conference = submission .conference )
20+ submission_3 = SubmissionFactory (id = 3 , conference = submission .conference )
21+
22+ mock_has_ticket (submission .conference )
23+
24+ query = """query Submissions($code: String!, $page: Int) {
25+ submissions(code: $code, page: $page, pageSize: 1) {
26+ pageInfo {
27+ totalPages
28+ totalItems
29+ }
30+ items {
31+ id
32+ }
33+ }
34+ }"""
35+
36+ data_proposals = {
37+ user_1 : [
38+ {"id" : submission_3 .hashid },
39+ {"id" : submission_2 .hashid },
40+ {"id" : submission .hashid },
41+ ],
42+ user_2 : [
43+ {"id" : submission .hashid },
44+ {"id" : submission_2 .hashid },
45+ {"id" : submission_3 .hashid },
46+ ],
47+ user_3 : [
48+ {"id" : submission_2 .hashid },
49+ {"id" : submission_3 .hashid },
50+ {"id" : submission .hashid },
51+ ],
52+ }
53+
54+ for user in [user_1 , user_2 , user_3 ]:
55+ graphql_client .force_login (user )
56+
57+ for page in range (3 ):
58+ resp = graphql_client .query (
59+ query ,
60+ variables = {"code" : submission .conference .code , "page" : page + 1 },
61+ )
62+
63+ assert not resp .get ("errors" )
64+ assert resp ["data" ]["submissions" ]["items" ] == [data_proposals [user ][page ]]
65+
66+
967def test_returns_submissions_paginated (graphql_client , user ):
1068 graphql_client .force_login (user )
1169
@@ -29,14 +87,44 @@ def test_returns_submissions_paginated(graphql_client, user):
2987 )
3088
3189 assert not resp .get ("errors" )
32- assert resp ["data" ]["submissions" ]["items" ] == [{"id" : submission .hashid }]
90+ assert resp ["data" ]["submissions" ]["items" ] == [{"id" : submission_2 .hashid }]
3391 assert resp ["data" ]["submissions" ]["pageInfo" ] == {"totalPages" : 2 , "totalItems" : 2 }
3492
3593 resp_2 = graphql_client .query (
3694 query ,
3795 variables = {"code" : submission .conference .code , "page" : 2 },
3896 )
39- assert resp_2 ["data" ]["submissions" ]["items" ] == [{"id" : submission_2 .hashid }]
97+ assert resp_2 ["data" ]["submissions" ]["items" ] == [{"id" : submission .hashid }]
98+
99+
100+ def test_canceled_submissions_are_excluded (graphql_client , user , mock_has_ticket ):
101+ graphql_client .force_login (user )
102+
103+ submission = SubmissionFactory ()
104+ SubmissionFactory (
105+ status = Submission .STATUS .cancelled , conference = submission .conference
106+ )
107+ mock_has_ticket (submission .conference )
108+
109+ query = """query Submissions($code: String!, $page: Int) {
110+ submissions(code: $code, page: $page, pageSize: 10) {
111+ pageInfo {
112+ totalPages
113+ totalItems
114+ }
115+ items {
116+ id
117+ }
118+ }
119+ }"""
120+ resp = graphql_client .query (
121+ query ,
122+ variables = {"code" : submission .conference .code },
123+ )
124+
125+ assert not resp .get ("errors" )
126+ assert resp ["data" ]["submissions" ]["items" ] == [{"id" : submission .hashid }]
127+ assert resp ["data" ]["submissions" ]["pageInfo" ] == {"totalPages" : 1 , "totalItems" : 1 }
40128
41129
42130def test_page_size_cannot_be_less_than_1 (graphql_client , user ):
0 commit comments