34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
# 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")
|