def test_header_is_true(self): mem = six.StringIO() with self.assertNumQueries(1): qs = Permission.objects.select_related().filter(codename='add_user') export_as_csv(queryset=qs, header=True, out=mem) mem.seek(0) csv_reader = csv.reader(mem) self.assertEqual(next(csv_reader), [u'id;"name";"content_type";"codename"'])
def test_deep_attr(self): fields = ['codename', 'content_type.app_label'] mem = StringIO.StringIO() with self.assertNumQueries(1): qs = Permission.objects.select_related().filter(codename='add_user') export_as_csv(queryset=qs, fields=fields, out=mem) mem.seek(0) csv_dump = mem.read() self.assertEquals(csv_dump.decode('utf8'), u'"add_user";"auth"\r\n')
def test_callable_method(self): fields = ['codename', 'natural_key'] mem = StringIO.StringIO() with self.assertNumQueries(2): qs = Permission.objects.filter(codename='add_user') export_as_csv(queryset=qs, fields=fields, out=mem) mem.seek(0) csv_dump = mem.read() self.assertEquals(csv_dump.decode('utf8'), u'"add_user";"(u\'add_user\', u\'auth\', u\'user\')"\r\n')
def test_queryset_values(self): fields = ['codename', 'content_type__app_label'] header = ['Name', 'Application'] mem = StringIO.StringIO() with self.assertNumQueries(1): qs = Permission.objects.filter(codename='add_user').values('codename', 'content_type__app_label') export_as_csv(queryset=qs, fields=fields, header=header, out=mem) mem.seek(0) csv_dump = mem.read() self.assertEquals(csv_dump.decode('utf8'), u'"Name";"Application"\r\n"add_user";"auth"\r\n')
def test_export_as_csv(self): fields = ['field1', 'field2'] header = ['Field 1', 'Field 2'] Row = namedtuple('Row', fields) rows = [Row(1, 4), Row(2, 5), Row(3, u'ӼӳӬԖԊ')] mem = io.StringIO() export_as_csv(queryset=rows, fields=fields, header=header, out=mem) mem.seek(0) csv_dump = mem.read() self.assertEqual( csv_dump, '"Field 1";"Field 2"\r\n"1";"4"\r\n"2";"5"\r\n"3";"ӼӳӬԖԊ"\r\n')
def test_export_as_csv(self): fields = ['field1', 'field2'] header = ['Field 1', 'Field 2'] Row = namedtuple('Row', fields) rows = [Row(1, 4), Row(2, 5), Row(3, u'ӼӳӬԖԊ')] mem = StringIO.StringIO() export_as_csv(queryset=rows, fields=fields, header=header, out=mem) mem.seek(0) csv_dump = mem.read() self.assertEquals(csv_dump.decode('utf8'), u'"Field 1";"Field 2"\r\n"1";"4"\r\n"2";"5"\r\n"3";"ӼӳӬԖԊ"\r\n')
def test_dialect(self): fields = ['field1', 'field2'] header = ['Field 1', 'Field 2'] Row = namedtuple('Row', fields) rows = [Row(1, 4), Row(2, 5), Row(3, 'ӼӳӬԖԊ')] mem = io.StringIO() export_as_csv(queryset=rows, fields=fields, header=header, out=mem, options={'dialect': 'excel'}) mem.seek(0) csv_dump = mem.read() self.assertEqual(csv_dump, 'Field 1,Field 2\r\n1,4\r\n2,5\r\n3,ӼӳӬԖԊ\r\n')
def test_dialect(self): fields = ['field1', 'field2'] header = ['Field 1', 'Field 2'] Row = namedtuple('Row', fields) rows = [Row(1, 4), Row(2, 5), Row(3, 'ӼӳӬԖԊ')] mem = six.StringIO() export_as_csv(queryset=rows, fields=fields, header=header, out=mem, options={'dialect': 'excel'}) mem.seek(0) csv_dump = mem.read() if six.PY2: self.assertEquals(csv_dump.decode('utf8'), u'Field 1,Field 2\r\n1,4\r\n2,5\r\n3,ӼӳӬԖԊ\r\n') else: self.assertEquals(csv_dump, 'Field 1,Field 2\r\n1,4\r\n2,5\r\n3,ӼӳӬԖԊ\r\n')
def test_default_params(self): with self.assertNumQueries(1): qs = Permission.objects.select_related().filter( codename='add_user') ret = export_as_csv(queryset=qs) self.assertIsInstance(ret, HttpResponse) self.assertEquals( ret.content.decode('utf8'), u'"%s";"Can add user";"user";"add_user"\r\n' % qs[0].pk)
def test_default_params(self): with self.assertNumQueries(1): qs = Permission.objects.select_related().filter(codename='add_user') ret = export_as_csv(queryset=qs) self.assertIsInstance(ret, HttpResponse) self.assertEquals(ret.content.decode('utf8'), u'"%s";"Can add user";"user";"add_user"\r\n' % qs[0].pk)