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)
示例#2
0
  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)