diff options
Diffstat (limited to 'archaeological_operations/tests.py')
| -rw-r--r-- | archaeological_operations/tests.py | 66 | 
1 files changed, 57 insertions, 9 deletions
| diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index 74ae5819a..ee1f2645c 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -4579,6 +4579,17 @@ class ApiTest(OperationInitTest, APITestCase):          )          return src +    def _mock_request(self, mock_get, json_file="external_source_types_1.json"): +        json_file = "../archaeological_operations/tests/" + json_file +        mock_get.return_value.status_code = 200 + +        def __json(): +            return json.loads(mock_get.return_value.text) + +        mock_get.return_value.json = __json +        with open(json_file, "r") as tpes: +            mock_get.return_value.text = tpes.read() +      @patch("requests.get")      def test_type_admin(self, mock_get):          # POV: local @@ -4623,10 +4634,7 @@ class ApiTest(OperationInitTest, APITestCase):              response.content.decode(),          ) -        with open( -            "../archaeological_operations/tests/external_source_types_1.json", "r" -        ) as tpes: -            mock_get.return_value.text = tpes.read() +        self._mock_request(mock_get)          response = self.client.post(url, params, follow=True)          result = {"created": "XXXXX"} @@ -4635,10 +4643,7 @@ class ApiTest(OperationInitTest, APITestCase):          )          self.assertIn(msg_created, response.content.decode())          # test incoherent search_model and types -        with open( -            "../archaeological_operations/tests/external_source_types_2.json", "r" -        ) as tpes: -            mock_get.return_value.text = tpes.read() +        self._mock_request(mock_get, "external_source_types_2.json")          response = self.client.post(url, params, follow=True)          content = response.content.decode() @@ -4662,7 +4667,50 @@ class ApiTest(OperationInitTest, APITestCase):          msg = str(_(f"{result['deleted']} matches deleted"))          self.assertIn(msg, response.content.decode()) -        pass +    @tag("libreoffice") +    @patch("requests.get") +    def test_match_doc(self, mock_get): +        if not settings.USE_LIBREOFFICE: +            return +        self._mock_request(mock_get) +        self.client.login(username=self.username, password=self.password) +        source = self._get_source() +        url = "/admin/{}/{}/".format( +            "ishtar_common", models_rest.ApiExternalSource.__name__.lower() +        ) +        params = { +            "action": "update_types_from_source", +            "_selected_action": [source.pk], +        } +        self.client.post(url, params, follow=True) + +        params["action"] = "generate_match_document" +        response = self.client.post(url, params, follow=True) +        #src_doc = source.generate_match_document() +        zip_file = zipfile.ZipFile(BytesIO(response.content)) + +        self.assertIsNone( +            zip_file.testzip(), +            "Libreoffice match doc generated is not a correct zip file.", +        ) + +        filename = None +        for name in zip_file.namelist(): +            if name == "content.xml": +                filename = name +                break +        self.assertIsNotNone(filename) + +        # only check that all operation types are listed +        with tempfile.TemporaryDirectory(prefix="tmp-ishtar-") as tmpdir: +            match_file = zip_file.extract(filename, tmpdir) +            with open(match_file) as content_file: +                content = content_file.read() +                for ope_type in models.OperationType.objects.filter( +                    available=True +                ).all(): +                    ope_type = str(ope_type).replace("'", "'") +                    self.assertIn(ope_type, content)      def test_query_transformation(self):          # POV: local | 
