mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-09 08:39:49 -04:00
Merge pull request #2279 from alphagov/cache-email-branding
Cache email branding in Redis
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
from app.notify_client import NotifyAdminAPIClient
|
from app.notify_client import NotifyAdminAPIClient, cache
|
||||||
|
|
||||||
|
|
||||||
class EmailBrandingClient(NotifyAdminAPIClient):
|
class EmailBrandingClient(NotifyAdminAPIClient):
|
||||||
@@ -6,9 +6,11 @@ class EmailBrandingClient(NotifyAdminAPIClient):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("a" * 73, "b")
|
super().__init__("a" * 73, "b")
|
||||||
|
|
||||||
|
@cache.set('email_branding-{branding_id}')
|
||||||
def get_email_branding(self, branding_id):
|
def get_email_branding(self, branding_id):
|
||||||
return self.get(url='/email-branding/{}'.format(branding_id))
|
return self.get(url='/email-branding/{}'.format(branding_id))
|
||||||
|
|
||||||
|
@cache.set('email_branding')
|
||||||
def get_all_email_branding(self, sort_key=None):
|
def get_all_email_branding(self, sort_key=None):
|
||||||
brandings = self.get(url='/email-branding')['email_branding']
|
brandings = self.get(url='/email-branding')['email_branding']
|
||||||
if sort_key and sort_key in brandings[0]:
|
if sort_key and sort_key in brandings[0]:
|
||||||
@@ -18,6 +20,7 @@ class EmailBrandingClient(NotifyAdminAPIClient):
|
|||||||
def get_letter_email_branding(self):
|
def get_letter_email_branding(self):
|
||||||
return self.get(url='/dvla_organisations')
|
return self.get(url='/dvla_organisations')
|
||||||
|
|
||||||
|
@cache.delete('email_branding')
|
||||||
def create_email_branding(self, logo, name, text, colour, domain, brand_type):
|
def create_email_branding(self, logo, name, text, colour, domain, brand_type):
|
||||||
data = {
|
data = {
|
||||||
"logo": logo,
|
"logo": logo,
|
||||||
@@ -29,6 +32,8 @@ class EmailBrandingClient(NotifyAdminAPIClient):
|
|||||||
}
|
}
|
||||||
return self.post(url="/email-branding", data=data)
|
return self.post(url="/email-branding", data=data)
|
||||||
|
|
||||||
|
@cache.delete('email_branding')
|
||||||
|
@cache.delete('email_branding-{branding_id}')
|
||||||
def update_email_branding(self, branding_id, logo, name, text, colour, domain, brand_type):
|
def update_email_branding(self, branding_id, logo, name, text, colour, domain, brand_type):
|
||||||
data = {
|
data = {
|
||||||
"logo": logo,
|
"logo": logo,
|
||||||
|
|||||||
@@ -1,20 +1,54 @@
|
|||||||
|
from unittest.mock import call
|
||||||
|
|
||||||
from app.notify_client.email_branding_client import EmailBrandingClient
|
from app.notify_client.email_branding_client import EmailBrandingClient
|
||||||
|
|
||||||
|
|
||||||
def test_get_email_branding(mocker, fake_uuid):
|
def test_get_email_branding(mocker, fake_uuid):
|
||||||
mock_get = mocker.patch('app.notify_client.email_branding_client.EmailBrandingClient.get')
|
mock_get = mocker.patch(
|
||||||
|
'app.notify_client.email_branding_client.EmailBrandingClient.get',
|
||||||
|
return_value={'foo': 'bar'}
|
||||||
|
)
|
||||||
|
mock_redis_get = mocker.patch(
|
||||||
|
'app.notify_client.RedisClient.get',
|
||||||
|
return_value=None,
|
||||||
|
)
|
||||||
|
mock_redis_set = mocker.patch(
|
||||||
|
'app.notify_client.RedisClient.set',
|
||||||
|
)
|
||||||
EmailBrandingClient().get_email_branding(fake_uuid)
|
EmailBrandingClient().get_email_branding(fake_uuid)
|
||||||
mock_get.assert_called_once_with(
|
mock_get.assert_called_once_with(
|
||||||
url='/email-branding/{}'.format(fake_uuid)
|
url='/email-branding/{}'.format(fake_uuid)
|
||||||
)
|
)
|
||||||
|
mock_redis_get.assert_called_once_with('email_branding-{}'.format(fake_uuid))
|
||||||
|
mock_redis_set.assert_called_once_with(
|
||||||
|
'email_branding-{}'.format(fake_uuid),
|
||||||
|
'{"foo": "bar"}',
|
||||||
|
ex=604800,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_get_all_email_branding(mocker):
|
def test_get_all_email_branding(mocker):
|
||||||
mock_get = mocker.patch('app.notify_client.email_branding_client.EmailBrandingClient.get')
|
mock_get = mocker.patch(
|
||||||
|
'app.notify_client.email_branding_client.EmailBrandingClient.get',
|
||||||
|
return_value={'email_branding': [1, 2, 3]}
|
||||||
|
)
|
||||||
|
mock_redis_get = mocker.patch(
|
||||||
|
'app.notify_client.RedisClient.get',
|
||||||
|
return_value=None,
|
||||||
|
)
|
||||||
|
mock_redis_set = mocker.patch(
|
||||||
|
'app.notify_client.RedisClient.set',
|
||||||
|
)
|
||||||
EmailBrandingClient().get_all_email_branding()
|
EmailBrandingClient().get_all_email_branding()
|
||||||
mock_get.assert_called_once_with(
|
mock_get.assert_called_once_with(
|
||||||
url='/email-branding'
|
url='/email-branding'
|
||||||
)
|
)
|
||||||
|
mock_redis_get.assert_called_once_with('email_branding')
|
||||||
|
mock_redis_set.assert_called_once_with(
|
||||||
|
'email_branding',
|
||||||
|
'[1, 2, 3]',
|
||||||
|
ex=604800,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_get_letter_email_branding(mocker):
|
def test_get_letter_email_branding(mocker):
|
||||||
@@ -30,6 +64,7 @@ def test_create_email_branding(mocker):
|
|||||||
'domain': 'sample.com', 'brand_type': 'org'}
|
'domain': 'sample.com', 'brand_type': 'org'}
|
||||||
|
|
||||||
mock_post = mocker.patch('app.notify_client.email_branding_client.EmailBrandingClient.post')
|
mock_post = mocker.patch('app.notify_client.email_branding_client.EmailBrandingClient.post')
|
||||||
|
mock_redis_delete = mocker.patch('app.notify_client.RedisClient.delete')
|
||||||
EmailBrandingClient().create_email_branding(
|
EmailBrandingClient().create_email_branding(
|
||||||
logo=org_data['logo'], name=org_data['name'], text=org_data['text'], colour=org_data['colour'],
|
logo=org_data['logo'], name=org_data['name'], text=org_data['text'], colour=org_data['colour'],
|
||||||
domain=org_data['domain'], brand_type='org'
|
domain=org_data['domain'], brand_type='org'
|
||||||
@@ -40,12 +75,15 @@ def test_create_email_branding(mocker):
|
|||||||
data=org_data
|
data=org_data
|
||||||
)
|
)
|
||||||
|
|
||||||
|
mock_redis_delete.assert_called_once_with('email_branding')
|
||||||
|
|
||||||
|
|
||||||
def test_update_email_branding(mocker, fake_uuid):
|
def test_update_email_branding(mocker, fake_uuid):
|
||||||
org_data = {'logo': 'test.png', 'name': 'test name', 'text': 'test name', 'colour': 'red',
|
org_data = {'logo': 'test.png', 'name': 'test name', 'text': 'test name', 'colour': 'red',
|
||||||
'domain': 'sample.com', 'brand_type': 'org'}
|
'domain': 'sample.com', 'brand_type': 'org'}
|
||||||
|
|
||||||
mock_post = mocker.patch('app.notify_client.email_branding_client.EmailBrandingClient.post')
|
mock_post = mocker.patch('app.notify_client.email_branding_client.EmailBrandingClient.post')
|
||||||
|
mock_redis_delete = mocker.patch('app.notify_client.RedisClient.delete')
|
||||||
EmailBrandingClient().update_email_branding(
|
EmailBrandingClient().update_email_branding(
|
||||||
branding_id=fake_uuid, logo=org_data['logo'], name=org_data['name'], text=org_data['text'],
|
branding_id=fake_uuid, logo=org_data['logo'], name=org_data['name'], text=org_data['text'],
|
||||||
colour=org_data['colour'], domain=org_data['domain'], brand_type='org')
|
colour=org_data['colour'], domain=org_data['domain'], brand_type='org')
|
||||||
@@ -54,3 +92,7 @@ def test_update_email_branding(mocker, fake_uuid):
|
|||||||
url='/email-branding/{}'.format(fake_uuid),
|
url='/email-branding/{}'.format(fake_uuid),
|
||||||
data=org_data
|
data=org_data
|
||||||
)
|
)
|
||||||
|
assert mock_redis_delete.call_args_list == [
|
||||||
|
call('email_branding'),
|
||||||
|
call('email_branding-{}'.format(fake_uuid)),
|
||||||
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user