def test_identifiable(self): data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"biomaterial_id": {"identifiable" : "true"}} }' template = schema_mock.get_template_for_json(data=data) self.assertTrue( template.lookup("donor_organism.biomaterial_id.identifiable")) data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"foo_bar": {"user_friendly" : "Foo bar"}} }' template = schema_mock.get_template_for_json(data=data) self.assertFalse( template.lookup("donor_organism.foo_bar.identifiable")) data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"process_id": {"identifiable" : "true"}} }' template = schema_mock.get_template_for_json(data=data) self.assertTrue( template.lookup("donor_organism.process_id.identifiable")) data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"protocol_id": {"identifiable" : "true"}} }' template = schema_mock.get_template_for_json(data=data) self.assertTrue( template.lookup("donor_organism.protocol_id.identifiable")) data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"file_name": {"identifiable" : "true"}} }' template = schema_mock.get_template_for_json(data=data) self.assertTrue( template.lookup("donor_organism.file_name.identifiable"))
def test_example(self): data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"foo_bar": {"example" : "Foo is a bar"}} }' template = schema_mock.get_template_for_json(data=data) self.assertEqual("Foo is a bar", template.lookup("donor_organism.foo_bar.example")) data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"foo_bar": {"user_friendly" : "Foo bar"}} }' template = schema_mock.get_template_for_json(data=data) self.assertIsNone(template.lookup("donor_organism.foo_bar.example"))
def test_follows_item_refs(self): data = '{"id" : "' + self.dummyProjectUri + '", "properties": { "foo_bar": {"type" : "array" , "items" : {"type" : "object", "id": "' + self.dummyDonorUri + '"}} } }' template = schema_mock.get_template_for_json(data=data) self.assertEqual( "biomaterial", template.lookup("project.foo_bar.schema.domain_entity"))
def test_get_key_for_label(self): data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"foo_bar": {"user_friendly" : "Foo bar"}} }' template = schema_mock.get_template_for_json(data=data) tabs = template.get_tabs_config() self.assertEqual("donor_organism", tabs.get_key_for_label("donor_organism"))
def test_no_schemas(self): data = \ f'''{{ "id" : "{self.donorUri}", "properties": {{ "foo_bar": {{ "user_friendly" : "Foo bar", "description" : "this is a foo bar", "example" : "e.g. foo" }} }} }}''' file = "foo.xlsx" spreadsheet_builder = SpreadsheetBuilder(file) template = schema_mock.get_template_for_json(data=data) spreadsheet_builder._build(template) spreadsheet_builder.save_workbook() reader = Reader("foo.xlsx") sheet = reader["Donor organism"] self.assertEqual("this is a foo bar", sheet.cell(row=2, column=1).value) self.assertEqual("FOO BAR", sheet.cell(row=1, column=1).value) self.assertEqual("For example: e.g. foo", sheet.cell(row=3, column=1).value.strip()) self.assertEqual("donor_organism.foo_bar", sheet.cell(row=4, column=1).value) # clean up os.remove(file)
def test_get_key_for_label(self): data = f'{{"id" : "{self.dummyDonorUri}"}}' template = schema_mock.get_template_for_json(data=data) tabs = template.get_tabs_config() self.assertEqual("donor_organism", tabs.get_key_for_label("Donor organism")) self.assertEqual('donor_organism', tabs.get_key_for_label('donor_organism'))
def test_get_tab_key(self): # given: project_data = f'{{"id":"{self.dummyProjectUri}"}}' template = schema_mock.get_template_for_json(data=project_data) # expect: self.assertEqual('project', template.get_tab_key('project')) self.assertEqual('project', template.get_tab_key('Project'))
def test_schema_lookup(self): data = '{"id" : "' + self.dummyProjectUri + '", "properties": {"foo": "bar"} }' template = schema_mock.get_template_for_json(data=data) self.assertEqual("project", template.lookup('project.schema.domain_entity')) self.assertEqual("project", template.lookup('project.schema.module')) self.assertEqual("type", template.lookup('project.schema.high_level_entity'))
def test_lookup_key_in_tab(self): data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"foo_bar": {"user_friendly" : "Foo bar"}} }' template = schema_mock.get_template_for_json(data=data) self.assertEqual( "donor_organism.foo_bar", template.get_key_for_label("Foo bar", "Donor organism")) with self.assertRaises(UnknownKeyException): template.get_key_for_label("Bar foo", "Donor organism")
def test_retrieveable(self): data = '{"id" : "' + self.dummyDonorUri + '", "properties": {"foo_bar": {"format" : "date-time"}} }' template = schema_mock.get_template_for_json(data=data) self.assertTrue( template.lookup("donor_organism.uuid.external_reference")) self.assertTrue(template.lookup("donor_organism.uuid.identifiable")) self.assertFalse( template.lookup("donor_organism.foo_bar.external_reference")) self.assertFalse( template.lookup("donor_organism.foo_bar.identifiable")) with self.assertRaises(UnknownKeyException): self.assertTrue( template.lookup("donor_organism.format.uuid.retrievable"))
def test_get_tab_key_not_found(self): # given: donor_organism_data = f'{{"id": "{self.dummyDonorUri}"}}' template = schema_mock.get_template_for_json(data=donor_organism_data) # when: exception_raised = None try: template.get_tab_key('does not exist') except UnknownKeyException as exception: exception_raised = exception # then: self.assertIsNotNone(exception_raised)
def test_get_tab_key_case_insensitive(self): # given: donor_organism_data = f'{{"id": "{self.dummyDonorUri}"}}' template = schema_mock.get_template_for_json(data=donor_organism_data) # and: self.assertEqual('donor_organism', template.get_tab_key('donor_organism')) self.assertEqual('donor_organism', template.get_tab_key('Donor organism')) self.assertEqual('donor_organism', template.get_tab_key('donOr orGanisM')) self.assertEqual('donor_organism', template.get_tab_key('DONOR ORGANISM')) # and: self.assertEqual('donor_organism', template.get_tab_key('donor_organism')) self.assertEqual('donor_organism', template.get_tab_key('DONOR_ORGANISM'))
def test_referenced_property(self): dir_path = os.path.dirname(os.path.realpath(__file__)) biomaterial_core_path = os.path.realpath(os.sep + os.sep + dir_path + os.sep + "biomaterial_core.json") data = '{"id" : "' + self.dummyDonorUri + '", "properties": { "biomaterial_core" : {"user_friendly": "foo", "description" : "foo bar" , "$ref" : "file:' + biomaterial_core_path + '"}}}' template = schema_mock.get_template_for_json(data=data) self.assertEqual( "foo", template.lookup("donor_organism.biomaterial_core.user_friendly")) self.assertEqual( "foo bar", template.lookup("donor_organism.biomaterial_core.description")) self.assertEqual( "biomaterial id", template.lookup( "donor_organism.biomaterial_core.biomaterial_id.user_friendly") ) self.assertEqual( "a biomaterial id", template.lookup( "donor_organism.biomaterial_core.biomaterial_id.description"))
def test_has_type_list(self): data = '{"id" : "' + self.dummyDonorUri + '", "properties": { "foo_bar": {"type" : "array" , "items" : {"type": "string"}} } }' template = schema_mock.get_template_for_json(data=data) self.assertEqual("string", template.lookup("donor_organism.foo_bar.value_type")) self.assertTrue(template.lookup("donor_organism.foo_bar.multivalue"))
def test_required_fields(self): data = '{"id" : "' + self.dummyDonorUri + '", "required": ["foo_bar"], "properties": { "foo_bar": {"user_friendly" : "Foo bar"}, "bar_foo" : {}} }' template = schema_mock.get_template_for_json(data=data) self.assertTrue(template.lookup("donor_organism.foo_bar.required")) self.assertFalse(template.lookup("donor_organism.bar_foo.required"))
def test_unknown_key_exception(self): data = '{"id" : "' + self.dummyProjectUri + '", "properties": {"foo": "bar"} }' template = schema_mock.get_template_for_json(data=data) with self.assertRaises(UnknownKeyException): template.lookup('foo')
def test_no_root_schema(self): data = '{"properties": {"foo": "bar"} }' with self.assertRaises(RootSchemaException): schema_mock.get_template_for_json(data=data)