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