def test_interface_view_registered_default(self): """If the object supports an interface, and the view is registered as the default view, when a view is requested where no name is specified, the default view is returned.""" class IHasInterface(Interface): pass class HasInterface(object): implements(IHasInterface) class AView(object): for_interface = IHasInterface name = "name" is_default = True def __init__(self, *args): pass def initialize(self): self.initialized = True register_view(AView) obj = HasInterface() view = get_view(obj, None, None) self.assertIsInstance(view, AView) self.assertTrue(view.initialized)
def test_interface_view_registered(self): """If the object supports an interface, and the view is registered, make sure that the view is returned when asked for.""" class IHasInterface(Interface): pass class HasInterface(object): implements(IHasInterface) class AView(object): for_interface = IHasInterface name = "name" def __init__(self, *args): pass def initialize(self): self.initialized = True register_view(AView) obj = HasInterface() view = get_view(obj, "name", None) self.assertIsInstance(view, AView) self.assertTrue(view.initialized)
def test_no_interfaces(self): """If the object supports no interfaces, there is no view.""" class NoInterfaces(object): pass obj = NoInterfaces() self.assertIs(None, get_view(obj, None, None))
def test_interface_not_registered(self): """If the object supports an interface, but that interface is not registered, we get no view.""" class IHasInterface(Interface): pass class HasInterface(object): implements(IHasInterface) obj = HasInterface() self.assertIs(None, get_view(obj, None, None))
def test_registration(self): """Create a view class, and make sure it is registered.""" class IHasInterface(Interface): pass class HasInterface(object): implements(IHasInterface) class AView(BaseView): for_interface = IHasInterface name = "name" obj = HasInterface() view = get_view(obj, "name", None) self.assertIsInstance(view, AView)
def _get_view(self, request, path): """Get the view for the path specified.""" resource_path, action = parse_url(path) model = self.resource_factory.get_resource_at_path(resource_path) return get_view(model, action, request, self.execution_context)
def get_view(self, factory, path, name=None, base_url=None): info = factory.get_resource_at_path(path) request = Request.blank(path, base_url=base_url) return get_view(info, name, request)