def test_missing_tables(self): schema = test_schema + "_missing_tables" tdf_1 = TicDatFactory(this=[["Something"], ["Another"]]) pdf_1 = PanDatFactory(**tdf_1.schema()) tdf_2 = TicDatFactory( **dict(tdf_1.schema(), that=[["What", "Ever"], []])) pdf_2 = PanDatFactory(**tdf_2.schema()) dat = tdf_1.TicDat(this=[["a", 2], ["b", 3], ["c", 5]]) pan_dat = tdf_1.copy_to_pandas(dat, drop_pk_columns=False) tdf_1.pgsql.write_schema(self.engine, schema) tdf_1.pgsql.write_data(dat, self.engine, schema) pg_dat = tdf_2.pgsql.create_tic_dat(self.engine, schema) self.assertTrue(tdf_1._same_data(dat, pg_dat)) pg_pan_dat = pdf_2.pgsql.create_pan_dat(self.engine, schema) self.assertTrue(pdf_1._same_data(pan_dat, pg_pan_dat))
def test_pgtd_active(self): if not self.can_run: return schema = test_schema + "_active" tdf = TicDatFactory( **{ k: [pks, (["active_fld"] if k == "categories" else []) + dfs] for k, (pks, dfs) in diet_schema.schema().items() }) tdf.pgsql.write_schema(self.engine, schema, include_ancillary_info=False, forced_field_types={ ('categories', 'active_fld'): 'boolean' }) tdf = diet_schema.clone() dat = tdf.copy_tic_dat(diet_dat) dat.categories["junk"] = {} tdf.pgsql.write_data(dat, self.engine, schema, active_fld="active_fld") self.assertTrue( set(_[0] for _ in self.engine.execute( f"Select active_fld from {schema}.categories")) == {True}) self.engine.execute( f"Update {schema}.categories set active_fld = False where name = 'junk'" ) dat_2 = tdf.pgsql.create_tic_dat(self.engine, schema, active_fld="active_fld") self.assertTrue(tdf._same_data(dat_2, diet_dat, epsilon=1e-10)) pdf = PanDatFactory.create_from_full_schema( diet_schema.schema(include_ancillary_info=True)) pan_dat = tdf.copy_to_pandas(diet_dat, drop_pk_columns=False) pan_dat_2 = pdf.pgsql.create_pan_dat(self.engine, schema, active_fld="active_fld") self.assertTrue(pdf._same_data(pan_dat, pan_dat_2, epsilon=1e-10)) self.assertTrue( set(_[0] for _ in self.engine.execute( f"Select active_fld from {schema}.categories")) == {True, False}) pdf.pgsql.write_data(pan_dat, self.engine, schema, active_fld="active_fld") self.assertTrue( set(_[0] for _ in self.engine.execute( f"Select active_fld from {schema}.categories")) == {True})