|
24 | 24 | upload_schedule_item_video, |
25 | 25 | ) |
26 | 26 | from schedule.tests.factories import ( |
| 27 | + ScheduleItemAdditionalSpeakerFactory, |
27 | 28 | ScheduleItemFactory, |
28 | 29 | ScheduleItemSentForVideoUploadFactory, |
29 | 30 | ) |
@@ -762,6 +763,61 @@ def test_create_and_send_voucher_to_speaker(mocker): |
762 | 763 | mock_send_email.delay.assert_called_once() |
763 | 764 |
|
764 | 765 |
|
| 766 | +def test_create_and_send_voucher_to_speaker_to_speaker_and_co_speakers(mocker): |
| 767 | + mock_create = mocker.patch( |
| 768 | + "conferences.vouchers.create_voucher", return_value={"id": 123} |
| 769 | + ) |
| 770 | + mock_send_email = mocker.patch("schedule.tasks.send_conference_voucher_email") |
| 771 | + |
| 772 | + schedule_item = ScheduleItemFactory( |
| 773 | + type=ScheduleItem.TYPES.talk, |
| 774 | + ) |
| 775 | + additional_speaker_1 = ScheduleItemAdditionalSpeakerFactory( |
| 776 | + scheduleitem=schedule_item |
| 777 | + ).user |
| 778 | + additional_speaker_2 = ScheduleItemAdditionalSpeakerFactory( |
| 779 | + scheduleitem=schedule_item |
| 780 | + ).user |
| 781 | + |
| 782 | + create_and_send_voucher_to_speaker(schedule_item.id) |
| 783 | + |
| 784 | + speaker_voucher = ( |
| 785 | + ConferenceVoucher.objects.for_conference(schedule_item.conference) |
| 786 | + .filter( |
| 787 | + user=schedule_item.submission.speaker, |
| 788 | + voucher_type=ConferenceVoucher.VoucherType.SPEAKER, |
| 789 | + ) |
| 790 | + .get() |
| 791 | + ) |
| 792 | + |
| 793 | + co_speaker_voucher = ( |
| 794 | + ConferenceVoucher.objects.for_conference(schedule_item.conference) |
| 795 | + .filter( |
| 796 | + user=additional_speaker_1, |
| 797 | + voucher_type=ConferenceVoucher.VoucherType.CO_SPEAKER, |
| 798 | + ) |
| 799 | + .get() |
| 800 | + ) |
| 801 | + |
| 802 | + assert not ( |
| 803 | + ConferenceVoucher.objects.for_conference(schedule_item.conference) |
| 804 | + .filter( |
| 805 | + user=additional_speaker_2, |
| 806 | + voucher_type=ConferenceVoucher.VoucherType.CO_SPEAKER, |
| 807 | + ) |
| 808 | + .exists() |
| 809 | + ) |
| 810 | + |
| 811 | + assert mock_create.call_count == 2 |
| 812 | + mock_send_email.delay.assert_has_calls( |
| 813 | + [ |
| 814 | + mock.call(conference_voucher_id=speaker_voucher.id), |
| 815 | + mock.call(conference_voucher_id=co_speaker_voucher.id), |
| 816 | + ], |
| 817 | + any_order=True, |
| 818 | + ) |
| 819 | + |
| 820 | + |
765 | 821 | def test_create_and_send_voucher_to_speaker_works_if_existing_voucher_is_for_different_conf( |
766 | 822 | mocker, |
767 | 823 | ): |
@@ -808,7 +864,7 @@ def test_create_and_send_voucher_to_speaker_does_nothing_if_voucher_exists(mocke |
808 | 864 | mock_send_email.delay.assert_not_called() |
809 | 865 |
|
810 | 866 |
|
811 | | -def test_create_and_send_voucher_to_speaker_does_nothing_if_schedule_item_does_not_have_submission( |
| 867 | +def test_create_and_send_voucher_to_speaker_does_nothing_if_schedule_item_does_not_hav_speakers( |
812 | 868 | mocker, |
813 | 869 | ): |
814 | 870 | mock_create = mocker.patch("conferences.vouchers.create_voucher") |
|
0 commit comments