def __init__( self, config=None, bin=None, manager=None, router=None, jinja=None, ): if config is None: config = {} if manager is None: manager = Manager() if bin is None: bin = assets.Bin(manager=manager) if router is None: router = Router(mapper=SimpleMapper()) self._response_callbacks = defaultdict(list) self.bin = bin self.config = config self.manager = manager self.router = router self.bind_bin(bin) if jinja is not None: self.bind_jinja_environment(jinja)
def setUp(self): self.request = mock.Mock() self.fn = mock.Mock(__name__="a_view") self.request_manager = Manager() self.request_manager.request_started(self.request) self.bin = assets.Bin(manager=self.request_manager)
def test_updating_bins_preserves_which_providers_need_the_request(self): bin = assets.Bin(self.request_manager) iron = mock.Mock() bin.provides("iron", needs_request=True)(iron) self.bin.update(bin) self.bin.needs(["iron"])(self.fn)(self.request) iron.assert_called_once_with(self.request)
def test_update(self): iron, wine = mock.Mock(), mock.Mock() self.bin.provides("iron")(iron) self.bin.provides("wine")(wine) gold = mock.Mock() bin = assets.Bin(self.request_manager, globals={"gold": gold}) self.bin.update(bin) self.assertEqual(self.bin.assets, {"iron", "wine", "gold"})
def test_it_can_bind_to_other_bins(self): app = core.Application() bin = assets.Bin(manager=app.manager) app.bind_bin(bin) self.assertSubdict( [ ("app", app), ("config", app.config), ("manager", app.manager), ("router", app.router), ], bin.globals, )
def test_it_can_bind_to_other_bins(self): app = core.Application() bin = app.bound_bin(assets.Bin()) self.assertEqual( ( bin.provide("app"), bin.provide("config"), bin.provide("manager"), bin.provide("router"), ), ( app, app.config, app.manager, app.router, ), )
def test_it_provides_assets(self): bin = assets.Bin().add(twelve=lambda bin: 12) self.assertEqual(bin.provide("twelve"), 12)
def test_repr(self): self.assertEqual( repr(assets.Bin().add(zero=int).add(empty=str)), "<Bin: {'empty', 'zero'}>", )
def test_hash(self): self.assertIn( assets.Bin().add(zero=int), {assets.Bin().add(zero=int)}, )
def test_no_such_asset(self): with self.assertRaises(assets.NoSuchAsset) as e: assets.Bin().provide("twelve") self.assertEqual(str(e.exception), "twelve")
def test_with_globals(self): foo, bar = object(), object() bin = assets.Bin().with_globals(foo=foo, bar=bar) self.assertEqual((bin.provide("foo"), bin.provide("bar")), (foo, bar))
def __attrs_post_init__(self): if self.bin is None: self.bin = assets.Bin().add(manager=self.manager) self.bin = self.bound_bin(self.bin) if self._jinja is not None: self.bind_jinja_environment(self._jinja)