def test_that_it_works(self) -> None: another_cls = mapry.Class(name='another_cls', plural='', description='', ref='') embed = mapry.Embed(name='some_embed', description='', ref='') embed.properties = { "another_ref": dummy_property(name='another_ref', a_type=another_cls, composite=embed) } cls = mapry.Class(name='some_class', plural='', description='', ref='') cls.properties = { "some_primitive": dummy_property(name="some_primitive", a_type=mapry.Path(), composite=cls), "some_ref": dummy_property(name="some_ref", a_type=cls, composite=cls), "some_embed": dummy_property(name="some_embed", a_type=embed, composite=cls) } self.assertListEqual([another_cls, cls], mapry.references(a_type=cls))
def test_embed_needs_type(self) -> None: embed = mapry.Embed(name='some_embed', description='', ref='') embed.properties = { 'some_property': dummy_property(name='some_property', a_type=mapry.Path(), composite=embed) } self.assertTrue(mapry.needs_type(a_type=embed, query=mapry.Path)) self.assertFalse(mapry.needs_type(a_type=embed, query=mapry.Date))
def _embed_from_mapping(mapping: Mapping[str, Any], ref: str) -> mapry.Embed: """ Parse the embed from the mapping. All the fields are parsed except the properties, which are parsed in a separate step. :param mapping: to be parsed :param ref: reference to the embeddable structure in the mapry schema :return: embeddable structure without the properties """ return mapry.Embed( name=mapping['name'], description=mapping['description'], ref=ref)
def test_iterate_over_types(self) -> None: embed_path = mapry.Path() embed_array = mapry.Array(values=embed_path) embed = mapry.Embed(name='some_embed', description='', ref='E#') embed.properties = { "some_embed_property": dummy_property(name="some_embed_property", a_type=embed_array, composite=embed) } cls_path = mapry.Path() cls = mapry.Class(name='some_class', plural='', description='', ref='C#') cls.properties = { "some_class_property": dummy_property(name="some_class_property", a_type=cls_path, composite=cls) } graph_path = mapry.Path() graph = mapry.Graph() graph.ref = 'G#' graph.properties = { "some_graph_property": dummy_property(name="some_graph_property", a_type=graph_path, composite=graph), } graph.classes = {cls.name: cls} graph.embeds = {embed.name: embed} # yapf: disable self.assertListEqual( [(cls_path, 'C#/some_class_property'), (embed_array, 'E#/some_embed_property'), (embed_path, 'E#/some_embed_property/values'), (graph_path, 'G#/some_graph_property')], list(mapry.iterate_over_types(graph=graph)))
def test_graph_needs_type(self) -> None: # Property of an object graph graph = mapry.Graph() graph.properties = { "some_property": dummy_property(name='some_property', a_type=mapry.Path(), composite=graph) } self.assertTrue(mapry.needs_type(a_type=graph, query=mapry.Path)) self.assertFalse(mapry.needs_type(a_type=graph, query=mapry.Date)) # Recursively needs type by a property of a class cls = mapry.Class(name='some_class', plural='', description='', ref='') cls.properties = { 'some_property': dummy_property(name='some_property', a_type=mapry.Path(), composite=cls) } graph = mapry.Graph() graph.classes = {cls.name: cls} self.assertTrue(mapry.needs_type(a_type=graph, query=mapry.Path)) self.assertFalse(mapry.needs_type(a_type=graph, query=mapry.Date)) # Recursively needs type by a property of an embeddable structure embed = mapry.Embed(name='some_embed', description='', ref='') embed.properties = { 'some_property': dummy_property(name='some_property', a_type=mapry.Path(), composite=embed) } graph = mapry.Graph() graph.embeds = {embed.name: embed} self.assertTrue(mapry.needs_type(a_type=graph, query=mapry.Path)) self.assertFalse(mapry.needs_type(a_type=graph, query=mapry.Date))