From 8d018d996c1eddb882dc64ebbd228bb0135944f3 Mon Sep 17 00:00:00 2001 From: sadbeast Date: Sun, 23 Jun 2024 15:36:59 -0700 Subject: wtf --- test/00-setup.sql | 10 ++++++++++ test/drafts.sql | 21 +++++++++++++++++++++ test/functions.sql | 38 ++++++++++++++++++++++++++++++++++++++ test/leagues.sql | 21 +++++++++++++++++++++ test/permissions.sql | 25 +++++++++++++++++++++++++ test/users.sql | 14 ++++++++++++++ 6 files changed, 129 insertions(+) create mode 100644 test/00-setup.sql create mode 100644 test/drafts.sql create mode 100644 test/functions.sql create mode 100644 test/leagues.sql create mode 100644 test/permissions.sql create mode 100644 test/users.sql (limited to 'test') diff --git a/test/00-setup.sql b/test/00-setup.sql new file mode 100644 index 0000000..93ceb03 --- /dev/null +++ b/test/00-setup.sql @@ -0,0 +1,10 @@ +SET client_min_messages TO WARNING; +CREATE EXTENSION IF NOT EXISTS pgtap; + +BEGIN; +SELECT plan(1); + +SELECT has_schema('teamdraft'); + +SELECT * FROM finish(); +ROLLBACK; diff --git a/test/drafts.sql b/test/drafts.sql new file mode 100644 index 0000000..41d2b5b --- /dev/null +++ b/test/drafts.sql @@ -0,0 +1,21 @@ +BEGIN; +SELECT plan(4); + +SELECT has_table('drafts'); + +SELECT columns_are('leagues', ARRAY[ 'league_id', 'name', 'user_id', 'modified_at', 'created_at']); + +SELECT has_sequence('leagues_league_id_seq'); + +SELECT has_index('teamdraft', 'leagues', 'leagues_pk', 'league_id'); + +\set new_user_id 5 +INSERT INTO users(user_id, username) OVERRIDING SYSTEM VALUE VALUES (5, 'test'); +\set new_league_id 5 +INSERT INTO leagues(league_id, name, user_id) OVERRIDING SYSTEM VALUE VALUES (:new_league_id, 'test league', :new_user_id); + +CALL new_league_season(:new_league_id); + +SELECT * FROM finish(); +ROLLBACK; + diff --git a/test/functions.sql b/test/functions.sql new file mode 100644 index 0000000..e7dbce2 --- /dev/null +++ b/test/functions.sql @@ -0,0 +1,38 @@ +BEGIN; +SELECT plan(10); + +SELECT has_function('current_season'); +SELECT function_lang_is('current_season', 'sql'); +SELECT function_returns('current_season', 'integer'); + +INSERT INTO seasons (started_at, ended_at) VALUES (NOW(), NOW() + interval '3 months'); +SELECT results_eq( + 'SELECT current_season()', + 'SELECT 1', + 'should select a season' +); + +SELECT has_function('category_score'); +SELECT function_lang_is('category_score', 'plpgsql'); +SELECT function_returns('category_score', 'smallint'); + +SELECT results_eq( + $$SELECT category_score('win')$$, + 'SELECT 1::smallint' +); + +SELECT results_eq( + 'SELECT category_score(''superbowl''),' + || 'category_score(''conference'')', + 'SELECT 10::smallint, 10::smallint' +); + +SELECT results_eq( + 'SELECT category_score(''playoffs''), ' + || 'category_score(''divisional''),' + || 'category_score(''champion'')', + 'SELECT 5::smallint, 5::smallint, 5::smallint' +); + +SELECT * FROM finish(); +ROLLBACK; diff --git a/test/leagues.sql b/test/leagues.sql new file mode 100644 index 0000000..fc7c465 --- /dev/null +++ b/test/leagues.sql @@ -0,0 +1,21 @@ +BEGIN; +SELECT plan(4); + +SELECT has_table('leagues'); + +SELECT columns_are('leagues', ARRAY[ 'league_id', 'name', 'user_id', 'modified_at', 'created_at']); + +SELECT has_sequence('leagues_league_id_seq'); + +SELECT has_index('teamdraft', 'leagues', 'leagues_pk', 'league_id'); + +\set new_user_id 5 +INSERT INTO users(user_id, username) OVERRIDING SYSTEM VALUE VALUES (5, 'test'); +\set new_league_id 5 +INSERT INTO leagues(league_id, name, user_id) OVERRIDING SYSTEM VALUE VALUES (:new_league_id, 'test league', :new_user_id); + +CALL new_league_season(:new_league_id); + +SELECT * FROM finish(); +ROLLBACK; + diff --git a/test/permissions.sql b/test/permissions.sql new file mode 100644 index 0000000..a848a74 --- /dev/null +++ b/test/permissions.sql @@ -0,0 +1,25 @@ +/* CREATE EXTENSION IF NOT EXISTS pgtap; */ +BEGIN; +SELECT plan(9); + +SELECT has_group('dml'); +SELECT has_group('ddl'); +SELECT has_group('read_only'); + +SELECT has_user('teamdraft'); +SELECT database_privs_are( + 'teamdraft', 'teamdraft', ARRAY['CONNECT', 'TEMPORARY', 'CREATE'] +); + +SELECT has_user('teamdraft_website'); +SELECT database_privs_are( + 'teamdraft', 'teamdraft_website', ARRAY['CONNECT', 'TEMPORARY'] +); + +SELECT has_user('teamdraft_ro'); +SELECT database_privs_are( + 'teamdraft', 'teamdraft_ro', ARRAY['CONNECT', 'TEMPORARY'] +); + +SELECT * FROM finish(); +ROLLBACK; diff --git a/test/users.sql b/test/users.sql new file mode 100644 index 0000000..ec6f046 --- /dev/null +++ b/test/users.sql @@ -0,0 +1,14 @@ +BEGIN; +SELECT plan(7); + +SELECT has_table('users'); +SELECT columns_are('users', ARRAY[ 'user_id', 'username', 'password', 'name', 'modified_at', 'created_at']); +SELECT has_sequence('users_user_id_seq'); +SELECT has_index('teamdraft', 'users', 'users_pk', 'user_id'); + +SELECT has_table('sessions'); +SELECT columns_are('sessions', ARRAY[ 'session_id', 'user_id', 'expires', 'modified', 'created']); +SELECT has_index('teamdraft', 'sessions', 'sessions_pkey', 'session_id'); + +SELECT * FROM finish(); +ROLLBACK; -- cgit v1.2.3