diff options
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 |
commit | 4084fde12999e3647d30fbc8c5072c702321e7ca (patch) | |
tree | 7a90d6e8c84d12a2011e473ff4c3ccd72b95923e | |
parent | 1482be99ce249d01c8836b7f75b3a696974e8d2f (diff) | |
download | Ishtar-4084fde12999e3647d30fbc8c5072c702321e7ca.tar.bz2 Ishtar-4084fde12999e3647d30fbc8c5072c702321e7ca.zip |
Admin: test json import/export
-rw-r--r-- | ishtar_common/tests.py | 44 |
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, |