class DatasetLoadTestCase(unittest.TestCase): def setUp(self): make_test_app() self.ds = Dataset(SIMPLE_MODEL) self.engine = core.db.engine self.ds.generate() self.reader = csv.DictReader(StringIO(TEST_DATA)) def tearDown(self): tear_down_test_app() def test_load_all(self): self.ds.load_all(self.reader) resn = self.engine.execute(self.ds.table.select()).fetchall() assert len(resn) == 6, resn row0 = resn[0] assert row0["time"] == "2010", row0.items() assert row0["amount"] == 200, row0.items() assert row0["field"] == "foo", row0.items() def test_flush(self): self.ds.load_all(self.reader) resn = self.engine.execute(self.ds.table.select()).fetchall() assert len(resn) == 6, resn self.ds.flush() resn = self.engine.execute(self.ds.table.select()).fetchall() assert len(resn) == 0, resn def test_drop(self): tn = self.engine.table_names() assert "test_entry" in tn, tn assert "test_entity" in tn, tn assert "test_funny" in tn, tn self.ds.drop() tn = self.engine.table_names() assert "test_entry" not in tn, tn assert "test_entity" not in tn, tn assert "test_funny" not in tn, tn def test_aggregate_simple(self): self.ds.load_all(self.reader) res = self.ds.aggregate() assert res["summary"]["num_entries"] == 6, res assert res["summary"]["amount"] == 2690.0, res def test_aggregate_basic_cut(self): self.ds.load_all(self.reader) res = self.ds.aggregate(cuts=[("field", u"foo")]) assert res["summary"]["num_entries"] == 3, res assert res["summary"]["amount"] == 1000, res def test_aggregate_or_cut(self): self.ds.load_all(self.reader) res = self.ds.aggregate(cuts=[("field", u"foo"), ("field", u"bar")]) assert res["summary"]["num_entries"] == 4, res assert res["summary"]["amount"] == 1190, res def test_aggregate_dimensions_drilldown(self): self.ds.load_all(self.reader) res = self.ds.aggregate(drilldowns=["function"]) assert res["summary"]["num_entries"] == 6, res assert res["summary"]["amount"] == 2690, res assert len(res["drilldown"]) == 2, res["drilldown"] def test_aggregate_two_dimensions_drilldown(self): self.ds.load_all(self.reader) res = self.ds.aggregate(drilldowns=["function", "field"]) # pprint(res) assert res["summary"]["num_entries"] == 6, res assert res["summary"]["amount"] == 2690, res assert len(res["drilldown"]) == 5, res["drilldown"] def test_materialize_table(self): self.ds.load_all(self.reader) itr = self.ds.materialize() tbl = list(itr) assert len(tbl) == 6, tbl row = tbl[0] assert isinstance(row["field"], unicode), row assert isinstance(row["function"], dict), row assert isinstance(row["to"], dict), row