Skip to content

Commit 4afeeea

Browse files
Ostap-ZherebetskyiJohnetordoff
authored andcommitted
merge and fix unit tests
1 parent db70e99 commit 4afeeea

File tree

20 files changed

+87
-92
lines changed

20 files changed

+87
-92
lines changed

addons/base/views.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,6 @@ def create_waterbutler_log(payload, **kwargs):
611611
target_node = AbstractNode.load(metadata.get('nid'))
612612
if target_node and payload['action'] != 'download_file':
613613
update_storage_usage_with_size(payload)
614-
615614
with transaction.atomic():
616615
file_signals.file_updated.send(target=node, user=user, event_type=action, payload=payload)
617616
return {'status': 'success'}

api/providers/serializers.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,6 @@ def create(self, validated_data):
364364
context['provider__id'] = provider._id
365365
context['is_reviews_moderator_notification'] = True
366366
context['referrer_fullname'] = user.fullname
367-
context['user_fullname'] = user.fullname
368367
context['is_reviews_moderator_notification'] = True
369368
context['is_admin'] = perm_group == ADMIN
370369

api_tests/mailhog/provider/test_preprints.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from osf import features
33

44
from framework.auth.core import Auth
5-
from osf.models import NotificationType
5+
from osf.models import NotificationType, Notification
66
from osf_tests.factories import (
77
ProjectFactory,
88
AuthUserFactory,
@@ -12,6 +12,7 @@
1212
from osf.utils.permissions import WRITE
1313
from tests.base import OsfTestCase
1414
from tests.utils import get_mailhog_messages, delete_mailhog_messages, capture_notifications, assert_emails
15+
from notifications.tasks import send_users_instant_digest_email
1516

1617

1718
class TestPreprintConfirmationEmails(OsfTestCase):
@@ -28,21 +29,31 @@ def setUp(self):
2829
@override_switch(features.ENABLE_MAILHOG, active=True)
2930
def test_creator_gets_email(self):
3031
delete_mailhog_messages()
32+
3133
with capture_notifications(passthrough=True) as notifications:
3234
self.preprint.set_published(True, auth=Auth(self.user), save=True)
3335
assert len(notifications['emits']) == 1
3436
assert notifications['emits'][0]['type'] == NotificationType.Type.PROVIDER_REVIEWS_SUBMISSION_CONFIRMATION
35-
massages = get_mailhog_messages()
36-
assert massages['count'] == len(notifications['emails'])
37-
assert_emails(massages, notifications)
37+
messages = get_mailhog_messages()
38+
assert not messages['items']
39+
assert Notification.objects.all()
40+
with capture_notifications(passthrough=True) as notifications:
41+
send_users_instant_digest_email.delay()
42+
43+
messages = get_mailhog_messages()
44+
assert messages['count'] == len(notifications['emits'])
3845

3946
delete_mailhog_messages()
4047
with capture_notifications(passthrough=True) as notifications:
4148
self.preprint_branded.set_published(True, auth=Auth(self.user), save=True)
4249
assert len(notifications['emits']) == 1
4350
assert notifications['emits'][0]['type'] == NotificationType.Type.PROVIDER_REVIEWS_SUBMISSION_CONFIRMATION
51+
messages = get_mailhog_messages()
52+
assert not messages['items']
53+
with capture_notifications(passthrough=True) as notifications:
54+
send_users_instant_digest_email.delay()
4455
massages = get_mailhog_messages()
45-
assert massages['count'] == len(notifications['emails'])
56+
assert massages['count'] == len(notifications['emits'])
4657
assert_emails(massages, notifications)
4758

4859
delete_mailhog_messages()

api_tests/mailhog/provider/test_reviewable.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from osf_tests.factories import PreprintFactory, AuthUserFactory
77
from tests.utils import get_mailhog_messages, delete_mailhog_messages, capture_notifications, assert_emails
88

9-
109
@pytest.mark.django_db
1110
class TestReviewable:
1211

@@ -18,16 +17,11 @@ def test_reject_resubmission_sends_emails(self):
1817
is_published=False
1918
)
2019
assert preprint.machine_state == DefaultStates.INITIAL.value
21-
delete_mailhog_messages()
2220
with capture_notifications(passthrough=True) as notifications:
2321
preprint.run_submit(user)
2422
assert len(notifications['emits']) == 1
2523
assert notifications['emits'][0]['type'] == NotificationType.Type.PROVIDER_REVIEWS_SUBMISSION_CONFIRMATION
2624
assert preprint.machine_state == DefaultStates.PENDING.value
27-
28-
massages = get_mailhog_messages()
29-
assert massages['count'] == len(notifications['emails'])
30-
assert_emails(massages, notifications)
3125
delete_mailhog_messages()
3226

3327
assert not user.notification_subscriptions.exists()
@@ -49,8 +43,9 @@ def test_reject_resubmission_sends_emails(self):
4943
assert len(notifications['emits']) == 1
5044
assert notifications['emits'][0]['type'] == NotificationType.Type.PROVIDER_REVIEWS_RESUBMISSION_CONFIRMATION
5145
assert preprint.machine_state == DefaultStates.PENDING.value
52-
massages = get_mailhog_messages()
53-
assert massages['count'] == len(notifications['emails'])
54-
assert_emails(massages, notifications)
46+
47+
messages = get_mailhog_messages()
48+
assert messages['count'] == len(notifications['emits'])
49+
assert_emails(messages, notifications)
5550

5651
delete_mailhog_messages()

api_tests/mailhog/provider/test_schema_responses.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,9 @@ def test_moderator_accept_notification(
244244
with capture_notifications(passthrough=True) as notifications:
245245
revised_response.accept(user=moderator)
246246
assert len(notifications['emits']) == 3
247-
massages = get_mailhog_messages()
248-
assert massages['count'] == len(notifications['emails'])
249-
assert_emails(massages, notifications)
247+
messages = get_mailhog_messages()
248+
assert messages['count'] == len(notifications['emails'])
249+
assert_emails(messages, notifications)
250250

251251
delete_mailhog_messages()
252252

@@ -259,8 +259,8 @@ def test_moderator_reject_notification(
259259
with capture_notifications(passthrough=True) as notifications:
260260
revised_response.reject(user=moderator)
261261
assert len(notifications['emits']) == 3
262-
massages = get_mailhog_messages()
263-
assert massages['count'] == len(notifications['emails'])
264-
assert_emails(massages, notifications)
262+
messages = get_mailhog_messages()
263+
assert messages['count'] == len(notifications['emails'])
264+
assert_emails(messages, notifications)
265265

266266
delete_mailhog_messages()

api_tests/mailhog/provider/test_submissions.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import pytest
22
from waffle.testutils import override_switch
3+
4+
from notifications.tasks import send_users_instant_digest_email
35
from osf import features
46

57
from api.base.settings.defaults import API_BASE
@@ -19,7 +21,7 @@
1921
from osf.models import NotificationType
2022

2123
from osf.migrations import update_provider_auth_groups
22-
from tests.utils import capture_notifications, get_mailhog_messages, delete_mailhog_messages, assert_emails
24+
from tests.utils import capture_notifications, get_mailhog_messages, delete_mailhog_messages
2325

2426

2527
@pytest.mark.django_db
@@ -82,9 +84,9 @@ def test_get_registration_actions(self, app, registration_actions_url, registrat
8284
assert len(notifications['emits']) == 2
8385
assert notifications['emits'][0]['type'] == NotificationType.Type.PROVIDER_NEW_PENDING_WITHDRAW_REQUESTS
8486
assert notifications['emits'][1]['type'] == NotificationType.Type.PROVIDER_NEW_PENDING_WITHDRAW_REQUESTS
85-
massages = get_mailhog_messages()
86-
assert massages['count'] == len(notifications['emails'])
87-
assert_emails(massages, notifications)
87+
messages = get_mailhog_messages()
88+
assert messages['count'] == 1
89+
assert messages['items'][0]['Content']['Headers']['To'][0] == registration.creator.username
8890

8991
delete_mailhog_messages()
9092

@@ -116,9 +118,10 @@ def test_get_provider_actions(self, app, provider_actions_url, registration, mod
116118
assert len(notifications['emits']) == 2
117119
assert notifications['emits'][0]['type'] == NotificationType.Type.PROVIDER_REVIEWS_SUBMISSION_CONFIRMATION
118120
assert notifications['emits'][1]['type'] == NotificationType.Type.PROVIDER_NEW_PENDING_SUBMISSIONS
119-
massages = get_mailhog_messages()
120-
assert massages['count'] == len(notifications['emails'])
121-
assert_emails(massages, notifications)
121+
send_users_instant_digest_email.delay()
122+
messages = get_mailhog_messages()
123+
assert messages['count'] == 1
124+
assert messages['items'][0]['Content']['Headers']['To'][0] == registration.creator.username
122125

123126
delete_mailhog_messages()
124127

api_tests/notifications/test_notification_digest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,6 @@ def test_send_moderators_digest_email_end_to_end(fake):
184184
sent=None,
185185
event_context={'provider_id': provider.id},
186186
)
187-
send_moderators_digest_email()
187+
send_moderators_digest_email.delay()
188188
email_task = EmailTask.objects.filter(user_id=user.id).first()
189189
assert email_task.status == 'SUCCESS'

notifications/tasks.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
logger = get_task_logger(__name__)
2121

2222
@celery_app.task(bind=True)
23-
def send_user_email_task(self, user_id, notification_ids, message_freq):
23+
def send_user_email_task(self, user_id, notification_ids, **kwargs):
2424
try:
2525
user = OSFUser.objects.get(
2626
guids___id=user_id,
@@ -89,7 +89,7 @@ def send_user_email_task(self, user_id, notification_ids, message_freq):
8989
raise self.retry(exc=e)
9090

9191
@celery_app.task(bind=True)
92-
def send_moderator_email_task(self, user_id, provider_id, notification_ids, message_freq):
92+
def send_moderator_email_task(self, user_id, provider_id, notification_ids, **kwargs):
9393
try:
9494
user = OSFUser.objects.get(
9595
guids___id=user_id,
@@ -165,7 +165,6 @@ def send_moderator_email_task(self, user_id, provider_id, notification_ids, mess
165165
NotificationType.Type.DIGEST_REVIEWS_MODERATORS.instance.emit(
166166
user=user,
167167
event_context=event_context,
168-
is_digest=True
169168
)
170169

171170
notifications_qs.update(sent=timezone.now())
@@ -196,7 +195,7 @@ def send_users_digest_email(dry_run=False):
196195
user_id = group['user_id']
197196
notification_ids = [msg['notification_id'] for msg in group['info']]
198197
if not dry_run:
199-
send_user_email_task.delay(user_id, notification_ids, freq)
198+
send_user_email_task.delay(user_id, notification_ids)
200199

201200
@celery_app.task(name='notifications.tasks.send_moderators_digest_email')
202201
def send_moderators_digest_email(dry_run=False):
@@ -215,7 +214,7 @@ def send_moderators_digest_email(dry_run=False):
215214
provider_id = group['provider_id']
216215
notification_ids = [msg['notification_id'] for msg in group['info']]
217216
if not dry_run:
218-
send_moderator_email_task.delay(user_id, provider_id, notification_ids, freq)
217+
send_moderator_email_task.delay(user_id, provider_id, notification_ids)
219218

220219
def get_moderators_emails(message_freq: str):
221220
"""Get all emails for reviews moderators that need to be sent, grouped by users AND providers.
@@ -322,8 +321,8 @@ def remove_subscription_task(node_id):
322321
).delete()
323322

324323

325-
@celery_app.task(name='notifications.tasks.send_users_instant_digest_email')
326-
def send_users_instant_digest_email(dry_run):
324+
@celery_app.task(bind=True, name='notifications.tasks.send_users_instant_digest_email')
325+
def send_users_instant_digest_email(self, dry_run=False, **kwargs):
327326
"""Send pending "instant' digest emails.
328327
:return:
329328
"""
@@ -332,10 +331,10 @@ def send_users_instant_digest_email(dry_run):
332331
user_id = group['user_id']
333332
notification_ids = [msg['notification_id'] for msg in group['info']]
334333
if not dry_run:
335-
send_user_email_task.delay(user_id, notification_ids, 'instantly')
334+
send_user_email_task.delay(user_id, notification_ids)
336335

337-
@celery_app.task(name='notifications.tasks.send_moderators_instant_digest_email')
338-
def send_moderators_instant_digest_email(dry_run=False):
336+
@celery_app.task(bind=True, name='notifications.tasks.send_moderators_instant_digest_email')
337+
def send_moderators_instant_digest_email(self, dry_run=False, **kwargs):
339338
"""Send pending "instant' digest emails.
340339
:return:
341340
"""
@@ -345,4 +344,4 @@ def send_moderators_instant_digest_email(dry_run=False):
345344
provider_id = group['provider_id']
346345
notification_ids = [msg['notification_id'] for msg in group['info']]
347346
if not dry_run:
348-
send_moderator_email_task.delay(user_id, provider_id, notification_ids, 'instantly')
347+
send_moderator_email_task.delay(user_id, provider_id, notification_ids)

osf/migrations/0003_aggregated_runsql_calls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class Migration(migrations.Migration):
1111
migrations.RunSQL(
1212
[
1313
"""
14+
CREATE UNIQUE INDEX one_quickfiles_per_user ON public.osf_abstractnode USING btree (creator_id, type, is_deleted) WHERE (((type)::text = 'osf.quickfilesnode'::text) AND (is_deleted = false));
1415
CREATE INDEX osf_abstractnode_collection_pub_del_type_index ON public.osf_abstractnode USING btree (is_public, is_deleted, type) WHERE ((is_public = true) AND (is_deleted = false) AND ((type)::text = 'osf.collection'::text));
1516
CREATE INDEX osf_abstractnode_date_modified_ef1e2ad8 ON public.osf_abstractnode USING btree (last_logged);
1617
CREATE INDEX osf_abstractnode_node_pub_del_type_index ON public.osf_abstractnode USING btree (is_public, is_deleted, type) WHERE ((is_public = true) AND (is_deleted = false) AND ((type)::text = 'osf.node'::text));

osf/migrations/0016_auto_20230828_1810.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@ class Migration(migrations.Migration):
2323
migrations.AlterField(
2424
model_name='abstractnode',
2525
name='type',
26-
field=models.CharField(choices=[('osf.node', 'node'), ('osf.draftnode', 'draft node'), ('osf.registration', 'registration')], db_index=True, max_length=255),
26+
field=models.CharField(choices=[('osf.node', 'node'), ('osf.draftnode', 'draft node'), ('osf.quickfilesnode', 'quick files node'), ('osf.registration', 'registration')], db_index=True, max_length=255),
2727
),
2828
]

0 commit comments

Comments
 (0)