def test_custom_pathlen(self): tbl = sqlalchemy.Table('tbl4', metadata, sqlalchemy.Column('id', sqlalchemy.Integer, primary_key=True), sqlalchemy.Column('pid', sqlalchemy.ForeignKey('tbl4.id')) ) mpm = sqlamp.MPManager(tbl, steplen=1, pathlen=512) self.assertEqual(tbl.c.mp_path.type.impl.length, 512)
def test_implicit_pk_fk(self): tbl = sqlalchemy.Table('tbl2', metadata, sqlalchemy.Column('id', sqlalchemy.Integer, primary_key=True), sqlalchemy.Column('pid', sqlalchemy.ForeignKey('tbl2.id')) ) mpm = sqlamp.MPManager(tbl) self.assertEqual(tbl.c.id, mpm._mp_opts.pk_field) self.assertEqual(tbl.c.pid, mpm._mp_opts.parent_id_field)
def test_custom_column_and_same_column_options(self): tbl = sqlalchemy.Table('tbl5', metadata, sqlalchemy.Column('id', sqlalchemy.Integer, primary_key=True), sqlalchemy.Column('pid', sqlalchemy.ForeignKey('tbl5.id')), sqlalchemy.Column('path', sqlamp.PathField(length=40), nullable=False) ) mpm = sqlamp.MPManager(tbl, pathlen=40) self.assertEqual(tbl.c.mp_path.type.impl.length, 40)
def test_more_than_one_backref(self): tbl = sqlalchemy.Table('tbl3', metadata, sqlalchemy.Column('id', sqlalchemy.Integer, primary_key=True), sqlalchemy.Column('pid1', sqlalchemy.ForeignKey('tbl3.id')), sqlalchemy.Column('pid2', sqlalchemy.ForeignKey('tbl3.id')), sqlalchemy.Column('pid3', sqlalchemy.ForeignKey('tbl3.id')) ) mpm = sqlamp.MPManager(tbl, parent_id_field='pid2') self.assertEqual(mpm._mp_opts.parent_id_field, tbl.c.pid2)
class Cls(object): mp = sqlamp.MPManager(tbl, steplen=2) def __init__(self, **kwargs): for key, val in kwargs.items(): setattr(self, key, val) def __repr__(self): return '<Cls %s(%s): parent=%s, path=%s, depth=%s>' % \ (self.name, self.id, self.parent_id, self.mp_path, self.mp_depth)
class Node(Cls): mp = sqlamp.MPManager(self.tbl, steplen=1)
class AbstractNode(object): mp = sqlamp.MPManager(tbl_abstract)