54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import pytest
|
|
from grant.email.subscription_settings import (
|
|
email_subscriptions_to_bits,
|
|
email_subscriptions_to_dict,
|
|
get_default_email_subscriptions,
|
|
validate_email_subscriptions,
|
|
is_subscribed,
|
|
EmailSubscription
|
|
)
|
|
from grant.utils.exceptions import ValidationException
|
|
|
|
from ..config import BaseTestConfig
|
|
|
|
test_dict = get_default_email_subscriptions()
|
|
|
|
# set all False
|
|
for k in test_dict:
|
|
test_dict[k] = False
|
|
|
|
# turn on a couple
|
|
test_dict[EmailSubscription.MY_COMMENT_REPLY.value['key']] = True
|
|
test_dict[EmailSubscription.FUNDED_PROPOSAL_UPDATE.value['key']] = True
|
|
test_dict[EmailSubscription.FUNDED_PROPOSAL_PAYOUT_REQUEST.value['key']] = True
|
|
|
|
# calculate number
|
|
test_bits = \
|
|
2 ** EmailSubscription.MY_COMMENT_REPLY.value['bit'] + \
|
|
2 ** EmailSubscription.FUNDED_PROPOSAL_UPDATE.value['bit'] + \
|
|
2 ** EmailSubscription.FUNDED_PROPOSAL_PAYOUT_REQUEST.value['bit']
|
|
|
|
|
|
class TestEmailSubscriptionSettings(BaseTestConfig):
|
|
def test_email_subscriptions_to_bits(self):
|
|
res = email_subscriptions_to_bits(test_dict)
|
|
self.assertEquals(res, test_bits)
|
|
|
|
def test_email_subscriptions_to_dict(self):
|
|
res = email_subscriptions_to_dict(test_bits)
|
|
self.maxDiff = None
|
|
self.assertEquals(res, test_dict)
|
|
|
|
def test_validate_email_subscriptions(self):
|
|
test = get_default_email_subscriptions()
|
|
# no Exception
|
|
validate_email_subscriptions(test)
|
|
# cause ValidationException
|
|
test['incorrect_key'] = True
|
|
with pytest.raises(ValidationException) as e_info:
|
|
validate_email_subscriptions(test)
|
|
|
|
def test_is_subscribed(self):
|
|
self.assertTrue(is_subscribed(test_dict, EmailSubscription.MY_COMMENT_REPLY))
|
|
self.assertFalse(is_subscribed(test_dict, EmailSubscription.MY_PROPOSAL_APPROVAL))
|