mirri_utils/tests/test_parsers.py

52 lines
1.7 KiB
Python

from mirri.entities.strain import ValidationError
import unittest
from pathlib import Path
from pprint import pprint
from mirri.io.parsers.mirri_excel import parse_mirri_excel
TEST_DATA_DIR = Path(__file__).parent / "data"
class MirriExcelTests(unittest.TestCase):
def test_mirri_excel_parser(self):
in_path = TEST_DATA_DIR / "valid.mirri.xlsx"
with in_path.open("rb") as fhand:
parsed_data = parse_mirri_excel(fhand, version="20200601")
medium = parsed_data["growth_media"][0]
self.assertEqual("1", medium.acronym)
self.assertEqual(medium.description, "NUTRIENT BROTH/AGAR I")
strains = list(parsed_data["strains"])
strain = strains[0]
self.assertEqual(strain.publications[0].id, 1)
self.assertEqual(strain.publications[0].title, 'Cosa')
self.assertEqual(strain.id.number, "1")
pprint(strain.dict())
def xtest_mirri_excel_parser_invalid_fail(self):
in_path = TEST_DATA_DIR / "invalid.mirri.xlsx"
with in_path.open("rb") as fhand:
try:
parse_mirri_excel(fhand, version="20200601")
self.fail()
except ValidationError:
pass
def xtest_mirri_excel_parser_invalid(self):
in_path = TEST_DATA_DIR / "invalid.mirri.xlsx"
with in_path.open("rb") as fhand:
parsed_data = parse_mirri_excel(
fhand, version="20200601")
errors = parsed_data["errors"]
for _id, _errors in errors.items():
print(_id, _errors)
if __name__ == "__main__":
# import sys;sys.argv = ['',
# 'MirriExcelTests.test_mirri_excel_parser_invalid']
unittest.main()