def test_expected_headers_all(self, mocked_report_type_fields): mocked_report_type_fields.return_value = samples.SAMPLE_REPORT_TYPE_FIELDS fields = samples.SAMPLE_REPORT_TYPE_FIELDS reports = Reports(credentials={}) self.assertEqual(set(fields), set(reports.expected_headers('CLICK_PERFORMANCE_REPORT')))
def test_expected_headers_subset(self, mocked_report_type_fields): mocked_report_type_fields.return_value = samples.SAMPLE_REPORT_TYPE_FIELDS fields = samples.SAMPLE_REPORT_TYPE_FIELDS[:5] names = [field.name for field in fields] reports = Reports(credentials={}) self.assertEqual(set(fields), set(reports.expected_headers('CLICK_PERFORMANCE_REPORT', names)))
def test_report_type_fields(self, mocked__cached, mocked__report_type_fields, mocked__validate_type): mocked__cached.side_effect = lambda x, y, z: z() mocked__report_type_fields.return_value = samples.SAMPLE_REPORT_TYPE_FIELDS reports = Reports(credentials={}) types = reports.report_type_fields('CLICK_PERFORMANCE_REPORT') self.assertEqual(set(samples.SAMPLE_REPORT_TYPE_FIELDS), set(types))
def test_integration_subset(self, mock_report_type_fields, mock_types, mock_report_schema, mock__retrieve_report_data): mock_report_type_fields.return_value = samples.SAMPLE_REPORT_TYPE_FIELDS mock_types.side_effect = fake_types mock__retrieve_report_data.return_value = gzip.GzipFile(samples.SAMPLE_SUBSET_REPORT_FILE_PATH, mode='rb') reports = Reports(samples.FAKE_CREDENTIALS) report = reports.retrieve_report('CLICK_PERFORMANCE_REPORT', 'YESTERDAY', ['CampaignId', 'GclId']) self.assertEqual(samples.EXPECTED_SUBSET_HEADERS, report.headers) self.assertEqual(samples.EXPECTED_LENGTH, report.length) self.assertEqual(samples.EXPECTED_SUBSET_FIRST_ROW, report.rows.next())
def test_build_report_request_with_specified_fields_invalid(self, mocked__retrieve_report_data, mocked__validate_type, mocked_report_type_fields, mocked__init__): mocked__init__.return_value = None fields = ['AccountDescriptiveName', 'Page', 'InvalidReportFieldName'] reports = Reports(credentials={}) with self.assertRaises(InvalidReportFieldNameError): reports.retrieve_report('CLICK_PERFORMANCE_REPORT', 'YESTERDAY', fields)
def test_build_report_request_with_specified_fields_valid(self, mocked__retrieve_report_data, mocked__validate_type, mocked_report_type_fields, mocked__init__): mocked__init__.return_value = None mocked_report_type_fields.return_value = samples.SAMPLE_REPORT_TYPE_FIELDS fields = ['AccountDescriptiveName', 'Page'] reports = Reports(credentials={}) reports.retrieve_report('CLICK_PERFORMANCE_REPORT', 'YESTERDAY', fields)
def test_build_report_request_without_specified_fields(self, mocked__retrieve_report_data, mocked__validate_type, mocked_report_type_fields, mocked__init__): mocked__init__.return_value = None mocked_report_type_fields.return_value = samples.SAMPLE_REPORT_TYPE_FIELDS reports = Reports(credentials={}) reports.retrieve_report('CLICK_PERFORMANCE_REPORT', 'YESTERDAY') mocked__retrieve_report_data.assert_called_once_with(reports, samples.EXPECTED_REPORT_REQUEST)