def testExecuteAllOptions(self): """Tests execution of a method with filters, groups and order specified.""" data_client = test_util.GetDataClient(mocked=True) data_client.mock_reply = self.EXPECTED_RESULT.copy() method = explorer_method.ExplorerQueryBase( data_client=data_client, dataset_name=self.EXPECTED_DATASET) method.tables = [self.EXPECTED_TABLE_NAME] method.fields = self.EXPECTED_FIELDS method.orders = self.EXPECTED_ORDERS method.wheres = self.EXPECTED_WHERES method.groups = self.EXPECTED_GROUPS actual = method.Execute() expected = self.EXPECTED_PROCESSED_RESULT self.assertEqual(actual, expected) self.assertEqual(actual['schema'], expected['schema']) self.assertEqual(actual['rows'], expected['rows']) expected_sql = (self.EXPECTED_SQL_BASE + self.EXPECTED_SQL_WHERE + self.EXPECTED_SQL_GROUP_BY + self.EXPECTED_SQL_ORDER_BY + self.EXPECTED_SQL_LIMIT) actual_sql = method.GetSql() self.assertEqual(actual_sql, expected_sql)
def setUp(self): client.DATASET_ID = 'samples_mart_testdata' test_util.SetConfigPaths() self.data_client = test_util.GetDataClient(mocked=True) self.data_client.mock_reply = {'totalRows': 0, 'jobReference': 0, 'schema': {'fields': []}}
def testExecuteNoFields(self): """Tests execution of a method without specifying fields.""" data_client = test_util.GetDataClient(mocked=True) method = explorer_method.ExplorerQueryBase( data_client=data_client, dataset_name=self.EXPECTED_DATASET) method.tables = [self.EXPECTED_TABLE_NAME] self.assertRaisesRegexp(explorer_method.ArgumentError, 'The \'fields\' list is required.', method.Execute)
def testExecuteRequiredOnly(self): """Tests execution of a method specifying only required parameters.""" data_client = test_util.GetDataClient(mocked=True) data_client.mock_reply = self.EXPECTED_RESULT.copy() method = explorer_method.ExplorerQueryBase( data_client=data_client, dataset_name=self.EXPECTED_DATASET) method.tables = [self.EXPECTED_TABLE_NAME] method.fields = self.EXPECTED_FIELDS expected_sql = (self.EXPECTED_SQL_BASE + self.EXPECTED_SQL_LIMIT) actual_sql = method.GetSql() self.assertEqual(actual_sql, expected_sql)
def testExecuteWithResult(self): """Verifies that the data_client's result is transformed and returned.""" self.maxDiff = 1024 data_client = test_util.GetDataClient(mocked=True) data_client.mock_reply = self.EXPECTED_RESULT.copy() method = explorer_method.ExplorerQueryBase( data_client=data_client, dataset_name=self.EXPECTED_DATASET) method.tables = [self.EXPECTED_TABLE_NAME] method.fields = self.EXPECTED_FIELDS actual = method.Execute() expected = self.EXPECTED_PROCESSED_RESULT self.assertEqual(actual, expected)