def generate_delivery_feedback_report(user, host_name, deliveries_feedback): csv_export_service = DeliveryFeedbackReportExporter(host_name) CSVExportService.generate(csv_export_service.assemble_csv_data(deliveries_feedback), csv_export_service.export_category, csv_export_service.get_export_csv_file_name()) CSVExportService.notify(user, *csv_export_service.notification_details())
def generate_delivery_feedback_report(user, host_name, deliveries_feedback): deliveries_feedback_with_contact = map(set_remote_contact_to_report_item, deliveries_feedback) csv_export_service = DeliveryFeedbackReportExporter(host_name) CSVExportService.generate(csv_export_service.assemble_csv_data(deliveries_feedback_with_contact), csv_export_service.export_category, csv_export_service.get_export_csv_file_name()) CSVExportService.notify(user, *csv_export_service.notification_details())
def test_assemble_csv_data(self): delivery_received = 'Yes' shipment_date = '2015-11-20' order_number = 81020737 satisfied_with_delivery = 'Yes' consignee = {'id': 1, 'name': 'WAKISO DHO'} additional_delivery_comments = 'good' is_delivery_in_good_order = 'Yes' contact_person_id = '5694bdd328c0edad08b0f020' value = 21990 date_of_receipt = '2015-11-19T16:00:00.000Z' programme = {'id': 1, 'name': ''} first_name = 'Shenjian' last_name = 'Yuan' phone = '18192235667' contact_name = '%s %s' % (first_name, last_name) absolute_urls = ['http://testserver/media/photo/2016/01/27/major.jpg', 'http://testserver/media/photo/2016/01/27/cold.jpg'] deliveries_feedback = [{'deliveryReceived': delivery_received, 'shipmentDate': shipment_date, 'orderNumber': order_number, 'satisfiedWithDelivery': satisfied_with_delivery, 'consignee': consignee, 'additionalDeliveryComments': additional_delivery_comments, 'isDeliveryInGoodOrder': is_delivery_in_good_order, 'value': value, 'dateOfReceipt': date_of_receipt, 'programme': programme, 'contactName': contact_name, 'contactPhone': phone, 'contactPersonId': contact_person_id, 'absoluteUrls': absolute_urls }, ] row_value = [delivery_received, shipment_date, date_of_receipt, order_number, programme.get('name'), consignee.get('name'), contact_name, phone, value, is_delivery_in_good_order, satisfied_with_delivery, additional_delivery_comments, absolute_urls ] csv_exporter = DeliveryFeedbackReportExporter(self.HOSTNAME) header = csv_exporter.config_headers() expect_data = [header, row_value] assembled_data = csv_exporter.assemble_csv_data(deliveries_feedback) self.assertEqual(expect_data, assembled_data) self.assertTrue(len(assembled_data) is 2)
def test_generate_delivery_feedback_report_should_return_correct_notification_details(self, generate_exported_csv_file_name): file_name = 'deliveries_feedback_report_1448892495779.csv' generate_exported_csv_file_name.return_value = file_name delivery_feedback_reort_csv_export = DeliveryFeedbackReportExporter(self.HOSTNAME) category = 'report/feedback' details = ('Delivery Feedback Report Download', '%s some content Delivery Feedback Report other content http://ha.ha/static/exports/' + category + '/' + file_name) self.assertEqual(delivery_feedback_reort_csv_export.notification_details(), details)
def test_generate_delivery_feedback_report_should_return_correct_notification_details(self, generate_exported_csv_file_name): file_name = 'deliveries_feedback_report_1448892495779.csv' generate_exported_csv_file_name.return_value = file_name delivery_feedback_report_csv_export = DeliveryFeedbackReportExporter(self.HOSTNAME) category = 'report/feedback' export_label = delivery_feedback_report_csv_export.export_label details = (EMAIL_COMMON_SUBJECT, EMAIL_NOTIFICATION_CONTENT.format(export_label, 'http://ha.ha/static/exports/' + category + '/' + file_name, CSV_EXPIRED_HOURS)) self.assertEqual(delivery_feedback_report_csv_export.notification_details(), details)
def test_assemble_csv_data(self): delivery_received = 'Yes' shipment_date = '2015-11-20' order_number = 81020737 satisfied_with_delivery = 'Yes' consignee = {'id': 1, 'name': 'WAKISO DHO'} additional_delivery_comments = 'good' is_delivery_in_good_order = 'Yes' value = 21990 date_of_receipt = '2015-11-19T16:00:00.000Z' programme = {'id': 1, 'name': ''} deliveries_feedback = [{'deliveryReceived': delivery_received, 'shipmentDate': shipment_date, 'orderNumber': order_number, 'satisfiedWithDelivery': satisfied_with_delivery, 'consignee': consignee, 'additionalDeliveryComments': additional_delivery_comments, 'isDeliveryInGoodOrder': is_delivery_in_good_order, 'value': value, 'dateOfReceipt': date_of_receipt, 'programme': programme}, ] row_value = [delivery_received, shipment_date, date_of_receipt, order_number, programme.get('name'), consignee.get('name'), value, is_delivery_in_good_order, satisfied_with_delivery, additional_delivery_comments ] csv_exporter = DeliveryFeedbackReportExporter(self.HOSTNAME) header = csv_exporter.config_headers() expect_data = [header, row_value] assembled_data = csv_exporter.assemble_csv_data(deliveries_feedback) self.assertEqual(expect_data, assembled_data) self.assertTrue(len(assembled_data) is 2) assemble_row_value = assembled_data[1] self.assertTrue(len(assemble_row_value) is len(header)) self.assertTrue(delivery_received in assemble_row_value) self.assertTrue(consignee.get('name') in assemble_row_value) self.assertTrue(shipment_date in assemble_row_value) self.assertTrue(is_delivery_in_good_order in assemble_row_value) self.assertTrue(order_number in assemble_row_value) self.assertTrue(additional_delivery_comments in assemble_row_value) self.assertTrue(programme.get('name') in assemble_row_value) self.assertTrue(satisfied_with_delivery in assemble_row_value) self.assertTrue(value in assemble_row_value) self.assertTrue(date_of_receipt in assemble_row_value)