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())
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)
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')
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)
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())
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')
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)
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)
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())