Add tests for the OverviewsApi
This commit is contained in:
parent
87bffb9657
commit
532654eea8
54
test/integration/overviews-api.js
Normal file
54
test/integration/overviews-api.js
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
require('../support/test_helper');
|
||||||
|
|
||||||
|
var assert = require('assert');
|
||||||
|
|
||||||
|
var RedisPool = require('redis-mpool');
|
||||||
|
var cartodbRedis = require('cartodb-redis');
|
||||||
|
|
||||||
|
var PgConnection = require('../../lib/cartodb/backends/pg_connection');
|
||||||
|
var PgQueryRunner = require('../../lib/cartodb/backends/pg_query_runner');
|
||||||
|
var QueryTablesApi = require('../../lib/cartodb/api/query_tables_api');
|
||||||
|
var OverviewsApi = require('../../lib/cartodb/api/overviews_api');
|
||||||
|
|
||||||
|
|
||||||
|
describe('OverviewsApi', function() {
|
||||||
|
|
||||||
|
var queryTablesApi, overviewsApi;
|
||||||
|
|
||||||
|
before(function() {
|
||||||
|
var redisPool = new RedisPool(global.environment.redis);
|
||||||
|
var metadataBackend = cartodbRedis({pool: redisPool});
|
||||||
|
var pgConnection = new PgConnection(metadataBackend);
|
||||||
|
var pgQueryRunner = new PgQueryRunner(pgConnection);
|
||||||
|
queryTablesApi = new QueryTablesApi(pgQueryRunner);
|
||||||
|
overviewsApi = new OverviewsApi(queryTablesApi);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return an empty relation for tables that have no overviews', function(done) {
|
||||||
|
var query = 'select * from test_table';
|
||||||
|
overviewsApi.getOverviewsMetadata('localhost', query, function(err, result) {
|
||||||
|
assert.ok(!err, err);
|
||||||
|
|
||||||
|
assert.deepEqual(result, {});
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return overviews metadata', function(done) {
|
||||||
|
var query = 'select * from test_table_overviews';
|
||||||
|
overviewsApi.getOverviewsMetadata('localhost', query, function(err, result) {
|
||||||
|
assert.ok(!err, err);
|
||||||
|
|
||||||
|
assert.deepEqual(result, {
|
||||||
|
'public.test_table_overviews': {
|
||||||
|
1: { table: 'test_table_overviews_ov1' },
|
||||||
|
2: { table: 'test_table_overviews_ov2' }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
@ -3,7 +3,7 @@ CREATE OR REPLACE FUNCTION CDB_Overviews(table_name text)
|
|||||||
RETURNS TABLE(z integer, overview_table text)
|
RETURNS TABLE(z integer, overview_table text)
|
||||||
AS $$
|
AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
IF table_name = 'test_table_overviews' THEN
|
IF table_name = 'public.test_table_overviews' THEN
|
||||||
RETURN QUERY
|
RETURN QUERY
|
||||||
SELECT 1 AS z, 'test_table_overviews_ov1'::text AS overviw_table
|
SELECT 1 AS z, 'test_table_overviews_ov1'::text AS overviw_table
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
@ -238,3 +238,81 @@ CREATE INDEX test_big_poly_the_geom_webmercator_idx ON test_big_poly USING gist
|
|||||||
|
|
||||||
GRANT ALL ON TABLE test_big_poly TO :TESTUSER;
|
GRANT ALL ON TABLE test_big_poly TO :TESTUSER;
|
||||||
GRANT SELECT ON TABLE test_big_poly TO :PUBLICUSER;
|
GRANT SELECT ON TABLE test_big_poly TO :PUBLICUSER;
|
||||||
|
|
||||||
|
-- table with overviews
|
||||||
|
|
||||||
|
CREATE TABLE test_table_overviews (
|
||||||
|
updated_at timestamp without time zone DEFAULT now(),
|
||||||
|
created_at timestamp without time zone DEFAULT now(),
|
||||||
|
cartodb_id integer NOT NULL,
|
||||||
|
name character varying,
|
||||||
|
address character varying,
|
||||||
|
the_geom geometry,
|
||||||
|
the_geom_webmercator geometry,
|
||||||
|
CONSTRAINT enforce_dims_the_geom CHECK ((st_ndims(the_geom) = 2)),
|
||||||
|
CONSTRAINT enforce_dims_the_geom_webmercator CHECK ((st_ndims(the_geom_webmercator) = 2)),
|
||||||
|
CONSTRAINT enforce_geotype_the_geom CHECK (((geometrytype(the_geom) = 'POINT'::text) OR (the_geom IS NULL))),
|
||||||
|
CONSTRAINT enforce_geotype_the_geom_webmercator CHECK (((geometrytype(the_geom_webmercator) = 'POINT'::text) OR (the_geom_webmercator IS NULL))),
|
||||||
|
CONSTRAINT enforce_srid_the_geom CHECK ((st_srid(the_geom) = 4326)),
|
||||||
|
CONSTRAINT enforce_srid_the_geom_webmercator CHECK ((st_srid(the_geom_webmercator) = 3857))
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE SEQUENCE test_table_overviews_cartodb_id_seq
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE test_table_overviews_cartodb_id_seq OWNED BY test_table_overviews.cartodb_id;
|
||||||
|
|
||||||
|
SELECT pg_catalog.setval('test_table_overviews_cartodb_id_seq', 60, true);
|
||||||
|
|
||||||
|
ALTER TABLE test_table_overviews ALTER COLUMN cartodb_id SET DEFAULT nextval('test_table_overviews_cartodb_id_seq'::regclass);
|
||||||
|
|
||||||
|
INSERT INTO test_table_overviews VALUES
|
||||||
|
('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.314252', 1, 'Hawai', 'Calle de Pérez Galdós 9, Madrid, Spain', '0101000020E6100000A6B73F170D990DC064E8D84125364440', '0101000020110F000076491621312319C122D4663F1DCC5241'),
|
||||||
|
('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.319101', 2, 'El Estocolmo', 'Calle de la Palma 72, Madrid, Spain', '0101000020E6100000C90567F0F7AB0DC0AB07CC43A6364440', '0101000020110F0000C4356B29423319C15DD1092DADCC5241'),
|
||||||
|
('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.324', 3, 'El Rey del Tallarín', 'Plaza Conde de Toreno 2, Madrid, Spain', '0101000020E610000021C8410933AD0DC0CB0EF10F5B364440', '0101000020110F000053E71AC64D3419C10F664E4659CC5241'),
|
||||||
|
('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.329509', 4, 'El Lacón', 'Manuel Fernández y González 8, Madrid, Spain', '0101000020E6100000BC5983F755990DC07D923B6C22354440', '0101000020110F00005DACDB056F2319C1EC41A980FCCA5241'),
|
||||||
|
('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.334931', 5, 'El Pico', 'Calle Divino Pastor 12, Madrid, Spain', '0101000020E61000003B6D8D08C6A10DC0371B2B31CF364440', '0101000020110F00005F716E91992A19C17DAAA4D6DACC5241');
|
||||||
|
|
||||||
|
ALTER TABLE ONLY test_table_overviews ADD CONSTRAINT test_table_overviews_pkey PRIMARY KEY (cartodb_id);
|
||||||
|
|
||||||
|
CREATE INDEX test_table_overviews_the_geom_idx ON test_table_overviews USING gist (the_geom);
|
||||||
|
CREATE INDEX test_table_overviews_the_geom_webmercator_idx ON test_table_overviews USING gist (the_geom_webmercator);
|
||||||
|
|
||||||
|
GRANT ALL ON TABLE test_table_overviews TO :TESTUSER;
|
||||||
|
GRANT SELECT ON TABLE test_table_overviews TO :PUBLICUSER;
|
||||||
|
|
||||||
|
CREATE TABLE test_table_overviews_ov1 (
|
||||||
|
updated_at timestamp without time zone DEFAULT now(),
|
||||||
|
created_at timestamp without time zone DEFAULT now(),
|
||||||
|
cartodb_id integer NOT NULL,
|
||||||
|
name character varying,
|
||||||
|
address character varying,
|
||||||
|
the_geom geometry,
|
||||||
|
the_geom_webmercator geometry,
|
||||||
|
CONSTRAINT enforce_dims_the_geom CHECK ((st_ndims(the_geom) = 2)),
|
||||||
|
CONSTRAINT enforce_dims_the_geom_webmercator CHECK ((st_ndims(the_geom_webmercator) = 2)),
|
||||||
|
CONSTRAINT enforce_geotype_the_geom CHECK (((geometrytype(the_geom) = 'POINT'::text) OR (the_geom IS NULL))),
|
||||||
|
CONSTRAINT enforce_geotype_the_geom_webmercator CHECK (((geometrytype(the_geom_webmercator) = 'POINT'::text) OR (the_geom_webmercator IS NULL))),
|
||||||
|
CONSTRAINT enforce_srid_the_geom CHECK ((st_srid(the_geom) = 4326)),
|
||||||
|
CONSTRAINT enforce_srid_the_geom_webmercator CHECK ((st_srid(the_geom_webmercator) = 3857))
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE test_table_overviews_ov2 (
|
||||||
|
updated_at timestamp without time zone DEFAULT now(),
|
||||||
|
created_at timestamp without time zone DEFAULT now(),
|
||||||
|
cartodb_id integer NOT NULL,
|
||||||
|
name character varying,
|
||||||
|
address character varying,
|
||||||
|
the_geom geometry,
|
||||||
|
the_geom_webmercator geometry,
|
||||||
|
CONSTRAINT enforce_dims_the_geom CHECK ((st_ndims(the_geom) = 2)),
|
||||||
|
CONSTRAINT enforce_dims_the_geom_webmercator CHECK ((st_ndims(the_geom_webmercator) = 2)),
|
||||||
|
CONSTRAINT enforce_geotype_the_geom CHECK (((geometrytype(the_geom) = 'POINT'::text) OR (the_geom IS NULL))),
|
||||||
|
CONSTRAINT enforce_geotype_the_geom_webmercator CHECK (((geometrytype(the_geom_webmercator) = 'POINT'::text) OR (the_geom_webmercator IS NULL))),
|
||||||
|
CONSTRAINT enforce_srid_the_geom CHECK ((st_srid(the_geom) = 4326)),
|
||||||
|
CONSTRAINT enforce_srid_the_geom_webmercator CHECK ((st_srid(the_geom_webmercator) = 3857))
|
||||||
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user