mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-30 14:31:57 -05:00
Merge pull request #3075 from alphagov/cache-provider-lookup
Cache provider lookups for 10 seconds
This commit is contained in:
@@ -34,6 +34,12 @@ from tests.app.db import (
|
||||
)
|
||||
|
||||
|
||||
def setup_function(_function):
|
||||
# pytest will run this function before each test. It makes sure the
|
||||
# state of the cache is not shared between tests.
|
||||
send_to_providers.provider_cache.clear()
|
||||
|
||||
|
||||
def test_provider_to_use_should_return_random_provider(mocker, notify_db_session):
|
||||
mmg = get_provider_details_by_identifier('mmg')
|
||||
firetext = get_provider_details_by_identifier('firetext')
|
||||
@@ -47,6 +53,21 @@ def test_provider_to_use_should_return_random_provider(mocker, notify_db_session
|
||||
assert ret.get_name() == 'mmg'
|
||||
|
||||
|
||||
def test_provider_to_use_should_cache_repeated_calls(mocker, notify_db_session):
|
||||
mock_choices = mocker.patch(
|
||||
'app.delivery.send_to_providers.random.choices',
|
||||
wraps=send_to_providers.random.choices,
|
||||
)
|
||||
|
||||
results = [
|
||||
send_to_providers.provider_to_use('sms', international=False)
|
||||
for _ in range(10)
|
||||
]
|
||||
|
||||
assert all(result == results[0] for result in results)
|
||||
assert len(mock_choices.call_args_list) == 1
|
||||
|
||||
|
||||
def test_provider_to_use_should_only_return_mmg_for_international(mocker, notify_db_session):
|
||||
mmg = get_provider_details_by_identifier('mmg')
|
||||
mock_choices = mocker.patch('app.delivery.send_to_providers.random.choices', return_value=[mmg])
|
||||
|
||||
Reference in New Issue
Block a user