# -*- coding: utf-8; -*- from unittest.mock import MagicMock from pyramid import testing from tailbone import subscribers as mod from tests.util import DataTestCase class TestNewRequest(DataTestCase): def setUp(self): self.setup_db() self.request = self.make_request() self.pyramid_config = testing.setUp(request=self.request, settings={ 'wutta_config': self.config, }) def tearDown(self): self.teardown_db() testing.tearDown() def make_request(self, **kwargs): return testing.DummyRequest(**kwargs) def make_event(self): return MagicMock(request=self.request) def test_continuum_remote_addr(self): event = self.make_event() # nothing happens mod.new_request(event, session=self.session) self.assertFalse(hasattr(self.session, 'continuum_remote_addr')) # unless request has client_addr self.request.client_addr = '127.0.0.1' mod.new_request(event, session=self.session) self.assertEqual(self.session.continuum_remote_addr, '127.0.0.1') def test_register_component(self): event = self.make_event() # function added self.assertFalse(hasattr(self.request, 'register_component')) mod.new_request(event, session=self.session) self.assertTrue(callable(self.request.register_component)) # call function self.request.register_component('tailbone-datepicker', 'TailboneDatepicker') self.assertEqual(self.request._tailbone_registered_components, {'tailbone-datepicker': 'TailboneDatepicker'}) # duplicate registration ignored self.request.register_component('tailbone-datepicker', 'TailboneDatepicker') self.assertEqual(self.request._tailbone_registered_components, {'tailbone-datepicker': 'TailboneDatepicker'})