def test_smart_lookup_parent(self): """ ISmartLookupResource can find object on parent """ parent = ISmartLookupResource() resource = ISmartLookupResource() resource.__parent__ = parent parent.foobar = 'baz' self.assertEqual(resource.foobar, 'baz')
def test_smart_lookup_no_private(self): """ ISmartLookupResource doesn't look up private fields """ parent = ISmartLookupResource() resource = ISmartLookupResource() resource.__parent__ = parent parent._foobar = 'baz' with self.assertRaises(AttributeError): resource._foobar
def test_traverse_non_smart_parents(self): """ ISmartLookupResource can traverse non-smart parents """ grandparent = Dummy() parent = Dummy() parent.__parent__ = grandparent resource = ISmartLookupResource() resource.__parent__ = parent grandparent.request = object() self.assertEqual(resource.request, grandparent.request)
def test_smart_lookup_missing(self): """ ISmartLookupResource raises AttributeError if object missing """ grandparent = ISmartLookupResource() parent = ISmartLookupResource() parent.__parent__ = grandparent resource = ISmartLookupResource() resource.__parent__ = parent with self.assertRaises(AttributeError): resource.foobar
def test_smart_lookup_self(self): """ ISmartLookupResource can find object on self """ resource = ISmartLookupResource() resource.foobar = 'baz' self.assertEqual(resource.foobar, 'baz')