def test_create_attr_filter_attr_not_queryable(self): from papyrus.protocol import create_attr_filter request = testing.DummyRequest( params={"queryable": "id", "text__ilike": "foo"} ) MappedClass = self._get_mapped_class() filter = create_attr_filter(request, MappedClass) self.assertEqual(filter, None)
def test___query(self): from papyrus.protocol import Protocol, create_attr_filter from mock import patch engine = self._get_engine() Session = self._get_session(engine) MappedClass = self._get_mapped_class() proto = Protocol(Session, MappedClass, "geom") request = testing.DummyRequest() with patch('sqlalchemy.orm.query.Query.all', lambda q : q): query = proto._query(request) self.assertTrue("SELECT" in query_to_str(query, engine)) request = testing.DummyRequest(params={"queryable": "id", "id__eq": "1"}) with patch('sqlalchemy.orm.query.Query.all', lambda q : q): query = proto._query(request) self.assertTrue("WHERE" in query_to_str(query, engine)) request = testing.DummyRequest(params={"queryable": "id", "id__eq": "1"}) with patch('sqlalchemy.orm.query.Query.all', lambda q : q): filter = create_attr_filter(request, MappedClass) query = proto._query(testing.DummyRequest(), filter=filter) self.assertTrue("WHERE" in query_to_str(query, engine)) request = testing.DummyRequest(params={"limit": "2"}) with patch('sqlalchemy.orm.query.Query.all', lambda q : q): query = proto._query(request) self.assertTrue("LIMIT" in query_to_str(query, engine)) request = testing.DummyRequest(params={"maxfeatures": "2"}) with patch('sqlalchemy.orm.query.Query.all', lambda q : q): query = proto._query(request) self.assertTrue("LIMIT" in query_to_str(query, engine)) request = testing.DummyRequest(params={"limit": "2", "offset": "10"}) with patch('sqlalchemy.orm.query.Query.all', lambda q : q): query = proto._query(request) self.assertTrue("OFFSET" in query_to_str(query, engine)) request = testing.DummyRequest(params={"order_by": "text"}) with patch('sqlalchemy.orm.query.Query.all', lambda q : q): query = proto._query(request) self.assertTrue("ORDER BY" in query_to_str(query, engine)) self.assertTrue("ASC" in query_to_str(query, engine)) request = testing.DummyRequest(params={"sort": "text"}) with patch('sqlalchemy.orm.query.Query.all', lambda q : q): query = proto._query(request) self.assertTrue("ORDER BY" in query_to_str(query, engine)) self.assertTrue("ASC" in query_to_str(query, engine)) request = testing.DummyRequest(params={"order_by": "text", "dir": "DESC"}) with patch('sqlalchemy.orm.query.Query.all', lambda q : q): query = proto._query(request) self.assertTrue("ORDER BY" in query_to_str(query, engine)) self.assertTrue("DESC" in query_to_str(query, engine))
def test_create_attr_filter_unknown_op(self): from sqlalchemy import sql from papyrus.protocol import create_attr_filter request = testing.DummyRequest( params={"queryable": "text", "text__foo": "foo"} ) MappedClass = self._get_mapped_class() filter = create_attr_filter(request, MappedClass) self.assertEqual(filter, None)
def test_create_attr_filter_and(self): from sqlalchemy import sql from papyrus.protocol import create_attr_filter request = testing.DummyRequest( params={"queryable": "text,id", "text__ilike": "foo", "id__eq": "1"} ) MappedClass = self._get_mapped_class() filter = create_attr_filter(request, MappedClass) self.assertTrue((sql.and_(MappedClass.text.ilike("foo"), MappedClass.id == "1")).compare(filter))
def test_create_attr_filter_unknown_op(self): from sqlalchemy import sql from papyrus.protocol import create_attr_filter request = testing.DummyRequest(params={ "queryable": "text", "text__foo": "foo" }) MappedClass = self._get_mapped_class() filter = create_attr_filter(request, MappedClass) self.assertEqual(filter, None)
def test_create_attr_filter_like(self): from sqlalchemy import sql from papyrus.protocol import create_attr_filter request = testing.DummyRequest( params={"queryable": "text", "text__like": "foo"} ) MappedClass = self._get_mapped_class() filter = create_attr_filter(request, MappedClass) self.assertTrue(isinstance(filter, sql.expression.ClauseElement)) self.assertTrue(sql.and_(MappedClass.text.like("foo")).compare(filter))
def test_create_attr_filter_and(self): from sqlalchemy import sql from papyrus.protocol import create_attr_filter request = testing.DummyRequest(params={ "queryable": "text,id", "text__ilike": "foo", "id__eq": "1" }) MappedClass = self._get_mapped_class() filter = create_attr_filter(request, MappedClass) self.assertTrue((sql.and_(MappedClass.text.ilike("foo"), MappedClass.id == "1")).compare(filter))
def test___query(self): from papyrus.protocol import Protocol, create_attr_filter from mock import patch engine = self._get_engine() Session = self._get_session(engine) MappedClass = self._get_mapped_class() proto = Protocol(Session, MappedClass, "geom") request = testing.DummyRequest() with patch('sqlalchemy.orm.query.Query.all', lambda q: q): query = proto._query(request) self.assertTrue(b"SELECT" in query_to_str(query, engine)) request = testing.DummyRequest(params={ "queryable": "id", "id__eq": "1" }) with patch('sqlalchemy.orm.query.Query.all', lambda q: q): query = proto._query(request) self.assertTrue(b"WHERE" in query_to_str(query, engine)) request = testing.DummyRequest(params={ "queryable": "id", "id__eq": "1" }) with patch('sqlalchemy.orm.query.Query.all', lambda q: q): filter = create_attr_filter(request, MappedClass) query = proto._query(testing.DummyRequest(), filter=filter) self.assertTrue(b"WHERE" in query_to_str(query, engine)) request = testing.DummyRequest(params={"limit": "2"}) with patch('sqlalchemy.orm.query.Query.all', lambda q: q): query = proto._query(request) self.assertTrue(b"LIMIT" in query_to_str(query, engine)) request = testing.DummyRequest(params={"maxfeatures": "2"}) with patch('sqlalchemy.orm.query.Query.all', lambda q: q): query = proto._query(request) self.assertTrue(b"LIMIT" in query_to_str(query, engine)) request = testing.DummyRequest(params={"limit": "2", "offset": "10"}) with patch('sqlalchemy.orm.query.Query.all', lambda q: q): query = proto._query(request) self.assertTrue(b"OFFSET" in query_to_str(query, engine)) request = testing.DummyRequest(params={"order_by": "text"}) with patch('sqlalchemy.orm.query.Query.all', lambda q: q): query = proto._query(request) self.assertTrue(b"ORDER BY" in query_to_str(query, engine)) self.assertTrue(b"ASC" in query_to_str(query, engine)) request = testing.DummyRequest(params={"sort": "text"}) with patch('sqlalchemy.orm.query.Query.all', lambda q: q): query = proto._query(request) self.assertTrue(b"ORDER BY" in query_to_str(query, engine)) self.assertTrue(b"ASC" in query_to_str(query, engine)) request = testing.DummyRequest(params={ "order_by": "text", "dir": "DESC" }) with patch('sqlalchemy.orm.query.Query.all', lambda q: q): query = proto._query(request) self.assertTrue(b"ORDER BY" in query_to_str(query, engine)) self.assertTrue(b"DESC" in query_to_str(query, engine))