""" Part of the bsie test suite. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ # standard imports import argparse import contextlib import io import unittest # bsie imports from bsie.utils import bsfs # objects to test from bsie.apps.info import main ## code ## class TestIndex(unittest.TestCase): def test_predicates(self): outbuf = io.StringIO() with contextlib.redirect_stdout(outbuf): # show predicates infos main(['predicates']) # verify output self.assertSetEqual({pred for pred in outbuf.getvalue().split('\n') if pred != ''}, { 'http://bsfs.ai/schema/Entity#author', 'http://bsfs.ai/schema/Predicate', 'http://bsfs.ai/schema/Entity#filename', 'http://bsfs.ai/schema/Entity#filesize', 'http://bsfs.ai/schema/Entity/colors_spatial#0658f2234a054e1dd59a14462c89f7733e019160419c796356aa831498bd0a04', 'http://bsfs.ai/schema/Entity#preview', 'http://bsfs.ai/schema/Preview#width', 'http://bsfs.ai/schema/Preview#height', 'http://bsfs.ai/schema/Preview#asset', }) def test_schema(self): outbuf = io.StringIO() with contextlib.redirect_stdout(outbuf): # show schema infos main(['schema']) # verify output schema = bsfs.schema.from_string(outbuf.getvalue()) self.assertSetEqual({pred.uri for pred in schema.predicates()}, { 'http://bsfs.ai/schema/Entity#author', 'http://bsfs.ai/schema/Predicate', 'http://bsfs.ai/schema/Entity#filename', 'http://bsfs.ai/schema/Entity#filesize', 'http://bsfs.ai/schema/Entity/colors_spatial#0658f2234a054e1dd59a14462c89f7733e019160419c796356aa831498bd0a04', 'http://bsfs.ai/schema/Entity#preview', 'http://bsfs.ai/schema/Preview#width', 'http://bsfs.ai/schema/Preview#height', 'http://bsfs.ai/schema/Preview#asset', }) def test_invalid(self): with contextlib.redirect_stderr(io.StringIO()): self.assertRaises(SystemExit, main, ['foobar']) ## main ## if __name__ == '__main__': unittest.main() ## EOF ##