def filter_specification_factory(): """ Fixture creating a new :class:`everest.querying.specifications.FilterSpecificationFactory` instance. """ return FilterSpecificationFactory()
def test_filter_specification_visitor(self): coll = get_root_collection(IMyEntity) mb_cls = get_member_class(coll) my_entity = create_entity() member = coll.create_member(my_entity) spec_fac = FilterSpecificationFactory() specs = [ # Terminal access. spec_fac.create_equal_to('text', self.TEST_TEXT), # Terminal access with different name in entity. spec_fac.create_equal_to('text_rc', self.TEST_TEXT), # Nested member access with different name in entity. spec_fac.create_equal_to('parent.text_rc', self.TEST_TEXT), # Nested collection access with different name in entity. spec_fac.create_equal_to('children.text_rc', self.TEST_TEXT), # Access with dotted entity name in rc attr declaration. spec_fac.create_equal_to('parent_text', self.TEST_TEXT), # Access to member. spec_fac.create_equal_to('parent', member.parent.get_entity()), ] expecteds = [ ('text', MyEntity.text.__eq__(self.TEST_TEXT)), ('text_ent', MyEntity.text_ent.__eq__(self.TEST_TEXT)), ('parent.text_ent', MyEntity.parent.has(MyEntityParent.text_ent.__eq__( self.TEST_TEXT))), ('children.text_ent', MyEntity.children.any( MyEntityChild.text_ent.__eq__(self.TEST_TEXT))), ('parent.text_ent', MyEntity.parent.has(MyEntityParent.text_ent.__eq__( self.TEST_TEXT))), ('parent', MyEntity.parent.__eq__(member.parent.get_entity())), ] for spec, expected in zip(specs, expecteds): new_attr_name, expr = expected visitor = ResourceToEntityFilterSpecificationVisitor(mb_cls) spec.accept(visitor) new_spec = visitor.expression self.assert_equal(new_spec.attr_name, new_attr_name) visitor = SqlFilterSpecificationVisitor(MyEntity) new_spec.accept(visitor) self.assert_equal(str(visitor.expression), str(expr)) invalid_spec = spec_fac.create_equal_to('foo', self.TEST_TEXT) vst = ResourceToEntityFilterSpecificationVisitor(mb_cls) self.assert_raises(AttributeError, invalid_spec.accept, vst)
def setup_registry(self, filter_specification_factory=None, order_specification_factory=None, service=None, cql_filter_specification_visitor=None, sql_filter_specification_visitor=None, eval_filter_specification_visitor=None, cql_order_specification_visitor=None, sql_order_specification_visitor=None, eval_order_specification_visitor=None, url_converter=None, **kw): # Set default values for options. if filter_specification_factory is None: filter_specification_factory = FilterSpecificationFactory() if order_specification_factory is None: order_specification_factory = OrderSpecificationFactory() if service is None: service = Service() if cql_filter_specification_visitor is None: cql_filter_specification_visitor = CqlFilterSpecificationVisitor if sql_filter_specification_visitor is None: sql_filter_specification_visitor = SqlFilterSpecificationVisitor if eval_filter_specification_visitor is None: eval_filter_specification_visitor = \ ObjectFilterSpecificationVisitor if cql_order_specification_visitor is None: cql_order_specification_visitor = CqlOrderSpecificationVisitor if sql_order_specification_visitor is None: sql_order_specification_visitor = SqlOrderSpecificationVisitor if eval_order_specification_visitor is None: eval_order_specification_visitor = ObjectOrderSpecificationVisitor if url_converter is None: url_converter = ResourceUrlConverter PyramidConfigurator.setup_registry(self, **kw) self.__setup_everest( filter_specification_factory=filter_specification_factory, order_specification_factory=order_specification_factory, service=service, cql_filter_specification_visitor=cql_filter_specification_visitor, sql_filter_specification_visitor=sql_filter_specification_visitor, eval_filter_specification_visitor=eval_filter_specification_visitor, cql_order_specification_visitor=cql_order_specification_visitor, sql_order_specification_visitor=sql_order_specification_visitor, eval_order_specification_visitor=eval_order_specification_visitor, url_converter=url_converter)
def _make_specs_factory(self): return FilterSpecificationFactory()
def set_up(self): self.factory = FilterSpecificationFactory() self.candidate = object() self.always_true = AlwaysTrueFilterSpecification() self.always_false = AlwaysFalseFilterSpecification()
def set_up(self): self.factory = FilterSpecificationFactory() self.candidate = self.create_candidate(text_attr=self.TEXT_VALUE, number_attr=self.NUMBER_VALUE, date_attr=self.DATE_VALUE, list_attr=self.LIST_VALUES)