class TestProperties(TestDatabaseFixture): def setUp(self): super(TestProperties, self).setUp() # Make some nodes self.root = Node(name=u'root', title=u'Root Node') if not hasattr(self, 'nodetype'): self.nodetype = Node self.node1 = self.nodetype(name=u'node1', title=u'Node 1', parent=self.root) self.node2 = self.nodetype(name=u'node2', title=u'Node 2', parent=self.root) self.node3 = self.nodetype(name=u'node3', title=u'Node 3', parent=self.node2) self.node4 = self.nodetype(name=u'node4', title=u'Node 4', parent=self.node3) db.session.add_all([self.root, self.node1, self.node2, self.node3, self.node4]) db.session.commit() def test_property_dict(self): """Properties behave like a simple dictionary.""" self.node1.properties[u'prop1'] = u'strvalue' # Properties should be retrievable without committing self.assertEqual(self.node1.properties.get(u'prop1'), u'strvalue') db.session.commit() # And retrievable after committing self.assertEqual(self.node1.properties.get(u'prop1'), u'strvalue') # Properties can be integers self.node1.properties[u'prop2'] = 123 db.session.commit() self.assertEqual(self.node1.properties.get(u'prop2'), 123) def test_property_blank_default(self): self.node1.properties['test1'] = u'' self.assertEqual(self.node1.properties['test1'], u'') self.assertEqual(self.node1.properties.get('test1'), u'') def test_inherited_properties(self): """getprop returns the value of a property from this or any parent node.""" self.node2.properties[u'inherited_prop'] = u'inherited_val' # The property isn't available in the node's parent self.assertEqual(self.root.getprop(u'inherited_prop'), None) # The provided default value is returned self.assertEqual(self.root.getprop(u'inherited_prop', 1), 1) # The property is available in the node it was set on self.assertEqual(self.node2.getprop(u'inherited_prop'), u'inherited_val') # The property is not available in a sibling node self.assertEqual(self.node1.getprop(u'inherited_prop'), None) # The property is available from a child node any number of levels down self.assertEqual(self.node3.getprop(u'inherited_prop'), u'inherited_val') self.assertEqual(self.node4.getprop(u'inherited_prop'), u'inherited_val')
def setUp(self): super(TestProperties, self).setUp() # Make some nodes self.root = Node(name=u'root', title=u'Root Node') if not hasattr(self, 'nodetype'): self.nodetype = Node self.node1 = self.nodetype(name=u'node1', title=u'Node 1', parent=self.root) self.node2 = self.nodetype(name=u'node2', title=u'Node 2', parent=self.root) self.node3 = self.nodetype(name=u'node3', title=u'Node 3', parent=self.node2) self.node4 = self.nodetype(name=u'node4', title=u'Node 4', parent=self.node3) db.session.add_all([self.root, self.node1, self.node2, self.node3, self.node4]) db.session.commit()