From b3c8c86561c04bcd7eca36829242246b2bf86363 Mon Sep 17 00:00:00 2001 From: Carla Iriberri Date: Thu, 30 Jun 2016 17:28:20 +0200 Subject: [PATCH] Add client tests for augment table and get table --- .../95_data_observatory_tables_test.out | 67 +++++++++++++++++++ .../sql/95_data_observatory_tables_test.sql | 59 ++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 client/test/expected/95_data_observatory_tables_test.out create mode 100644 client/test/sql/95_data_observatory_tables_test.sql diff --git a/client/test/expected/95_data_observatory_tables_test.out b/client/test/expected/95_data_observatory_tables_test.out new file mode 100644 index 0000000..faf311f --- /dev/null +++ b/client/test/expected/95_data_observatory_tables_test.out @@ -0,0 +1,67 @@ +-- Add to the search path the schema +SET search_path TO public,cartodb,cdb_dataservices_client; +CREATE TABLE my_table(cartodb_id int); +INSERT INTO my_table (cartodb_id) VALUES (1); +-- Mock the server functions +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_ConnectUserTable(username text, orgname text, user_db_role text, input_schema text, dbname text, table_name text) +RETURNS cdb_dataservices_client.ds_fdw_metadata AS $$ +BEGIN + RETURN ('dummy_schema'::text, 'dummy_table'::text, 'dummy_server'::text); +END; +$$ LANGUAGE 'plpgsql'; +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetReturnMetadata(username text, orgname text, function_name text, params json) +RETURNS cdb_dataservices_client.ds_return_metadata AS $$ +BEGIN + RETURN (Array['total_pop'], Array['double precision']); +END; +$$ LANGUAGE 'plpgsql'; +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_FetchJoinFdwTableData(username text, orgname text, table_schema text, table_name text, function_name text, params json) +RETURNS RECORD AS $$ +BEGIN + RETURN (23.4::double precision, 1::int); +END; +$$ LANGUAGE 'plpgsql'; +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_DisconnectUserTable(username text, orgname text, table_schema text, table_name text, servername text) +RETURNS boolean AS $$ +BEGIN + RETURN true; +END; +$$ LANGUAGE 'plpgsql'; +-- Augment a table with the total_pop column +SELECT cdb_dataservices_client._OBS_AugmentTable('my_table', 'dummy', '{"dummy":"dummy"}'::json); + _obs_augmenttable +------------------- + t +(1 row) + +-- The results of the table should return the mocked value of 23.4 in the total_pop column +SELECT * FROM my_table; + cartodb_id | total_pop +------------+----------- + 1 | 23.4 +(1 row) + +-- Mock again the function for it to return a different value now +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_FetchJoinFdwTableData(username text, orgname text, table_schema text, table_name text, function_name text, params json) +RETURNS RECORD AS $$ +BEGIN + RETURN (577777.4::double precision, 1::int); +END; +$$ LANGUAGE 'plpgsql'; +-- Augment a new table with total_pop +SELECT cdb_dataservices_client._OBS_GetTable('my_table', 'my_table_new', 'dummy', '{"dummy":"dummy"}'::json); + _obs_gettable +--------------- + t +(1 row) + +-- Check that the table contains the new value for total_pop and not the value already existent in the table +SELECT * FROM my_table_new; + total_pop | cartodb_id +-----------+------------ + 577777.4 | 1 +(1 row) + +-- Clean tables +DROP TABLE my_table; +DROP TABLE my_table_new; diff --git a/client/test/sql/95_data_observatory_tables_test.sql b/client/test/sql/95_data_observatory_tables_test.sql new file mode 100644 index 0000000..717aea9 --- /dev/null +++ b/client/test/sql/95_data_observatory_tables_test.sql @@ -0,0 +1,59 @@ +-- Add to the search path the schema +SET search_path TO public,cartodb,cdb_dataservices_client; + +CREATE TABLE my_table(cartodb_id int); + +INSERT INTO my_table (cartodb_id) VALUES (1); + +-- Mock the server functions +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_ConnectUserTable(username text, orgname text, user_db_role text, input_schema text, dbname text, table_name text) +RETURNS cdb_dataservices_client.ds_fdw_metadata AS $$ +BEGIN + RETURN ('dummy_schema'::text, 'dummy_table'::text, 'dummy_server'::text); +END; +$$ LANGUAGE 'plpgsql'; + +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_GetReturnMetadata(username text, orgname text, function_name text, params json) +RETURNS cdb_dataservices_client.ds_return_metadata AS $$ +BEGIN + RETURN (Array['total_pop'], Array['double precision']); +END; +$$ LANGUAGE 'plpgsql'; + +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_FetchJoinFdwTableData(username text, orgname text, table_schema text, table_name text, function_name text, params json) +RETURNS RECORD AS $$ +BEGIN + RETURN (23.4::double precision, 1::int); +END; +$$ LANGUAGE 'plpgsql'; + +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_DisconnectUserTable(username text, orgname text, table_schema text, table_name text, servername text) +RETURNS boolean AS $$ +BEGIN + RETURN true; +END; +$$ LANGUAGE 'plpgsql'; + +-- Augment a table with the total_pop column +SELECT cdb_dataservices_client._OBS_AugmentTable('my_table', 'dummy', '{"dummy":"dummy"}'::json); + +-- The results of the table should return the mocked value of 23.4 in the total_pop column +SELECT * FROM my_table; + +-- Mock again the function for it to return a different value now +CREATE OR REPLACE FUNCTION cdb_dataservices_server._OBS_FetchJoinFdwTableData(username text, orgname text, table_schema text, table_name text, function_name text, params json) +RETURNS RECORD AS $$ +BEGIN + RETURN (577777.4::double precision, 1::int); +END; +$$ LANGUAGE 'plpgsql'; + +-- Augment a new table with total_pop +SELECT cdb_dataservices_client._OBS_GetTable('my_table', 'my_table_new', 'dummy', '{"dummy":"dummy"}'::json); + +-- Check that the table contains the new value for total_pop and not the value already existent in the table +SELECT * FROM my_table_new; + +-- Clean tables +DROP TABLE my_table; +DROP TABLE my_table_new; \ No newline at end of file