summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-07-26 15:07:01 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2020-07-26 15:07:01 +0200
commit4084fde12999e3647d30fbc8c5072c702321e7ca (patch)
tree7a90d6e8c84d12a2011e473ff4c3ccd72b95923e
parent1482be99ce249d01c8836b7f75b3a696974e8d2f (diff)
downloadIshtar-4084fde12999e3647d30fbc8c5072c702321e7ca.tar.bz2
Ishtar-4084fde12999e3647d30fbc8c5072c702321e7ca.zip
Admin: test json import/export
-rw-r--r--ishtar_common/tests.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 34b25a6ec..a4014db18 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -1566,6 +1566,50 @@ class AdminGenTypeTest(TestCase):
finally:
f.close()
+ def test_json_export(self):
+ for model in self.gen_models:
+ url = '/admin/{}/{}/'.format(self.module_name,
+ model.__name__.lower())
+ q = model.objects
+ if not q.count():
+ continue
+ response = self.client.post(
+ url, {'action': '_serialize_action',
+ '_selected_action': [str(o.pk) for o in q.all()]})
+ self.assertEqual(
+ response.status_code, 200,
+ msg="Can not export as JSON for {}.".format(model))
+ # json content already tested on full export
+
+ def test_json_import(self):
+ for model in self.gen_models:
+ q = model.objects
+ nb = q.count()
+ if not nb:
+ continue
+ base_url = '/admin/{}/{}/'.format(self.module_name,
+ model.__name__.lower())
+ response = self.client.post(
+ base_url, {'action': '_serialize_action',
+ '_selected_action': [str(o.pk) for o in q.all()]})
+ self.assertEqual(
+ response.status_code, 200,
+ msg="Can not export as CSV for {}.".format(model))
+
+ for obj in q.all():
+ obj.delete()
+
+ url = base_url + 'import-from-json/'
+ try:
+ f = io.BytesIO(response.content)
+ response = self.client.post(url, {'json_file': f,
+ 'apply': True})
+ self.assertEqual(response.status_code, 302)
+ self.assertRedirects(response, base_url)
+ self.assertEqual(nb, model.objects.count())
+ finally:
+ f.close()
+
def test_importer_type_duplicate(self):
model = models.ImporterType
base_url = '/admin/{}/{}/'.format(self.module_name,