def test_summary_with_multigroup(self): dataset_id = self._post_file() group_columns = "rating,food_type" results = self.controller.summary( dataset_id, group=group_columns, select=self.controller.SELECT_ALL_FOR_SUMMARY ) results = self._test_summary_results(results) self.assertFalse(Datasets.ERROR in results.keys()) self.assertTrue(group_columns in results.keys()) # for split dataset = Dataset() self.assertEqual( len(dataset.split_groups(results[group_columns].keys()[0])), len(dataset.split_groups(group_columns)) )
def test_summary_with_multigroup(self): dataset_id = self._post_file() group_columns = 'rating,food_type' results = self.controller.summary( dataset_id, group=group_columns, select=self.controller.SELECT_ALL_FOR_SUMMARY) results = self._test_summary_results(results) self.assertFalse(Datasets.ERROR in results.keys()) self.assertTrue(group_columns in results.keys()) # for split dataset = Dataset() self.assertEqual( len(dataset.split_groups(results[group_columns].keys()[0])), len(dataset.split_groups(group_columns)))
class TestCalculator(TestBase): def setUp(self): TestBase.setUp(self) self.dataset = Dataset() self.dataset.save( self.test_dataset_ids['good_eats_with_calculations.csv']) dframe = recognize_dates( self.get_data('good_eats_with_calculations.csv')) self.dataset.save_observations(dframe) self.group = None self.parser = Parser(self.dataset) self.places = 5 def _equal_msg(self, calculated, stored, formula): return '(calculated %s) %s != (stored %s) %s ' % (type(calculated), calculated, type(stored), stored) +\ '(within %s places), formula: %s' % (self.places, formula) def _test_calculator(self): self.dframe = self.dataset.dframe() row = self.dframe.irow(0) columns = self.dframe.columns.tolist() self.start_num_cols = len(columns) self.added_num_cols = 0 column_labels_to_slugs = { column_attrs[Dataset.LABEL]: (column_name) for (column_name, column_attrs) in self.dataset.schema.items() } self.label_list, self.slugified_key_list = [ list(ary) for ary in zip(*column_labels_to_slugs.items()) ] for idx, formula in enumerate(self.calculations): name = 'test-%s' % idx self.parser.validate_formula(formula, row) calculator = Calculator(self.dataset) groups = self.dataset.split_groups(self.group) calculation = Calculation() calculation.save(self.dataset, formula, name, self.group) calculator.calculate_columns([calculation]) self.column_labels_to_slugs = self.dataset.schema.labels_to_slugs self._test_calculation_results(name, formula)
def test_aggregations_datasets_with_multigroup(self): self.dataset_id = self._post_file() group = 'food_type,rating' self._post_calculations(self.default_formulae + ['sum(amount)'], group) results = self._test_aggregations([group]) # only so we can split dataset = Dataset() row_keys = (dataset.split_groups(group) + ['sum_amount_']).sort() for row in results: sorted_row_keys = row.keys().sort() self.assertEqual(sorted_row_keys, row_keys) self.assertTrue(isinstance(row.values()[0], basestring)) self.assertTrue(isinstance(row.values()[1], basestring)) self.assertTrue(isinstance(row.values()[2], float))
def test_aggregations_datasets_with_multigroup(self): self.dataset_id = self._post_file() group = 'food_type,rating' self._post_calculations(self.default_formulae + ['sum(amount)'], group) results = self._test_aggregations([group]) # only so we can split dataset = Dataset() row_keys = (dataset.split_groups(group) + ['sum_amount_']).sort() for row in results: sorted_row_keys = row.keys().sort() self.assertEqual(sorted_row_keys, row_keys) self.assertTrue(isinstance(row.values()[0], basestring)) self.assertTrue(isinstance(row.values()[1], basestring)) self.assertTrue(isinstance(row.values()[2], float))