예제 #1
0
def test_postgres_objects():
    ex = InspectedExtension("name", "schema", "1.2")
    assert ex.drop_statement == 'drop extension if exists "name";'
    assert (
        ex.create_statement ==
        'create extension if not exists "name" with schema "schema" version \'1.2\';'
    )
    assert ex.update_statement == "alter extension \"name\" update to '1.2';"
    ex2 = deepcopy(ex)
    assert ex == ex2
    ex2.version = "2.1"
    assert ex != ex2
    ix = InspectedIndex(
        name="name",
        schema="schema",
        table_name="table",
        key_columns=["y"],
        index_columns=["y"],
        included_columns=[],
        key_options="0",
        num_att="1",
        is_unique=False,
        is_pk=True,
        is_exclusion=False,
        is_immediate=True,
        is_clustered=False,
        key_collations="0",
        key_expressions=None,
        partial_predicate=None,
        algorithm="BRIN",
        definition="create index name on t(x)",
    )
    assert ix.drop_statement == 'drop index if exists "schema"."name";'
    assert ix.create_statement == "create index name on t(x);"
    ix2 = deepcopy(ix)
    assert ix == ix2
    ix2.table_name = "table2"
    assert ix != ix2
    i = InspectedSequence("name", "schema")
    assert i.create_statement == 'create sequence "schema"."name";'
    assert i.drop_statement == 'drop sequence if exists "schema"."name";'
    i2 = deepcopy(i)
    assert i == i2
    i2.schema = "schema2"
    assert i != i2
    i = InspectedEnum("name", "schema", ["a", "b", "c"])
    assert (i.create_statement ==
            "create type \"schema\".\"name\" as enum ('a', 'b', 'c');")
    assert i.drop_statement == 'drop type "schema"."name";'
    i2 = InspectedEnum("name", "schema", ["a", "a1", "c", "d"])
    assert i.can_be_changed_to(i)
    assert i != i2
    assert not i.can_be_changed_to(i2)
    i2.elements = ["a", "b"]
    assert i2.can_be_changed_to(i)
    i2.elements = ["b", "a"]
    assert not i2.can_be_changed_to(i)
    i2.elements = ["a", "b", "c"]
    assert i2.can_be_changed_to(i)
    assert i.can_be_changed_to(i2)
    i2.elements = ["a", "a1", "c", "d", "b"]
    assert not i.can_be_changed_to(i2)
    with raises(ValueError):
        i.change_statements(i2)
    i2.elements = ["a0", "a", "a1", "b", "c", "d"]
    assert i.can_be_changed_to(i2)
    assert i.change_statements(i2) == [
        "alter type \"schema\".\"name\" add value 'a0' before 'a';",
        "alter type \"schema\".\"name\" add value 'a1' after 'a';",
        "alter type \"schema\".\"name\" add value 'd' after 'c';",
    ]
    c = InspectedConstraint(
        constraint_type="PRIMARY KEY",
        definition="PRIMARY KEY (code)",
        index="firstkey",
        name="firstkey",
        schema="public",
        table_name="films",
    )
    assert (
        c.create_statement ==
        'alter table "public"."films" add constraint "firstkey" PRIMARY KEY using index "firstkey";'
    )
    c2 = deepcopy(c)
    assert c == c2
    c.index = None
    assert c != c2
    assert (
        c.create_statement ==
        'alter table "public"."films" add constraint "firstkey" PRIMARY KEY (code);'
    )
    assert (c.drop_statement ==
            'alter table "public"."films" drop constraint "firstkey";')
예제 #2
0
def test_postgres_objects():
    ex = InspectedExtension("name", "schema", "1.2")
    assert ex.drop_statement == 'drop extension if exists "name";'
    assert (
        ex.create_statement ==
        'create extension if not exists "name" with schema "schema" version \'1.2\';'
    )
    assert (ex.update_statement ==
            'alter extension "schema"."name" update to version \'1.2\';')
    ex2 = deepcopy(ex)
    assert ex == ex2
    ex2.version = "2.1"
    assert ex != ex2
    ix = InspectedIndex(
        "name",
        "schema",
        "table",
        "y",
        "0",
        "1",
        False,
        True,
        False,
        True,
        False,
        "0",
        None,
        None,
        "create index name on t(x)",
    )
    assert ix.drop_statement == 'drop index if exists "schema"."name";'
    assert ix.create_statement == "create index name on t(x);"
    ix2 = deepcopy(ix)
    assert ix == ix2
    ix2.table_name = "table2"
    assert ix != ix2
    i = InspectedSequence("name", "schema")
    assert i.create_statement == 'create sequence "schema"."name";'
    assert i.drop_statement == 'drop sequence if exists "schema"."name";'
    i2 = deepcopy(i)
    assert i == i2
    i2.schema = "schema2"
    assert i != i2
    i = InspectedEnum("name", "schema", ["a", "b", "c"])
    assert (i.create_statement ==
            "create type \"schema\".\"name\" as enum ('a', 'b', 'c');")
    assert i.drop_statement == 'drop type "schema"."name";'
    i2 = InspectedEnum("name", "schema", ["a", "a1", "c", "d"])
    assert i.can_be_changed_to(i)
    assert i != i2
    assert not i.can_be_changed_to(i2)
    i2.elements = ["a", "b"]
    assert i2.can_be_changed_to(i)
    i2.elements = ["b", "a"]
    assert not i2.can_be_changed_to(i)
    i2.elements = ["a", "b", "c"]
    assert i2.can_be_changed_to(i)
    assert i.can_be_changed_to(i2)
    i2.elements = ["a", "a1", "c", "d", "b"]
    assert not i.can_be_changed_to(i2)
    with raises(ValueError):
        i.change_statements(i2)
    i2.elements = ["a0", "a", "a1", "b", "c", "d"]
    assert i.can_be_changed_to(i2)
    assert i.change_statements(i2) == [
        "alter type \"schema\".\"name\" add value 'a0' before 'a'",
        "alter type \"schema\".\"name\" add value 'a1' after 'a'",
        "alter type \"schema\".\"name\" add value 'd' after 'c'",
    ]
    c = InspectedConstraint(
        constraint_type="PRIMARY KEY",
        definition="PRIMARY KEY (code)",
        index="firstkey",
        name="firstkey",
        schema="public",
        table_name="films",
    )
    assert (
        c.create_statement ==
        'alter table "public"."films" add constraint "firstkey" PRIMARY KEY using index "firstkey";'
    )
    c2 = deepcopy(c)
    assert c == c2
    c.index = None
    assert c != c2
    assert (
        c.create_statement ==
        'alter table "public"."films" add constraint "firstkey" PRIMARY KEY (code);'
    )
    assert (c.drop_statement ==
            'alter table "public"."films" drop constraint "firstkey";')
예제 #3
0
def test_postgres_objects():
    ex = InspectedExtension("name", "schema", "1.2")
    assert ex.drop_statement == 'drop extension if exists "name";'
    assert (
        ex.create_statement
        == 'create extension if not exists "name" with schema "schema" version \'1.2\';'
    )
    assert (
        ex.update_statement
        == 'alter extension "schema"."name" update to version \'1.2\';'
    )
    ex2 = deepcopy(ex)
    assert ex == ex2
    ex2.version = "2.1"
    assert ex != ex2
    ix = InspectedIndex(
        "name",
        "schema",
        "table",
        "y",
        "0",
        "1",
        False,
        True,
        False,
        True,
        False,
        "0",
        None,
        None,
        "create index name on t(x)",
    )
    assert ix.drop_statement == 'drop index if exists "schema"."name";'
    assert ix.create_statement == "create index name on t(x);"
    ix2 = deepcopy(ix)
    assert ix == ix2
    ix2.table_name = "table2"
    assert ix != ix2
    i = InspectedSequence("name", "schema")
    assert i.create_statement == 'create sequence "schema"."name";'
    assert i.drop_statement == 'drop sequence if exists "schema"."name";'
    i2 = deepcopy(i)
    assert i == i2
    i2.schema = "schema2"
    assert i != i2
    i = InspectedEnum("name", "schema", ["a", "b", "c"])
    assert (
        i.create_statement == "create type \"schema\".\"name\" as enum ('a', 'b', 'c');"
    )
    assert i.drop_statement == 'drop type "schema"."name";'
    i2 = InspectedEnum("name", "schema", ["a", "a1", "c", "d"])
    assert i.can_be_changed_to(i)
    assert i != i2
    assert not i.can_be_changed_to(i2)
    i2.elements = ["a", "b"]
    assert i2.can_be_changed_to(i)
    i2.elements = ["b", "a"]
    assert not i2.can_be_changed_to(i)
    i2.elements = ["a", "b", "c"]
    assert i2.can_be_changed_to(i)
    assert i.can_be_changed_to(i2)
    i2.elements = ["a", "a1", "c", "d", "b"]
    assert not i.can_be_changed_to(i2)
    with raises(ValueError):
        i.change_statements(i2)
    i2.elements = ["a0", "a", "a1", "b", "c", "d"]
    assert i.can_be_changed_to(i2)
    assert i.change_statements(i2) == [
        "alter type \"schema\".\"name\" add value 'a0' before 'a'",
        "alter type \"schema\".\"name\" add value 'a1' after 'a'",
        "alter type \"schema\".\"name\" add value 'd' after 'c'",
    ]
    c = InspectedConstraint(
        constraint_type="PRIMARY KEY",
        definition="PRIMARY KEY (code)",
        index="firstkey",
        name="firstkey",
        schema="public",
        table_name="films",
    )
    assert (
        c.create_statement
        == 'alter table "public"."films" add constraint "firstkey" PRIMARY KEY using index "firstkey";'
    )
    c2 = deepcopy(c)
    assert c == c2
    c.index = None
    assert c != c2
    assert (
        c.create_statement
        == 'alter table "public"."films" add constraint "firstkey" PRIMARY KEY (code);'
    )
    assert (
        c.drop_statement == 'alter table "public"."films" drop constraint "firstkey";'
    )