def test_aliases(self): """ Test that valid aliases are allowed, but do not effect r-values. """ class MyStructureMapper(BaseResourceMapper): ALIASES = ( ("elements", "my_elements"), ("A", "D"), ("B", "E"), ("C", "F"), ("_exmpl_nested_field", "nested_field"), ) mapper = MyStructureMapper() t = MongoTransformer(mapper=mapper) self.assertEqual(mapper.alias_for("elements"), "my_elements") test_filter = {"elements": {"$in": ["A", "B", "C"]}} self.assertEqual( t.postprocess(test_filter), {"my_elements": { "$in": ["A", "B", "C"] }}, ) test_filter = {"$and": [{"elements": {"$in": ["A", "B", "C"]}}]} self.assertEqual( t.postprocess(test_filter), {"$and": [{ "my_elements": { "$in": ["A", "B", "C"] } }]}, ) test_filter = {"elements": "A"} self.assertEqual(t.postprocess(test_filter), {"my_elements": "A"}) test_filter = ["A", "B", "C"] self.assertEqual(t.postprocess(test_filter), ["A", "B", "C"]) test_filter = ["A", "elements", "C"] self.assertEqual(t.postprocess(test_filter), ["A", "elements", "C"]) test_filter = {"_exmpl_nested_field.sub_property": {"$gt": 1234.5}} self.assertEqual(t.postprocess(test_filter), {"nested_field.sub_property": { "$gt": 1234.5 }}) test_filter = { "_exmpl_nested_field.sub_property.x": { "$exists": False } } self.assertEqual( t.postprocess(test_filter), {"nested_field.sub_property.x": { "$exists": False }}, )
def test_aliases(self, mapper): """ Test that valid aliases are allowed, but do not affect r-values. """ from optimade.filtertransformers.mongo import MongoTransformer class MyStructureMapper(mapper("BaseResourceMapper")): ALIASES = ( ("elements", "my_elements"), ("A", "D"), ("B", "E"), ("C", "F"), ("_exmpl_nested_field", "nested_field"), ) mapper = MyStructureMapper() t = MongoTransformer(mapper=mapper) assert mapper.alias_for("elements") == "my_elements" test_filter = {"elements": {"$in": ["A", "B", "C"]}} assert t.postprocess(test_filter) == { "my_elements": { "$in": ["A", "B", "C"] } } test_filter = {"$and": [{"elements": {"$in": ["A", "B", "C"]}}]} assert t.postprocess(test_filter) == { "$and": [{ "my_elements": { "$in": ["A", "B", "C"] } }] } test_filter = {"elements": "A"} assert t.postprocess(test_filter) == {"my_elements": "A"} test_filter = ["A", "B", "C"] assert t.postprocess(test_filter) == ["A", "B", "C"] test_filter = ["A", "elements", "C"] assert t.postprocess(test_filter) == ["A", "elements", "C"] test_filter = {"_exmpl_nested_field.sub_property": {"$gt": 1234.5}} assert t.postprocess(test_filter) == { "nested_field.sub_property": { "$gt": 1234.5 } } test_filter = { "_exmpl_nested_field.sub_property.x": { "$exists": False } } assert t.postprocess(test_filter) == { "nested_field.sub_property.x": { "$exists": False } }