def test_final_class_with_more_fields(opts, input, renderer): input.classes = [ schema.Class("Object", properties=[ schema.SingleProperty("one", "x"), schema.SingleProperty("two", "y"), schema.OptionalProperty("three", "z"), schema.RepeatedProperty("four", "u"), schema.RepeatedOptionalProperty("five", "v"), schema.PredicateProperty("six"), ]), ] assert generate(opts, renderer) == dbscheme.Scheme( src=schema_file, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ dbscheme.Column('id', '@object', binding=True), dbscheme.Column('one', 'x'), dbscheme.Column('two', 'y'), ] ), dbscheme.Table( name="object_threes", keyset=dbscheme.KeySet(["id"]), columns=[ dbscheme.Column('id', '@object'), dbscheme.Column('three', 'z'), ] ), dbscheme.Table( name="object_fours", keyset=dbscheme.KeySet(["id", "index"]), columns=[ dbscheme.Column('id', '@object'), dbscheme.Column('index', 'int'), dbscheme.Column('four', 'u'), ] ), dbscheme.Table( name="object_fives", keyset=dbscheme.KeySet(["id", "index"]), columns=[ dbscheme.Column('id', '@object'), dbscheme.Column('index', 'int'), dbscheme.Column('five', 'v'), ] ), dbscheme.Table( name="object_six", keyset=dbscheme.KeySet(["id"]), columns=[ dbscheme.Column('id', '@object'), ] ), ], )
def test_load_table_with_keyset(load): assert load(""" #keyset[x, y,z] test_foos(); """) == [ dbscheme.Table(name="test_foos", columns=[], keyset=dbscheme.KeySet(["x", "y", "z"])) ]
def test_class_with_derived_and_repeated_property(opts, input, renderer): input.classes = [ schema.Class( name="Base", derived={"Left", "Right"}, properties=[ schema.RepeatedProperty("rep", "Prop"), ]), ] assert generate(opts, renderer) == dbscheme.Scheme( src=schema_file, includes=[], declarations=[ dbscheme.Union( lhs="@base", rhs=["@left", "@right"], ), dbscheme.Table( name="base_reps", keyset=dbscheme.KeySet(["id", "index"]), columns=[ dbscheme.Column('id', '@base'), dbscheme.Column('index', 'int'), dbscheme.Column('rep', '@prop'), ] ) ], )
def test_final_class_with_predicate_field(opts, input, renderer): input.classes = [ schema.Class("Object", properties=[ schema.PredicateProperty("foo"), ]), ] assert generate(opts, renderer) == dbscheme.Scheme( src=schema_file, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ dbscheme.Column('id', '@object', binding=True), ] ), dbscheme.Table( name="object_foo", keyset=dbscheme.KeySet(["id"]), columns=[ dbscheme.Column('id', '@object'), ] ), ], )
def test_final_class_with_repeated_field(opts, input, renderer, property_cls): input.classes = [ schema.Class("Object", properties=[ property_cls("foo", "bar"), ]), ] assert generate(opts, renderer) == dbscheme.Scheme( src=schema_file, includes=[], declarations=[ dbscheme.Table( name="objects", columns=[ dbscheme.Column('id', '@object', binding=True), ] ), dbscheme.Table( name="object_foos", keyset=dbscheme.KeySet(["id", "index"]), columns=[ dbscheme.Column('id', '@object'), dbscheme.Column('index', 'int'), dbscheme.Column('foo', 'bar'), ] ), ], )
def test_keyset_has_first_id_marked(): ids = ["a", "b", "c"] ks = dbscheme.KeySet(ids) assert ks.ids[0].first assert [id.id for id in ks.ids] == ids