class ReplicationMiddlewareRecentlyUpdatedTest(TestCase):

    SETTINGS = dict(
            DATABASE_ROUTERS=['django_replicated2.routers.ReplicationRouter'],
    )

    def setUp(self):
        self.middleware = ReplicationMiddleware()
        self.request = RequestFactory()

    @override_settings(**SETTINGS)
    def test_process_request(self):
        self.request.cookies[ReplicationMiddleware.COOKIE_NAME] = 'any-value'
        router = flexmock().should_receive('disable_slaves').with_args().once
        flexmock(self.middleware).should_receive('get_router').and_return(router.mock)
        self.middleware.process_request(self.request.get('/'))

    @override_settings(**SETTINGS)
    def test_process_response_updateable_methods(self):
        request = self.request.post('/')
        response = HttpResponseRedirect('/')
        flexmock(ReplicationRouter).should_receive('is_db_recently_updated').with_args().and_return(True)
        self.middleware.process_response(request, response)
        self.assertIn(ReplicationMiddleware.COOKIE_NAME, response.cookies)

    @override_settings(**SETTINGS)
    def test_process_response_safe_methods(self):
        request = self.request.get('/')
        response = HttpResponseRedirect('/')
        flexmock(ReplicationRouter).should_receive('is_db_recently_updated').with_args().and_return(True)
        self.middleware.process_response(request, response)
        self.assertNotIn(ReplicationMiddleware.COOKIE_NAME, response.cookies)