def test_datastore_query_builder(self): wkt = 'POINT(-72.0 40.0)' buf = 0.1 # DatastoreQueryBuilder - WKT qb = DatastoreQueryBuilder() qb.build_query(where=qb.overlaps_geom(qb.RA_GEOM_LOC,wkt,buf)) self.assertEquals(qb.get_query()['where'], ['gop:overlaps_geom', ('geom_loc', 'POINT(-72.0 40.0)', 0.1)]) qb = DatastoreQueryBuilder() qb.build_query(where=qb.contains_geom(qb.RA_GEOM_LOC,wkt,buf)) self.assertEquals(qb.get_query()['where'], ['gop:contains_geom', ('geom_loc', 'POINT(-72.0 40.0)', 0.1)]) qb = DatastoreQueryBuilder() qb.build_query(where=qb.within_geom(qb.RA_GEOM_LOC,wkt,buf)) self.assertEquals(qb.get_query()['where'], ['gop:within_geom', ('geom_loc', 'POINT(-72.0 40.0)', 0.1)]) qb = DatastoreQueryBuilder() qb.build_query(where=qb.crosses_geom(qb.RA_GEOM_LOC,wkt,buf)) self.assertEquals(qb.get_query()['where'], ['gop:crosses_geom', ('geom_loc', 'POINT(-72.0 40.0)', 0.1)]) qb = DatastoreQueryBuilder() qb.build_query(where=qb.touches_geom(qb.RA_GEOM_LOC,wkt,buf)) self.assertEquals(qb.get_query()['where'], ['gop:touches_geom', ('geom_loc', 'POINT(-72.0 40.0)', 0.1)])
def test_wkt(self): """ unit test to verify the DatastoreQuery to PostgresQuery to SQL translation for PostGIS WKT """ wkt = 'POINT(-72.0 40.0)' buf = 0.1 # PostgresQueryBuilder - WKT (no buffer) qb = DatastoreQueryBuilder() qb.build_query(where=qb.overlaps_geom(qb.RA_GEOM_LOC,wkt,0.0)) pqb = PostgresQueryBuilder(qb.get_query(), 'test') self.assertEquals(pqb.get_query(),"SELECT id,doc FROM test WHERE ST_Intersects(geom_loc,ST_GeomFromEWKT('SRID=4326;POINT(-72.0 40.0)'))") qb = DatastoreQueryBuilder() qb.build_query(where=qb.contains_geom(qb.RA_GEOM_LOC,wkt,0.0)) pqb = PostgresQueryBuilder(qb.get_query(), 'test') self.assertEquals(pqb.get_query(),"SELECT id,doc FROM test WHERE ST_Contains(geom_loc,ST_GeomFromEWKT('SRID=4326;POINT(-72.0 40.0)'))") qb = DatastoreQueryBuilder() qb.build_query(where=qb.within_geom(qb.RA_GEOM_LOC,wkt,0.0)) pqb = PostgresQueryBuilder(qb.get_query(), 'test') self.assertEquals(pqb.get_query(),"SELECT id,doc FROM test WHERE ST_Within(geom_loc,ST_GeomFromEWKT('SRID=4326;POINT(-72.0 40.0)'))") # PostgresQueryBuilder - WKT (with buffer) qb = DatastoreQueryBuilder() qb.build_query(where=qb.overlaps_geom(qb.RA_GEOM_LOC,wkt,buf)) pqb = PostgresQueryBuilder(qb.get_query(), 'test') self.assertEquals(pqb.get_query(),"SELECT id,doc FROM test WHERE ST_Intersects(geom_loc,ST_Buffer(ST_GeomFromEWKT('SRID=4326;POINT(-72.0 40.0)'), 0.100000))") qb = DatastoreQueryBuilder() qb.build_query(where=qb.contains_geom(qb.RA_GEOM_LOC,wkt,buf)) pqb = PostgresQueryBuilder(qb.get_query(), 'test') self.assertEquals(pqb.get_query(),"SELECT id,doc FROM test WHERE ST_Contains(geom_loc,ST_Buffer(ST_GeomFromEWKT('SRID=4326;POINT(-72.0 40.0)'), 0.100000))") qb = DatastoreQueryBuilder() qb.build_query(where=qb.within_geom(qb.RA_GEOM_LOC,wkt,buf)) pqb = PostgresQueryBuilder(qb.get_query(), 'test') self.assertEquals(pqb.get_query(),"SELECT id,doc FROM test WHERE ST_Within(geom_loc,ST_Buffer(ST_GeomFromEWKT('SRID=4326;POINT(-72.0 40.0)'), 0.100000))") qb = DatastoreQueryBuilder() qb.build_query(where=qb.equals_geom(qb.RA_GEOM_LOC,wkt,buf)) pqb = PostgresQueryBuilder(qb.get_query(), 'test') self.assertEquals(pqb.get_query(),"SELECT id,doc FROM test WHERE ST_Equals(geom_loc,ST_Buffer(ST_GeomFromEWKT('SRID=4326;POINT(-72.0 40.0)'), 0.100000))")