示例#1
0
    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
            }},
        )
示例#2
0
    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
            }
        }