aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorsadbeast <sadbeast@sadbeast.com>2024-06-23 15:36:59 -0700
committersadbeast <sadbeast@sadbeast.com>2024-07-13 21:58:23 -0700
commit8d018d996c1eddb882dc64ebbd228bb0135944f3 (patch)
treed01956546a77dbae33357c9a5d174f511ac9b282 /test
downloadteamdraft-main.tar.gz
teamdraft-main.tar.bz2
Diffstat (limited to 'test')
-rw-r--r--test/00-setup.sql10
-rw-r--r--test/drafts.sql21
-rw-r--r--test/functions.sql38
-rw-r--r--test/leagues.sql21
-rw-r--r--test/permissions.sql25
-rw-r--r--test/users.sql14
6 files changed, 129 insertions, 0 deletions
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;