@@ -152,6 +152,7 @@ def test_if_user_can_submit_talk_details_and_is_redirect_to_step2(user_client):
152152 "tags" : "abc, defg" ,
153153 "level" : TALK_LEVEL .beginner ,
154154 "domain_level" : TALK_LEVEL .advanced ,
155+ "i_accept_speaker_release" : True ,
155156 },
156157 )
157158
@@ -174,6 +175,36 @@ def test_if_user_can_submit_talk_details_and_is_redirect_to_step2(user_client):
174175 )
175176
176177
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+
177208def test_validation_errors_are_handled_on_step2 (user_client ):
178209 """
179210 NOTE(artcz)
@@ -450,6 +481,7 @@ def test_update_proposal_updates_proposal(user_client):
450481 "title" : "New title" ,
451482 "sub_title" : "New sub title" ,
452483 "tags" : "Some, tags" ,
484+ "i_accept_speaker_release" : True ,
453485 },
454486 )
455487
@@ -470,6 +502,42 @@ def test_update_proposal_updates_proposal(user_client):
470502 assert talk_dict ["speakers" ] == []
471503
472504
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+
473541def test_update_speaker_updated_speaker (user_client ):
474542 create_conference_with_open_cfp ()
475543 talk = TalkFactory ()
0 commit comments