|
4 | 4 | from django.core import mail |
5 | 5 | from django.core.files.uploadedfile import SimpleUploadedFile |
6 | 6 | from django.urls import reverse |
| 7 | +from tablib import Dataset |
7 | 8 |
|
8 | | -from volunteer.admin import PyladiesChapterAdmin |
9 | | -from volunteer.models import ApplicationStatus, PyladiesChapter, VolunteerProfile |
| 9 | +from volunteer.admin import PyladiesChapterAdmin, VolunteerProfileResource |
| 10 | +from volunteer.constants import ApplicationStatus |
| 11 | +from volunteer.models import PyladiesChapter, VolunteerProfile |
10 | 12 |
|
11 | 13 |
|
12 | 14 | @pytest.mark.django_db |
@@ -73,3 +75,68 @@ def test_pyladies_chapter_admin_view(self): |
73 | 75 | has_logo_field = pyladies_chapter_admin.has_logo(chapter) |
74 | 76 |
|
75 | 77 | assert has_logo_field is True |
| 78 | + |
| 79 | + |
| 80 | +class TestVolunteerImportExport: |
| 81 | + def test_export_volunteer_does_not_trigger_email(self, portal_user): |
| 82 | + dataset = Dataset() |
| 83 | + dataset.headers = [ |
| 84 | + "id", |
| 85 | + "user__first_name", |
| 86 | + "user__last_name", |
| 87 | + "user__email", |
| 88 | + "application_status", |
| 89 | + "github_username", |
| 90 | + "discord_username", |
| 91 | + "instagram_username", |
| 92 | + "bluesky_username", |
| 93 | + "mastodon_url", |
| 94 | + "x_username", |
| 95 | + "linkedin_url", |
| 96 | + "region", |
| 97 | + "chapter__chapter_name", |
| 98 | + ] |
| 99 | + dataset.append( |
| 100 | + [ |
| 101 | + portal_user.id, |
| 102 | + portal_user.first_name, |
| 103 | + portal_user.last_name, |
| 104 | + portal_user.email, |
| 105 | + ApplicationStatus.APPROVED.value, |
| 106 | + "", |
| 107 | + "", |
| 108 | + "", |
| 109 | + "", |
| 110 | + "", |
| 111 | + "", |
| 112 | + "", |
| 113 | + "North America", |
| 114 | + "", |
| 115 | + ] |
| 116 | + ) |
| 117 | + |
| 118 | + dataset.append( |
| 119 | + [ |
| 120 | + portal_user.id, |
| 121 | + portal_user.first_name, |
| 122 | + portal_user.last_name, |
| 123 | + portal_user.email, |
| 124 | + ApplicationStatus.CANCELLED.value, |
| 125 | + "", |
| 126 | + "", |
| 127 | + "", |
| 128 | + "", |
| 129 | + "", |
| 130 | + "", |
| 131 | + "", |
| 132 | + "USA", |
| 133 | + "", |
| 134 | + ] |
| 135 | + ) |
| 136 | + |
| 137 | + resource = VolunteerProfileResource() |
| 138 | + mail.outbox.clear() |
| 139 | + resource.import_data(dataset, dry_run=False) |
| 140 | + assert len(mail.outbox) == 0 # no email |
| 141 | + resource.import_data(dataset, dry_run=True) |
| 142 | + assert len(mail.outbox) == 0 # no email |
0 commit comments