# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors # License: MIT. See LICENSE import frappe from frappe.desk.reportview import export_query from frappe.tests.utils import FrappeTestCase class TestReportview(FrappeTestCase): def test_csv(self): from csv import QUOTE_ALL, QUOTE_MINIMAL, QUOTE_NONE, QUOTE_NONNUMERIC, DictReader from io import StringIO frappe.local.form_dict = frappe._dict( doctype="DocType", file_format_type="CSV", fields=("name", "module", "issingle"), filters={"issingle": 1, "module": "Core"}, ) for delimiter in (",", ";", "\t", "|"): frappe.local.form_dict.csv_delimiter = delimiter for quoting in (QUOTE_ALL, QUOTE_MINIMAL, QUOTE_NONE, QUOTE_NONNUMERIC): frappe.local.form_dict.csv_quoting = quoting export_query() self.assertTrue(frappe.response["filename"].endswith(".csv")) self.assertEqual(frappe.response["type"], "binary") with StringIO(frappe.response["filecontent"].decode("utf-8")) as result: reader = DictReader(result, delimiter=delimiter, quoting=quoting) for row in reader: self.assertEqual(int(row["Is Single"]), 1) self.assertEqual(row["Module"], "Core")