import unittest
from formats.odt_format import is_valid


class TestOdsFormat(unittest.TestCase):
    def test_is_valid__valid(self):
        resource = {}
        with open("tests/data/valid.odt", "r") as file:
            self.assertTrue(is_valid(resource, file))
            self.assertIsNone(resource.get("error"))

    def test_is_valid__invalid_no_zip(self):
        resource = {}
        with open("tests/data/correct.json", "r") as file:
            self.assertFalse(is_valid(resource, file))
            self.assertIsNotNone(resource.get("error"))

    def test_is_valid__invalid_no_odt(self):
        resource = {}
        with open("tests/data/valid.ods", "r") as file:
            self.assertFalse(is_valid(resource, file))
            self.assertIsNotNone(resource.get("error"))
            self.assertEqual(
                "Incorrect MIME type: application/vnd.oasis.opendocument.spreadsheet",
                resource["error"],
            )

    def test_is_valid__invalid_zip(self):
        resource = {}
        with open("tests/data/valid.docx", "r") as file:
            self.assertFalse(is_valid(resource, file))
            self.assertIsNotNone(resource.get("error"))


if __name__ == "__main__":
    unittest.main()