def test_relations(relations, expected_relations): """Test that relations are properly parsed. 1. Create an embedded representation parser for a dictionary with specific relations. 2. Parse relations. 3. Check the parsed classes. """ parser = EmbeddedRepresentationParser(data={"rel": relations}, parser=JSONParser()) actual_relations = parser.parse_relations() assert actual_relations == expected_relations, "Wrong relations"
def test_embedded_representation_creation_error(): """Test that ValueError is raised if an error occurs during embedded representation creation. 1. Create an embedded representation parser. 2. Replace parse_relations method so that it returns invalid classes. 3. Try to call parse method. 4. Check that ValueError is raised. 5. Check the error message. """ parser = EmbeddedRepresentationParser(data={}, parser=JSONParser()) parser.parse_relations = lambda: 1 with pytest.raises(ValueError) as error_info: parser.parse() expected_message = "Failed to create an embedded representation with provided data" assert error_info.value.args[0] == expected_message, "Wrong error"
def test_parse(component_validator): """Test that data of embedded representation is properly parsed. 1. Create an embedded representation. 2. Create an embedded representation parser. 3. Replace parser methods so that they return predefined data. 4. Parse the embedded representation. 5. Check the data of the embedded representation. """ representation = EmbeddedRepresentation( relations=["parsed relation"], classes=("parsed class 1", "parsed class 2"), properties={ "property 1": 1, "property 2": [1, 2] }, entities=( EmbeddedLink(target="/embedded/link/target", relations=["relation"]), EmbeddedRepresentation(relations=["relation"]), ), links=[Link(target="/link/target", relations=["relation"])], actions=[Action(target="/action/target", name="action")], title="parsed title", ) parser = EmbeddedRepresentationParser(data={}, parser=JSONParser()) parser.parse_relations = lambda: representation.relations parser.parse_classes = lambda: representation.classes parser.parse_properties = lambda: representation.properties parser.parse_entities = lambda: representation.entities parser.parse_links = lambda: representation.links parser.parse_actions = lambda: representation.actions parser.parse_title = lambda: representation.title actual_representation = parser.parse() component_validator.validate_embedded_representation( actual_representation, representation)