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_read_many(self): from papyrus.protocol import Protocol from shapely.geometry import Point from geojson import Feature, FeatureCollection engine = self._get_engine() Session = self._get_session(engine) MappedClass = self._get_mapped_class() proto = Protocol(Session, MappedClass, 'geom') def _query(request, filter): f1 = Feature(geometry=Point(1, 2)) f2 = Feature(geometry=Point(2, 3)) return [MappedClass(f1), MappedClass(f2)] proto._query = _query features = proto.read(testing.DummyRequest()) self.assertTrue(isinstance(features, FeatureCollection)) self.assertEqual(len(features.features), 2)
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))