def test_no_selects(self): """Ensure that render select can handle being passed no selects.""" from bigquery.query_builder import _render_select result = _render_select({}) self.assertEqual(result, 'SELECT *')
def test_casting(self): """Ensure that render select can handle custom casting.""" from bigquery.query_builder import _render_select result = _render_select({ 'start_time': {'alias': 'TimeStamp', 'format': 'SEC_TO_MICRO-INTEGER-FORMAT_UTC_USEC'} }) self.assertEqual( result, 'SELECT FORMAT_UTC_USEC(INTEGER(start_time*1000000)) as TimeStamp')
def test_multiple_formatting_with_if(self): """ Ensure that if we wrap an if statement in another formatter, that syntax is correctly generated. """ result_select = _render_select({ 'start_time': { 'format': 'IF:start_time != null,1,2-MAX' }}) expected_select = 'SELECT MAX(IF(start_time != null, 1, 2))' self.assertEqual(expected_select, result_select)
def test_formatting_if_statement_works_correctly(self): """ Ensure that if we pass an IF formatter, the library generates correct BigQuery. """ result_select = _render_select({ 'start_time': { 'format': 'IF:start_time != null,1,2' }}) expected_select = 'SELECT IF(start_time != null, 1, 2)' self.assertEqual(expected_select, result_select)
def test_aggregation_within_record_no_alias(self): """ Ensure that aggregation within a query works when there is no alias for that field. """ result_select = _render_select({ 'start_time': { 'aggregation_level': 'RECORD', 'format': 'MAX' }}) expected_select = 'SELECT MAX(start_time) WITHIN RECORD' self.assertEqual(expected_select, result_select)
def test_casting(self): """Ensure that render select can handle custom casting.""" from bigquery.query_builder import _render_select result = _render_select({ 'start_time': { 'alias': 'TimeStamp', 'format': 'SEC_TO_MICRO-INTEGER-FORMAT_UTC_USEC' } }) self.assertEqual( result, 'SELECT FORMAT_UTC_USEC(INTEGER(start_time*1000000)) as TimeStamp')
def test_multiple_selects(self): """Ensure that render select can handle multiple selects.""" from bigquery.query_builder import _render_select result = _render_select({ 'start_time': {'alias': 'TimeStamp'}, 'max_log_level': {'alias': 'MaxLogLevel'}, 'user': {'alias': 'User'}, 'status': {'alias': 'Status'}, 'resource': {'alias': 'URL'}, 'version_id': {'alias': 'Version'}, 'latency': {'alias': 'Latency'}, 'ip': {'alias': 'IP'}, 'app_logs': {'alias': 'AppLogs'}}) expected = 'SELECT status as Status, latency as Latency, ' \ 'max_log_level as MaxLogLevel, resource as URL, user as ' \ 'User, ip as IP, start_time as TimeStamp, version_id as ' \ 'Version, app_logs as AppLogs' self.assertEqual(expected, result)
def test_multiple_selects(self): """Ensure that render select can handle multiple selects.""" result = _render_select({ 'start_time': {'alias': 'TimeStamp'}, 'max_log_level': {'alias': 'MaxLogLevel'}, 'user': {'alias': 'User'}, 'status': {'alias': 'Status'}, 'resource': {'alias': 'URL'}, 'version_id': {'alias': 'Version'}, 'latency': {'alias': 'Latency'}, 'ip': {'alias': 'IP'}, 'app_logs': {'alias': 'AppLogs'}}) expected = ('SELECT status as Status, latency as Latency, ' 'max_log_level as MaxLogLevel, resource as URL, user as ' 'User, ip as IP, start_time as TimeStamp, version_id as ' 'Version, app_logs as AppLogs') six.assertCountEqual( self, sorted(expected[len('SELECT '):].split(', ')), sorted(result[len('SELECT '):].split(', ')))
def test_multiple_selects(self): """Ensure that render select can handle multiple selects.""" from bigquery.query_builder import _render_select result = _render_select({ 'start_time': { 'alias': 'TimeStamp' }, 'max_log_level': { 'alias': 'MaxLogLevel' }, 'user': { 'alias': 'User' }, 'status': { 'alias': 'Status' }, 'resource': { 'alias': 'URL' }, 'version_id': { 'alias': 'Version' }, 'latency': { 'alias': 'Latency' }, 'ip': { 'alias': 'IP' }, 'app_logs': { 'alias': 'AppLogs' } }) expected = 'SELECT status as Status, latency as Latency, ' \ 'max_log_level as MaxLogLevel, resource as URL, user as ' \ 'User, ip as IP, start_time as TimeStamp, version_id as ' \ 'Version, app_logs as AppLogs' self.assertEqual(expected, result)
def test_no_selects(self): """Ensure that render select can handle being passed no selects.""" result = _render_select({}) self.assertEqual(result, 'SELECT *')