Esempio n. 1
0
def test_table_target_many_inits():
    pop_col = ColumnTarget(
        "tests", "population",
        OBSColumn(type='Numeric',
                  name="Total Population",
                  description='The total number of all',
                  aggregate='sum',
                  weight=10), FakeTask())
    foo_col = ColumnTarget(
        "tests", "foo",
        OBSColumn(type='Numeric',
                  name="Foo Bar",
                  description='moo boo foo',
                  aggregate='median',
                  weight=8), FakeTask())
    pop_col.update_or_create()
    foo_col.update_or_create()

    assert_equals(current_session().query(OBSColumn).count(), 2)

    columns = {'population': pop_col, 'foobar': foo_col}
    table_target = TableTarget('test', 'foobar', OBSTable(), columns,
                               FakeTask())

    assert_equals(False, table_target.exists())
    assert_equals(current_session().query(OBSTable).count(), 0)
    assert_equals(current_session().query(OBSColumn).count(), 2)
    table_target.update_or_create_table()
    table_target.update_or_create_metadata()
    assert_equals(current_session().query(OBSColumn).count(), 2)
    assert_equals(current_session().query(OBSTable).count(), 1)
    obs_table = table_target.get(current_session())
    tablename = 'observatory.' + obs_table.tablename
    assert_in(tablename, metadata.tables)
    sqlalchemy_table = metadata.tables[tablename]
    assert_equals(len(sqlalchemy_table.columns), 2)

    assert_equals(table_target.exists(), False)

    # should 'exist' once rows inserted
    current_session().execute(
        'INSERT INTO {tablename} VALUES (0, 0)'.format(tablename=tablename))
    current_session().commit()

    assert_equals(table_target.exists(), True)

    # new session, old object
    assert_equals(True, table_target.exists())
    assert_equals(current_session().query(OBSTable).count(), 1)

    current_session().rollback()
    table_target.update_or_create_table()
    table_target.update_or_create_metadata()
    assert_equals(current_session().query(OBSTable).count(), 1)
    assert_in(tablename, metadata.tables)
    sqlalchemy_table = metadata.tables[tablename]
    assert_equals(len(sqlalchemy_table.columns), 2)

    # forcing update_or_create_table again will end up wiping the table
    assert_equals(False, table_target.exists())
Esempio n. 2
0
def test_column_target_many_inits():
    col = ColumnTarget(
        "tests", "foobar",
        OBSColumn(
            type='Numeric',
            name="Total Population",
            description=
            'The total number of all people living in a given geographic area.  This is a very useful catch-all denominator when calculating rates.',
            aggregate='sum',
            weight=10), FakeTask())

    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 0)
        col.update_or_create()
        assert_equals(session.query(OBSColumn).count(), 1)

    col = ColumnTarget(
        "tests", "foobar",
        OBSColumn(
            type='Numeric',
            name="Total Population",
            description=
            'The total number of all people living in a given geographic area.  This is a very useful catch-all denominator when calculating rates.',
            aggregate='sum',
            weight=10), FakeTask())

    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 1)
        col.update_or_create()
        assert_equals(session.query(OBSColumn).count(), 1)
Esempio n. 3
0
def test_column_target_create_update():
    col = ColumnTarget(
        'tests', 'foobar',
        OBSColumn(
            type='Numeric',
            name="Total Population",
            description=
            'The total number of all people living in a given geographic area.  This is a very useful catch-all denominator when calculating rates.',
            aggregate='sum',
            weight=10), FakeTask())

    # Does not exist in DB til we update_or_create
    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 0)
        col.update_or_create()
        assert_equals(session.query(OBSColumn).count(), 1)

    # Can update_or_create all we want
    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 1)
        col.update_or_create()
        assert_equals(session.query(OBSColumn).count(), 1)

    # Can overwrite the existing column
    col = ColumnTarget(
        'tests', 'foobar',
        OBSColumn(type='Numeric',
                  name="foobar",
                  description='foo-bar-baz',
                  aggregate='sum',
                  weight=10), FakeTask())

    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 1)
        col.update_or_create()
        assert_equals(col._column.name, 'foobar')
        assert_equals(col._column.description, 'foo-bar-baz')
        assert_equals(session.query(OBSColumn).count(), 1)

    # Should auto-qualify column id
    with session_scope() as session:
        rawcol = session.query(OBSColumn).get('tests.foobar')
        assert_equals(rawcol.name, 'foobar')
        assert_equals(rawcol.description, 'foo-bar-baz')
Esempio n. 4
0
def test_column_target_relations_create_update():
    col = ColumnTarget("tests", "foobar", OBSColumn(
        type='Numeric',
        name="Total Population",
        description='The total number of all people living in a given geographic area.  This is a very useful catch-all denominator when calculating rates.',
        aggregate='sum',
        weight=10))

    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 0)
        col.update_or_create(session)
        rawcol = col._column
        tag = OBSTag(id='tag', name='some tag', description='some tag', type='some type')
        session.add(tag)
        rawcol.tags.append(TagTarget(tag))
        session.add(rawcol)
        table = OBSTable(id='table', tablename='foobar')
        session.add(table)
        coltable = OBSColumnTable(column=rawcol, table=table, colname='col')
        session.add(coltable)

    with session_scope() as session:
        assert_equals(session.query(OBSTag).count(), 1)
        assert_equals(session.query(OBSColumnTag).count(), 1)
        assert_equals(session.query(OBSColumn).count(), 1)
        assert_equals(session.query(OBSColumnTable).count(), 1)
        assert_equals(session.query(OBSTable).count(), 1)

    col._column.name = 'foo bar baz'

    with session_scope() as session:
        col.update_or_create(session)

    with session_scope() as session:
        rawcol = session.query(OBSColumn).get('"tests".foobar')
        assert_equals(rawcol.name, 'foo bar baz')
        assert_equals(session.query(OBSTag).count(), 1)
        assert_equals(session.query(OBSColumnTag).count(), 1)
        assert_equals(session.query(OBSColumn).count(), 1)
        assert_equals(session.query(OBSColumnTable).count(), 1)
        assert_equals(session.query(OBSTable).count(), 1)
Esempio n. 5
0
def test_table_target_many_inits():
    pop_col = ColumnTarget("tests", "population", OBSColumn(
        type='Numeric',
        name="Total Population",
        description='The total number of all',
        aggregate='sum',
        weight=10), FakeTask())
    foo_col = ColumnTarget("tests", "foo", OBSColumn(
        type='Numeric',
        name="Foo Bar",
        description='moo boo foo',
        aggregate='median',
        weight=8), FakeTask())
    pop_col.update_or_create()
    foo_col.update_or_create()

    assert_equals(current_session().query(OBSColumn).count(), 2)

    columns = {
        'population': pop_col,
        'foobar': foo_col
    }
    table_target = TableTarget('test', 'foobar', OBSTable(), columns, FakeTask())

    assert_equals(False, table_target.exists())
    assert_equals(current_session().query(OBSTable).count(), 0)
    assert_equals(current_session().query(OBSColumn).count(), 2)
    table_target.update_or_create_table()
    table_target.update_or_create_metadata()
    assert_equals(current_session().query(OBSColumn).count(), 2)
    assert_equals(current_session().query(OBSTable).count(), 1)
    obs_table = table_target.get(current_session())
    tablename = 'observatory.' + obs_table.tablename
    assert_in(tablename, metadata.tables)
    sqlalchemy_table = metadata.tables[tablename]
    assert_equals(len(sqlalchemy_table.columns), 2)

    assert_equals(table_target.exists(), False)

    # should 'exist' once rows inserted
    current_session().execute('INSERT INTO {tablename} VALUES (0, 0)'.format(
        tablename=tablename))
    current_session().commit()

    assert_equals(table_target.exists(), True)

    # new session, old object
    assert_equals(True, table_target.exists())
    assert_equals(current_session().query(OBSTable).count(), 1)

    current_session().rollback()
    table_target.update_or_create_table()
    table_target.update_or_create_metadata()
    assert_equals(current_session().query(OBSTable).count(), 1)
    assert_in(tablename, metadata.tables)
    sqlalchemy_table = metadata.tables[tablename]
    assert_equals(len(sqlalchemy_table.columns), 2)

    # forcing update_or_create_table again will end up wiping the table
    assert_equals(False, table_target.exists())
Esempio n. 6
0
def test_column_target_create_update():
    col = ColumnTarget('tests', 'foobar', OBSColumn(
        type='Numeric',
        name="Total Population",
        description='The total number of all people living in a given geographic area.  This is a very useful catch-all denominator when calculating rates.',
        aggregate='sum',
        weight=10))

    # Does not exist in DB til we update_or_create
    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 0)
        col.update_or_create(session)
        assert_equals(session.query(OBSColumn).count(), 1)

    # Can update_or_create all we want
    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 1)
        col.update_or_create(session)
        assert_equals(session.query(OBSColumn).count(), 1)

    # Can overwrite the existing column
    col = ColumnTarget('tests', 'foobar', OBSColumn(
        type='Numeric',
        name="foobar",
        description='foo-bar-baz',
        aggregate='sum',
        weight=10))

    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 1)
        col.update_or_create(session)
        assert_equals(col._column.name, 'foobar')
        assert_equals(col._column.description, 'foo-bar-baz')
        assert_equals(session.query(OBSColumn).count(), 1)

    # Should auto-qualify column id
    with session_scope() as session:
        rawcol = session.query(OBSColumn).get('"tests".foobar')
        assert_equals(rawcol.name, 'foobar')
        assert_equals(rawcol.description, 'foo-bar-baz')
Esempio n. 7
0
def test_column_target_relations_create_update():
    col = ColumnTarget(
        "tests", "foobar",
        OBSColumn(
            type='Numeric',
            name="Total Population",
            description=
            'The total number of all people living in a given geographic area.  This is a very useful catch-all denominator when calculating rates.',
            aggregate='sum',
            weight=10), FakeTask())

    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 0)
        col.update_or_create()
        rawcol = col._column
        tag = OBSTag(id='tag',
                     name='some tag',
                     description='some tag',
                     type='some type')
        session.add(tag)
        rawcol.tags.append(TagTarget(tag, FakeTask()))
        session.add(rawcol)
        table = OBSTable(id='table', tablename='foobar')
        session.add(table)
        coltable = OBSColumnTable(column=rawcol, table=table, colname='col')
        session.add(coltable)

    with session_scope() as session:
        assert_equals(session.query(OBSTag).count(), 1)
        assert_equals(session.query(OBSColumnTag).count(), 1)
        assert_equals(session.query(OBSColumn).count(), 1)
        assert_equals(session.query(OBSColumnTable).count(), 1)
        assert_equals(session.query(OBSTable).count(), 1)

    col._column.name = 'foo bar baz'

    with session_scope() as session:
        col.update_or_create()

    with session_scope() as session:
        rawcol = session.query(OBSColumn).get('tests.foobar')
        assert_equals(rawcol.name, 'foo bar baz')
        assert_equals(session.query(OBSTag).count(), 1)
        assert_equals(session.query(OBSColumnTag).count(), 1)
        assert_equals(session.query(OBSColumn).count(), 1)
        assert_equals(session.query(OBSColumnTable).count(), 1)
        assert_equals(session.query(OBSTable).count(), 1)
Esempio n. 8
0
def test_column_target_many_inits():
    col = ColumnTarget("tests", "foobar", OBSColumn(
        type='Numeric',
        name="Total Population",
        description='The total number of all people living in a given geographic area.  This is a very useful catch-all denominator when calculating rates.',
        aggregate='sum',
        weight=10))

    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 0)
        col.update_or_create(session)
        assert_equals(session.query(OBSColumn).count(), 1)

    col = ColumnTarget("tests", "foobar", OBSColumn(
        type='Numeric',
        name="Total Population",
        description='The total number of all people living in a given geographic area.  This is a very useful catch-all denominator when calculating rates.',
        aggregate='sum',
        weight=10))

    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 1)
        col.update_or_create(session)
        assert_equals(session.query(OBSColumn).count(), 1)
Esempio n. 9
0
def test_table_target_many_inits():
    pop_col = ColumnTarget("tests", "population", OBSColumn(
        type='Numeric',
        name="Total Population",
        description='The total number of all',
        aggregate='sum',
        weight=10))
    foo_col = ColumnTarget("tests", "foo", OBSColumn(
        type='Numeric',
        name="Foo Bar",
        description='moo boo foo',
        aggregate='median',
        weight=8))
    with session_scope() as session:
        pop_col.update_or_create(session)
        foo_col.update_or_create(session)

    with session_scope() as session:
        assert_equals(session.query(OBSColumn).count(), 2)

    columns = {
        'population': pop_col,
        'foobar': foo_col
    }
    table_target = TableTarget('test', 'foobar', OBSTable(), columns)
    table_id = 'test.foobar'

    with session_scope() as session:
        assert_equals(False, table_target.exists())
        assert_equals(session.query(OBSTable).count(), 0)
        assert_equals(session.query(OBSColumn).count(), 2)
        table_target.update_or_create(session)
        assert_equals(session.query(OBSColumn).count(), 2)
        assert_equals(session.query(OBSTable).count(), 1)
        assert_in(table_id, metadata.tables)
        sqlalchemy_table = metadata.tables[table_id]
        assert_equals(len(sqlalchemy_table.columns), 2)

    table_target.exists()
    assert_equals(True, table_target.exists())
    assert_equals(table_target.table.schema, 'test')
    assert_equals(table_target.table.name, 'foobar')

    # new session, old object
    with session_scope() as session:
        assert_equals(True, table_target.exists())
        assert_equals(session.query(OBSTable).count(), 1)
        table_target.update_or_create(session)
        assert_equals(session.query(OBSTable).count(), 1)
        assert_in(table_id, metadata.tables)
        sqlalchemy_table = metadata.tables[table_id]
        assert_equals(len(sqlalchemy_table.columns), 2)
        assert_equals(True, table_target.exists())

    # new session, new object
    table_target = TableTarget('test', 'foobar', OBSTable(), columns)
    with session_scope() as session:
        assert_equals(True, table_target.exists())
        assert_equals(session.query(OBSTable).count(), 1)
        table_target.update_or_create(session)
        assert_equals(session.query(OBSTable).count(), 1)
        assert_in(table_id, metadata.tables)
        sqlalchemy_table = metadata.tables[table_id]
        assert_equals(len(sqlalchemy_table.columns), 2)
        assert_equals(True, table_target.exists())