@@ -152,6 +152,7 @@ def test_if_user_can_submit_talk_details_and_is_redirect_to_step2(user_client):
152
152
"tags" : "abc, defg" ,
153
153
"level" : TALK_LEVEL .beginner ,
154
154
"domain_level" : TALK_LEVEL .advanced ,
155
+ "i_accept_speaker_release" : True ,
155
156
},
156
157
)
157
158
@@ -174,6 +175,36 @@ def test_if_user_can_submit_talk_details_and_is_redirect_to_step2(user_client):
174
175
)
175
176
176
177
178
+ def test_if_user_cannot_submit_talk_if_release_not_selected (user_client ):
179
+ STEP1_VALIDATION_FAIL_200 = 200
180
+
181
+ Conference .objects .create (
182
+ code = settings .CONFERENCE_CONFERENCE ,
183
+ name = settings .CONFERENCE_CONFERENCE ,
184
+ cfp_start = timezone .now ().date () - timedelta (days = 2 ),
185
+ cfp_end = timezone .now ().date () + timedelta (days = 1 ),
186
+ )
187
+ step1_url = reverse ("cfp:step1_submit_proposal" )
188
+
189
+ response = user_client .post (
190
+ step1_url ,
191
+ {
192
+ "type" : TALK_TYPE_CHOICES .t_30 ,
193
+ "abstract" : "Abstract goes here" ,
194
+ "title" : "A title" ,
195
+ "sub_title" : "A sub title" ,
196
+ "abstract_short" : "Short abstract" ,
197
+ "abstract_extra" : "Abstract _extra" ,
198
+ "tags" : "abc, defg" ,
199
+ "level" : TALK_LEVEL .beginner ,
200
+ "domain_level" : TALK_LEVEL .advanced ,
201
+ "i_accept_speaker_release" : False ,
202
+ },
203
+ )
204
+
205
+ assert response .status_code == STEP1_VALIDATION_FAIL_200
206
+
207
+
177
208
def test_validation_errors_are_handled_on_step2 (user_client ):
178
209
"""
179
210
NOTE(artcz)
@@ -450,6 +481,7 @@ def test_update_proposal_updates_proposal(user_client):
450
481
"title" : "New title" ,
451
482
"sub_title" : "New sub title" ,
452
483
"tags" : "Some, tags" ,
484
+ "i_accept_speaker_release" : True ,
453
485
},
454
486
)
455
487
@@ -470,6 +502,42 @@ def test_update_proposal_updates_proposal(user_client):
470
502
assert talk_dict ["speakers" ] == []
471
503
472
504
505
+ def test_update_proposal_fails_if_missing_release_agreement (user_client ):
506
+ create_conference_with_open_cfp ()
507
+ talk = TalkFactory ()
508
+ talk .setAbstract ("some abstract" )
509
+ talk .created_by = user_client .user
510
+ talk .save ()
511
+
512
+ edit_url = reverse ("cfp:update" , args = [talk .uuid ])
513
+
514
+ response = user_client .post (
515
+ edit_url ,
516
+ {
517
+ "type" : TALK_TYPE_CHOICES .t_45 ,
518
+ "abstract" : "New abstract" ,
519
+ "abstract_short" : "New short abstract" ,
520
+ "abstract_extra" : "New extra abstract" ,
521
+ "level" : TALK_LEVEL .intermediate ,
522
+ "domain_level" : TALK_LEVEL .advanced ,
523
+ "title" : "New title" ,
524
+ "sub_title" : "New sub title" ,
525
+ "tags" : "Some, tags" ,
526
+ "i_accept_speaker_release" : False
527
+ },
528
+ )
529
+
530
+ # We do not advance and talk should be unchanged in DB
531
+ assert response .status_code == 200
532
+
533
+ # Make sure that nothing changed.
534
+ orig_talk_dict = dump_relevant_talk_information_to_dict (talk )
535
+ talk .refresh_from_db ()
536
+ new_talk_dict = dump_relevant_talk_information_to_dict (talk )
537
+
538
+ assert orig_talk_dict == new_talk_dict
539
+
540
+
473
541
def test_update_speaker_updated_speaker (user_client ):
474
542
create_conference_with_open_cfp ()
475
543
talk = TalkFactory ()
0 commit comments