예제 #1
0
def test_delete_schema(engine, if_exists):
    test_schema = "test_delete_schema"

    schemas.create_schema(test_schema, engine)
    current_schemas = schemas.get_mathesar_schemas(engine)
    assert test_schema in current_schemas

    schemas.delete_schema(test_schema, engine, if_exists=if_exists)
    current_schemas = schemas.get_mathesar_schemas(engine)
    assert test_schema not in current_schemas
예제 #2
0
def test_delete_schema_restricted(engine):
    test_schema = "test_delete_schema_restricted"
    test_table = "test_delete_schema_restricted_table"

    schemas.create_schema(test_schema, engine)
    tables.create_mathesar_table(test_table, test_schema, [], engine)

    with pytest.raises(DependentObjectsStillExist):
        schemas.delete_schema(test_schema, engine)

    current_schemas = schemas.get_mathesar_schemas(engine)
    assert test_schema in current_schemas
예제 #3
0
def test_delete_schema_cascade(engine):
    test_schema = "test_delete_schema_cascade"
    test_table = "test_delete_schema_cascade_table"

    schemas.create_schema(test_schema, engine)
    table = tables.create_mathesar_table(test_table, test_schema, [], engine)

    schemas.delete_schema(test_schema, engine, cascade=True)

    current_schemas = schemas.get_mathesar_schemas(engine)
    assert test_schema not in current_schemas
    with pytest.raises(NoSuchTableError):
        tables.reflect_table(table.name, test_schema, engine)
예제 #4
0
def test_delete_schema_cascade_foreign_key(engine):
    test_schema = "test_delete_schema_cascade_foreign_key"
    related_schema = "test_delete_schema_cascade_foreign_key_related"
    test_table = "test_delete_schema_cascade_foreign_key_table"
    test_related_table = "test_delete_schema_cascade_foreign_key_related_table"

    related_table = _create_related_table(test_schema, related_schema,
                                          test_table, test_related_table,
                                          engine)

    schemas.delete_schema(test_schema, engine, cascade=True)

    related_table = tables.reflect_table(related_table.name, related_schema,
                                         engine)
    assert len(related_table.foreign_keys) == 0
예제 #5
0
 def delete_sa_schema(self):
     return schemas.delete_schema(self.name, self._sa_engine, cascade=True)
예제 #6
0
def test_delete_schema_missing_if_exists_false(engine):
    with pytest.raises(ProgrammingError):
        schemas.delete_schema("test_delete_schema_missing",
                              engine,
                              if_exists=False)
예제 #7
0
def test_delete_schema_missing_if_exists_true(engine):
    # Just ensure there is no error
    schemas.delete_schema("test_delete_schema_missing", engine, if_exists=True)