From 6c27f8023e42ff588e399fa3db1e7c71cf4886ee Mon Sep 17 00:00:00 2001 From: Martyn Inglis Date: Thu, 10 Nov 2016 13:22:38 +0000 Subject: [PATCH] Added tests for setting and fetching from redis respecting the enabled flag. --- app/__init__.py | 14 ++++---- app/clients/redis/__init__.py | 0 app/clients/redis/redis_client.py | 2 +- tests/app/clients/test_redis_client.py | 44 ++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 app/clients/redis/__init__.py create mode 100644 tests/app/clients/test_redis_client.py diff --git a/app/__init__.py b/app/__init__.py index ac2e6da5d..83e494de8 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,24 +1,24 @@ -import uuid import os +import uuid -from flask import request, url_for, g, jsonify from flask import Flask, _request_ctx_stack +from flask import request, url_for, g, jsonify from flask.ext.sqlalchemy import SQLAlchemy from flask_marshmallow import Marshmallow from monotonic import monotonic -from werkzeug.local import LocalProxy from notifications_utils import logging +from werkzeug.local import LocalProxy + from app.celery.celery import NotifyCelery from app.clients import Clients -from app.clients.sms.mmg import MMGClient +from app.clients.email.aws_ses import AwsSesClient +from app.clients.redis.redis_client import RedisClient from app.clients.sms.firetext import FiretextClient from app.clients.sms.loadtesting import LoadtestingClient -from app.clients.email.aws_ses import AwsSesClient +from app.clients.sms.mmg import MMGClient from app.clients.statsd.statsd_client import StatsdClient -from app.clients.redis.redis_client import RedisClient from app.encryption import Encryption - DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%f" DATE_FORMAT = "%Y-%m-%d" diff --git a/app/clients/redis/__init__.py b/app/clients/redis/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/app/clients/redis/redis_client.py b/app/clients/redis/redis_client.py index 57ef8df91..b85450625 100644 --- a/app/clients/redis/redis_client.py +++ b/app/clients/redis/redis_client.py @@ -17,4 +17,4 @@ class RedisClient: def get(self, key): if self.active: - self.redis_store.get(key) \ No newline at end of file + self.redis_store.get(key) diff --git a/tests/app/clients/test_redis_client.py b/tests/app/clients/test_redis_client.py new file mode 100644 index 000000000..e5cd78327 --- /dev/null +++ b/tests/app/clients/test_redis_client.py @@ -0,0 +1,44 @@ +import pytest +from unittest.mock import Mock + +from app.clients.redis.redis_client import RedisClient + + +@pytest.fixture(scope='function') +def enabled_redis_client(notify_api): + notify_api.config['REDIS_ENABLED'] = True + + redis_client = RedisClient() + redis_client.init_app(notify_api) + redis_client.redis_store = Mock() + return redis_client + + +@pytest.fixture(scope='function') +def disabled_redis_client(notify_api): + notify_api.config['REDIS_ENABLED'] = False + + redis_client = RedisClient() + redis_client.init_app(notify_api) + redis_client.redis_store = Mock() + return redis_client + + +def test_should_not_call_set_if_not_enabled(disabled_redis_client): + disabled_redis_client.set('key', 'value') + disabled_redis_client.redis_store.set.assert_not_called() + + +def test_should_call_set_if_enabled(enabled_redis_client): + enabled_redis_client.set('key', 'value') + enabled_redis_client.redis_store.set.assert_called_with('key', 'value') + + +def test_should_not_call_get_if_not_enabled(disabled_redis_client): + disabled_redis_client.set('key', 'value') + disabled_redis_client.redis_store.get.assert_not_called() + + +def test_should_call_get_if_enabled(enabled_redis_client): + enabled_redis_client.get('key') + enabled_redis_client.redis_store.get.assert_called_with('key') \ No newline at end of file