59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
|
# -*- 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'})
|