From b36a209660138a205c082d26b01cc08d55581cf2 Mon Sep 17 00:00:00 2001 From: fpellet Date: Fri, 13 Dec 2019 09:41:00 +0100 Subject: [PATCH 01/11] Initialize database --- postgres/docker-compose.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 postgres/docker-compose.yml diff --git a/postgres/docker-compose.yml b/postgres/docker-compose.yml new file mode 100644 index 00000000..efcd13fc --- /dev/null +++ b/postgres/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3' + +services: + database: + image: postgres:12.1 + environment: + - DB_HOST=localhost + - DB_PASSWORD=admin + - PGHOST=localhost + - PGDATABASE=postgres + - PGPASSWORD=admin + - PGUSER=postgres + - POSTGRES_PASSWORD=admin + ports: + - "5432:5432" + volumes: + - .:/app/:z + + admin: + image: adminer + links: + - database + ports: + - "8081:8080" From 630fe119ce796469e1784a99fe31b0f09e615b3e Mon Sep 17 00:00:00 2001 From: fpellet Date: Fri, 13 Dec 2019 09:41:36 +0100 Subject: [PATCH 02/11] Test pgunit --- postgres/run_tests.sql | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 postgres/run_tests.sql diff --git a/postgres/run_tests.sql b/postgres/run_tests.sql new file mode 100644 index 00000000..b3aca573 --- /dev/null +++ b/postgres/run_tests.sql @@ -0,0 +1,7 @@ +create or replace function test_case_can_create_item() returns void as $$ +begin + perform test_assertTrue('hello', true); +end; +$$ language plpgsql; + +select * from test_run_all(); \ No newline at end of file From 5803be91cafc533ad7ac4d2348fd4fdc857b1a33 Mon Sep 17 00:00:00 2001 From: fpellet Date: Fri, 13 Dec 2019 09:42:13 +0100 Subject: [PATCH 03/11] translate item of plsql --- postgres/item.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 postgres/item.sql diff --git a/postgres/item.sql b/postgres/item.sql new file mode 100644 index 00000000..1b59331e --- /dev/null +++ b/postgres/item.sql @@ -0,0 +1,8 @@ +DROP TABLE IF EXISTS item; +CREATE TABLE item + ( + name character varying(100) NOT NULL, + sell_in numeric(6) NOT NULL, + quality numeric(6) NOT NULL + ); + From a7c0d1dcbf44668f28e77724f2753603d2f2dc31 Mon Sep 17 00:00:00 2001 From: fpellet Date: Fri, 13 Dec 2019 09:52:12 +0100 Subject: [PATCH 04/11] translate new_item of plsql --- postgres/new_item.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 postgres/new_item.sql diff --git a/postgres/new_item.sql b/postgres/new_item.sql new file mode 100644 index 00000000..e78d712f --- /dev/null +++ b/postgres/new_item.sql @@ -0,0 +1,12 @@ +DROP PROCEDURE IF EXISTS new_item; +CREATE PROCEDURE new_item( + name item.name%TYPE, + sell_in item.sell_in%TYPE, + quality item.quality%TYPE + ) +LANGUAGE plpgsql +AS $$ +BEGIN + INSERT INTO item (name, sell_in, quality) VALUES (name, sell_in, quality); +END; +$$; From b32ab996496297312fe6e3a88892ca0fabd88d3c Mon Sep 17 00:00:00 2001 From: fpellet Date: Fri, 13 Dec 2019 10:17:04 +0100 Subject: [PATCH 05/11] translate update_quality of plsql --- postgres/update_quality.sql | 72 +++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 postgres/update_quality.sql diff --git a/postgres/update_quality.sql b/postgres/update_quality.sql new file mode 100644 index 00000000..e19d6863 --- /dev/null +++ b/postgres/update_quality.sql @@ -0,0 +1,72 @@ +CREATE OR REPLACE PROCEDURE update_quality() +LANGUAGE plpgsql +AS $$ +DECLARE + c_items CURSOR FOR + SELECT name, sell_in, quality FROM item FOR UPDATE; + l_item RECORD; + l_name item.name%TYPE; + l_sell_in item.sell_in%TYPE; + l_quality item.quality%TYPE; +BEGIN + OPEN c_items; + LOOP + FETCH c_items INTO l_item; + EXIT WHEN NOT FOUND; + + l_name := l_item.name; + l_sell_in := l_item.sell_in; + l_quality := l_item.quality; + + IF l_name <> 'Aged Brie' AND l_name <> 'Backstage passes to a TAFKAL80ETC concert' THEN + IF l_quality > 0 THEN + IF l_name <> 'Sulfuras, Hand of Ragnaros' THEN + l_quality := l_quality - 1; + END IF; + END IF; + ELSE + IF (l_quality < 50) THEN + l_quality := l_quality + 1; + IF l_name = 'Backstage passes to a TAFKAL80ETC concert' THEN + IF l_sell_in < 11 THEN + IF l_quality < 50 THEN + l_quality := l_quality + 1; + END IF; + END IF; + IF l_sell_in < 6 THEN + IF l_quality < 50 THEN + l_quality := l_quality + 1; + END IF; + END IF; + END IF; + END IF; + END IF; + + IF l_name <> 'Sulfuras, Hand of Ragnaros' THEN + l_sell_in := l_sell_in - 1; + END IF; + + IF l_sell_in < 0 THEN + IF l_name <> 'Aged Brie' THEN + IF l_name <> 'Backstage passes to a TAFKAL80ETC concert' THEN + IF l_quality > 0 THEN + IF l_name <> 'Sulfuras, Hand of Ragnaros' THEN + l_quality := l_quality - 1; + END IF; + END IF; + ELSE + l_quality := l_quality - l_quality; + END IF; + ELSE + IF l_quality < 50 THEN + l_quality := l_quality + 1; + END IF; + END IF; + END IF; + + UPDATE item + SET name = l_name, sell_in = l_sell_in, quality = l_quality WHERE CURRENT OF c_items; + END LOOP; + CLOSE c_items; +END; +$$; From be0222311ebcfd09eb1cfb03932fd38af9c3f165 Mon Sep 17 00:00:00 2001 From: fpellet Date: Mon, 23 Dec 2019 11:40:15 +0100 Subject: [PATCH 06/11] Add custom assertions --- postgres/asserts.sql | 59 +++++++++++++++++++++++ postgres/asserts_tests.sql | 95 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 postgres/asserts.sql create mode 100644 postgres/asserts_tests.sql diff --git a/postgres/asserts.sql b/postgres/asserts.sql new file mode 100644 index 00000000..d51b5b6a --- /dev/null +++ b/postgres/asserts.sql @@ -0,0 +1,59 @@ +CREATE OR REPLACE FUNCTION test_assertEquals(message TEXT, expected ANYELEMENT, result ANYELEMENT) RETURNS VOID AS $$ +BEGIN + IF expected = result THEN + null; + ELSE + raise exception '%: expect ''%'' instead of ''%''', message, expected, result using errcode = 'triggered_action_exception'; + END IF; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_assertEquals(expected ANYELEMENT, result ANYELEMENT) RETURNS VOID AS $$ +BEGIN + perform test_assertEquals('assertEquals failure', expected, result); +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_assertEqualsArray(expected VARCHAR[], result VARCHAR[]) RETURNS VOID AS $$ +DECLARE + line RECORD; + error_message text; +BEGIN + IF expected = result THEN + null; + ELSE + error_message := 'assertEqualsArray failure:'; + FOR line IN SELECT expected_item, result_item FROM (SELECT unnest(expected) AS expected_item, unnest(result) AS result_item) x + LOOP + IF line.expected_item = line.result_item THEN + error_message := CONCAT(error_message, E'\n', '= ', line.expected_item); + ELSE + error_message := CONCAT(error_message, E'\n', '- ', line.expected_item); + error_message := CONCAT(error_message, E'\n', '+ ', line.result_item); + END IF; + END LOOP; + + raise exception '%', error_message using errcode = 'triggered_action_exception'; + END IF; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_assertEquals_golden_master(expected VARCHAR[], result VARCHAR[]) RETURNS VOID as $$ +DECLARE + golden TEXT; + line VARCHAR; +BEGIN + perform test_assertEqualsArray(expected, result); +EXCEPTION + WHEN triggered_action_exception THEN + golden := CONCAT(SQLERRM, E'\n\n', E'For update, copy:\n'); + golden := CONCAT(golden, E'expected := ARRAY['); + FOREACH line IN ARRAY result + LOOP + golden := CONCAT(golden, E'\n', '''', line, ''','); + END LOOP; + golden := CONCAT(golden, E'\n', '];'); + + raise exception '%', golden using errcode = 'triggered_action_exception'; +END; +$$ LANGUAGE plpgsql; diff --git a/postgres/asserts_tests.sql b/postgres/asserts_tests.sql new file mode 100644 index 00000000..05cd77f1 --- /dev/null +++ b/postgres/asserts_tests.sql @@ -0,0 +1,95 @@ +CREATE OR REPLACE FUNCTION test_case_assertEquals_numeric_should_fail_if_not_equals() RETURNS VOID AS $$ +DECLARE + expected_message VARCHAR; + error_message VARCHAR; + is_equals BOOLEAN; +BEGIN + BEGIN + perform test_assertEquals(7, 5); + EXCEPTION + WHEN triggered_action_exception THEN + expected_message := 'assertEquals failure: expect ''7'' instead of ''5'''; + error_message := SQLERRM; + perform test_assertTrue(format('Expect message ''%s'' instead of ''%s'' ', expected_message, error_message), error_message = expected_message); + END; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_case_assertEquals_numeric_should_success_if_equals() RETURNS VOID AS $$ +BEGIN + perform test_assertEquals(7, 7); +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_case_assertEquals_text_should_fail_if_not_equals() RETURNS VOID AS $$ +DECLARE + expected_message VARCHAR; + error_message VARCHAR; + is_equals BOOLEAN; +BEGIN + BEGIN + perform test_assertEquals('hello'::VARCHAR, 'olleh'); + EXCEPTION + WHEN triggered_action_exception THEN + expected_message := 'assertEquals failure: expect ''hello'' instead of ''olleh'''; + error_message := SQLERRM; + perform test_assertTrue(format('Expect message ''%s'' instead of ''%s'' ', expected_message, error_message), error_message = expected_message); + END; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_case_assertEquals_text_should_success_if_equals() RETURNS VOID AS $$ +BEGIN + perform test_assertEquals('hello'::VARCHAR, 'hello'); +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_case_assertEquals_should_display_custom_message_if_defined() RETURNS VOID AS $$ +DECLARE + expected_message VARCHAR; + error_message VARCHAR; + is_equals BOOLEAN; +BEGIN + BEGIN + perform test_assertEquals('Test with custom message', 'hello'::VARCHAR, 'olleh'); + EXCEPTION + WHEN triggered_action_exception THEN + expected_message := 'Test with custom message: expect ''hello'' instead of ''olleh'''; + error_message := SQLERRM; + perform test_assertTrue(format('Expect message ''%s'' instead of ''%s'' ', expected_message, error_message), error_message = expected_message); + END; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_case_assertEqualsArray_should_success_if_equals() RETURNS VOID AS $$ +BEGIN + perform test_assertEqualsArray(ARRAY['1','2'], ARRAY['1','2']); + perform test_assertEqualsArray(ARRAY['a','b'], ARRAY['a','b']); +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_case_assertEqualsArray_should_display_diff_if_failed() RETURNS VOID AS $$ +DECLARE + expected_message VARCHAR; + error_message VARCHAR; + is_equals BOOLEAN; +BEGIN + BEGIN + perform test_assertEqualsArray(ARRAY['1','2','3','4'], ARRAY['1','2','4','4']); + EXCEPTION + WHEN triggered_action_exception THEN + expected_message := CONCAT( + 'assertEqualsArray failure:', E'\n', + '= 1', E'\n', + '= 2', E'\n', + '- 3', E'\n', + '+ 4', E'\n', + '= 4' + ); + error_message := SQLERRM; + perform test_assertTrue(format('Expect message ''%s'' instead of ''%s'' ', expected_message, error_message), error_message = expected_message); + END; +END; +$$ LANGUAGE plpgsql; + +SELECT * FROM test_run_all(); From 6b7c9e5de9a2df70290b1efd79e2f6e41447ed1b Mon Sep 17 00:00:00 2001 From: fpellet Date: Fri, 13 Dec 2019 10:48:51 +0100 Subject: [PATCH 07/11] Add test sample --- postgres/run_tests.sql | 102 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 96 insertions(+), 6 deletions(-) diff --git a/postgres/run_tests.sql b/postgres/run_tests.sql index b3aca573..fedb6984 100644 --- a/postgres/run_tests.sql +++ b/postgres/run_tests.sql @@ -1,7 +1,97 @@ -create or replace function test_case_can_create_item() returns void as $$ -begin - perform test_assertTrue('hello', true); -end; -$$ language plpgsql; +CREATE OR REPLACE FUNCTION test_case_update_quality() RETURNS void AS $$ +DECLARE + sell_in_result item.sell_in%TYPE; + quality_result item.quality%TYPE; +BEGIN + TRUNCATE TABLE item; + CALL new_item('Aged Brie', 4, 6); -select * from test_run_all(); \ No newline at end of file + CALL update_quality(); + + SELECT quality, sell_in FROM item INTO quality_result, sell_in_result; + perform test_assertEquals('Quality should increase', 7.0, quality_result); + perform test_assertEquals('Sell in should decrease', 3.0, sell_in_result); +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION format_day(day INTEGER) RETURNS TEXT[] AS $$ +DECLARE + result TEXT[]; + item_result RECORD; +BEGIN + result := ARRAY[CONCAT('-------- day ', day, ' --------')]; + result := result || 'name, sellIn, quality'::TEXT; + + FOR item_result IN (SELECT name, sell_in, quality FROM item ORDER BY name ASC, sell_in ASC, quality ASC) + LOOP + result := result || format('%s, %s, %s', item_result.name, item_result.sell_in, item_result.quality); + END LOOP; + + RETURN result; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION test_case_update_quality_golden_master() RETURNS VOID AS $$ +DECLARE + sell_in_result item.sell_in%TYPE; + quality_result item.quality%TYPE; + days INTEGER; + result TEXT[]; + expected TEXT[]; + item_result RECORD; +BEGIN + -- given + TRUNCATE TABLE item; + CALL new_item('+5 Dexterity Vest', 10, 20); + CALL new_item('Aged Brie', 2, 0); + CALL new_item('Elixir of the Mongoose', 5, 7); + CALL new_item('Sulfuras, Hand of Ragnaros', 0, 80); + CALL new_item('Sulfuras, Hand of Ragnaros', -1, 80); + CALL new_item('Backstage passes to a TAFKAL80ETC concert', 15, 20); + CALL new_item('Backstage passes to a TAFKAL80ETC concert', 10, 49); + CALL new_item('Backstage passes to a TAFKAL80ETC concert', 5, 49); + -- this conjured item does not work properly yet ; + CALL new_item('Conjured Mana Cake', 3, 6); + days := 1; + + -- when + result := format_day(0); + FOR current_day IN 1 .. days + LOOP + CALL update_quality(); + + result := result || format_day(current_day); + END LOOP; + + -- then + expected := ARRAY[ + '-------- day 0 --------', + 'name, sellIn, quality', + '+5 Dexterity Vest, 10, 20', + 'Aged Brie, 2, 0', + 'Backstage passes to a TAFKAL80ETC concert, 5, 49', + 'Backstage passes to a TAFKAL80ETC concert, 10, 49', + 'Backstage passes to a TAFKAL80ETC concert, 15, 20', + 'Conjured Mana Cake, 3, 6', + 'Elixir of the Mongoose, 5, 7', + 'Sulfuras, Hand of Ragnaros, -1, 80', + 'Sulfuras, Hand of Ragnaros, 0, 80', + '-------- day 1 --------', + 'name, sellIn, quality', + '+5 Dexterity Vest, 9, 19', + 'Aged Brie, 1, 1', + 'Backstage passes to a TAFKAL80ETC concert, 4, 50', + 'Backstage passes to a TAFKAL80ETC concert, 9, 50', + 'Backstage passes to a TAFKAL80ETC concert, 14, 21', + 'Conjured Mana Cake, 2, 5', + 'Elixir of the Mongoose, 4, 6', + 'Sulfuras, Hand of Ragnaros, -1, 80', + 'Sulfuras, Hand of Ragnaros, 0, 80' + ]; + + perform test_assertEquals_golden_master(expected, result); +END; +$$ LANGUAGE plpgsql; + + +SELECT * FROM test_run_all(); \ No newline at end of file From 426f8da0eecf339d3baa32395b6e218c6f817d82 Mon Sep 17 00:00:00 2001 From: fpellet Date: Mon, 23 Dec 2019 11:43:19 +0100 Subject: [PATCH 08/11] Create custom dockerfile --- postgres/Dockerfile | 20 ++++++++++++++++++++ postgres/docker-compose.yml | 10 +--------- postgres/initializeDatabase.sh | 21 +++++++++++++++++++++ postgres/initializeDocker.sh | 26 ++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 postgres/Dockerfile create mode 100644 postgres/initializeDatabase.sh create mode 100644 postgres/initializeDocker.sh diff --git a/postgres/Dockerfile b/postgres/Dockerfile new file mode 100644 index 00000000..4c3cc347 --- /dev/null +++ b/postgres/Dockerfile @@ -0,0 +1,20 @@ +FROM postgres:12.1 +WORKDIR /app + +ENV PGHOST=localhost +ENV PGDATABASE=kata +ENV PGPASSWORD=admin +ENV PGUSER=postgres +ENV POSTGRES_PASSWORD=admin +ENV PGDATA /var/lib/postgresql/data_local + +RUN mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" && chmod 777 "$PGDATA" + +RUN apt-get update \ + && apt-get install -y --no-install-recommends ca-certificates wget \ + && rm -rf /var/lib/apt/lists/* + +ADD ./*.sh /app/ +ADD ./*.sql /app/ +RUN chmod +x ./*.sh \ + && ./initializeDocker.sh diff --git a/postgres/docker-compose.yml b/postgres/docker-compose.yml index efcd13fc..60183e85 100644 --- a/postgres/docker-compose.yml +++ b/postgres/docker-compose.yml @@ -2,15 +2,7 @@ version: '3' services: database: - image: postgres:12.1 - environment: - - DB_HOST=localhost - - DB_PASSWORD=admin - - PGHOST=localhost - - PGDATABASE=postgres - - PGPASSWORD=admin - - PGUSER=postgres - - POSTGRES_PASSWORD=admin + build: . ports: - "5432:5432" volumes: diff --git a/postgres/initializeDatabase.sh b/postgres/initializeDatabase.sh new file mode 100644 index 00000000..12b1d33d --- /dev/null +++ b/postgres/initializeDatabase.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +set -ex + +echo "Create database" +psql -d postgres -c 'DROP DATABASE IF EXISTS kata;' +psql -d postgres -c 'CREATE DATABASE kata;' +psql -d kata -c 'CREATE EXTENSION DBLINK;' + +echo "Initialize test framework" +wget https://raw.githubusercontent.com/adrianandrei-ca/pgunit/bc69dfc526ec3db55ff72af5d78eab55661502af/PGUnit.sql \ + && psql -d kata -f PGUnit.sql \ + && rm PGUnit.sql + +echo "Initialize custom asserts" +psql -d kata -f asserts.sql + +echo "Add current code" +psql -d kata -f item.sql +psql -d kata -f new_item.sql +psql -d kata -f update_quality.sql diff --git a/postgres/initializeDocker.sh b/postgres/initializeDocker.sh new file mode 100644 index 00000000..e962623a --- /dev/null +++ b/postgres/initializeDocker.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +wait_database() +{ + while : + do + (echo > /dev/tcp/127.0.0.1/5432) >/dev/null 2>&1 + result=$? + + if [[ $result -eq 0 ]]; then + break + fi + sleep 1 + done + return $result +} + +nohup docker-entrypoint.sh postgres > /dev/null 2>&1 & +wait_database + +set -ex + +./initializeDatabase.sh + +echo "Stop database" +disown %1 From a5dfb13dccfa2c13b87cdea0c05d2ce0fc7696ad Mon Sep 17 00:00:00 2001 From: fpellet Date: Mon, 23 Dec 2019 11:45:40 +0100 Subject: [PATCH 09/11] add readme --- postgres/readme.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 postgres/readme.md diff --git a/postgres/readme.md b/postgres/readme.md new file mode 100644 index 00000000..6421ed1c --- /dev/null +++ b/postgres/readme.md @@ -0,0 +1,10 @@ +## Requirement +Testing on postgres 12 +Unit test framework used : pgunit (https://github.com/adrianandrei-ca/pgunit) + +## Setup +Run `docker-compose up -d` to start, and `docker-compose exec database bash` to enter in container. +You can run `cat update_quality.sql run_tests.sql | psql -d kata -f -` + +## Kata +`update_quality.sql` contains code to refactor, and `run_tests.sql` contains test examples. From ca4721e93b5b1c0396ca8dcd80bb0d97f477c322 Mon Sep 17 00:00:00 2001 From: fpellet Date: Sat, 28 Dec 2019 16:13:44 +0100 Subject: [PATCH 10/11] Move to plpgsql/pgunit --- {postgres => plpgsql/pgunit}/Dockerfile | 0 {postgres => plpgsql/pgunit}/asserts.sql | 0 {postgres => plpgsql/pgunit}/asserts_tests.sql | 0 {postgres => plpgsql/pgunit}/docker-compose.yml | 0 {postgres => plpgsql/pgunit}/initializeDatabase.sh | 0 {postgres => plpgsql/pgunit}/initializeDocker.sh | 0 {postgres => plpgsql/pgunit}/item.sql | 0 {postgres => plpgsql/pgunit}/new_item.sql | 0 {postgres => plpgsql/pgunit}/readme.md | 0 {postgres => plpgsql/pgunit}/run_tests.sql | 0 {postgres => plpgsql/pgunit}/update_quality.sql | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename {postgres => plpgsql/pgunit}/Dockerfile (100%) rename {postgres => plpgsql/pgunit}/asserts.sql (100%) rename {postgres => plpgsql/pgunit}/asserts_tests.sql (100%) rename {postgres => plpgsql/pgunit}/docker-compose.yml (100%) rename {postgres => plpgsql/pgunit}/initializeDatabase.sh (100%) rename {postgres => plpgsql/pgunit}/initializeDocker.sh (100%) rename {postgres => plpgsql/pgunit}/item.sql (100%) rename {postgres => plpgsql/pgunit}/new_item.sql (100%) rename {postgres => plpgsql/pgunit}/readme.md (100%) rename {postgres => plpgsql/pgunit}/run_tests.sql (100%) rename {postgres => plpgsql/pgunit}/update_quality.sql (100%) diff --git a/postgres/Dockerfile b/plpgsql/pgunit/Dockerfile similarity index 100% rename from postgres/Dockerfile rename to plpgsql/pgunit/Dockerfile diff --git a/postgres/asserts.sql b/plpgsql/pgunit/asserts.sql similarity index 100% rename from postgres/asserts.sql rename to plpgsql/pgunit/asserts.sql diff --git a/postgres/asserts_tests.sql b/plpgsql/pgunit/asserts_tests.sql similarity index 100% rename from postgres/asserts_tests.sql rename to plpgsql/pgunit/asserts_tests.sql diff --git a/postgres/docker-compose.yml b/plpgsql/pgunit/docker-compose.yml similarity index 100% rename from postgres/docker-compose.yml rename to plpgsql/pgunit/docker-compose.yml diff --git a/postgres/initializeDatabase.sh b/plpgsql/pgunit/initializeDatabase.sh similarity index 100% rename from postgres/initializeDatabase.sh rename to plpgsql/pgunit/initializeDatabase.sh diff --git a/postgres/initializeDocker.sh b/plpgsql/pgunit/initializeDocker.sh similarity index 100% rename from postgres/initializeDocker.sh rename to plpgsql/pgunit/initializeDocker.sh diff --git a/postgres/item.sql b/plpgsql/pgunit/item.sql similarity index 100% rename from postgres/item.sql rename to plpgsql/pgunit/item.sql diff --git a/postgres/new_item.sql b/plpgsql/pgunit/new_item.sql similarity index 100% rename from postgres/new_item.sql rename to plpgsql/pgunit/new_item.sql diff --git a/postgres/readme.md b/plpgsql/pgunit/readme.md similarity index 100% rename from postgres/readme.md rename to plpgsql/pgunit/readme.md diff --git a/postgres/run_tests.sql b/plpgsql/pgunit/run_tests.sql similarity index 100% rename from postgres/run_tests.sql rename to plpgsql/pgunit/run_tests.sql diff --git a/postgres/update_quality.sql b/plpgsql/pgunit/update_quality.sql similarity index 100% rename from postgres/update_quality.sql rename to plpgsql/pgunit/update_quality.sql From 65d60205f504512c15deda20c2d8a715f4814a20 Mon Sep 17 00:00:00 2001 From: acassaigne Date: Sun, 12 Jan 2020 23:35:38 +0100 Subject: [PATCH 11/11] change test with foo example to fixme --- plpgsql/pgunit/run_tests.sql | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/plpgsql/pgunit/run_tests.sql b/plpgsql/pgunit/run_tests.sql index fedb6984..3c4e3c68 100644 --- a/plpgsql/pgunit/run_tests.sql +++ b/plpgsql/pgunit/run_tests.sql @@ -1,16 +1,14 @@ CREATE OR REPLACE FUNCTION test_case_update_quality() RETURNS void AS $$ DECLARE - sell_in_result item.sell_in%TYPE; - quality_result item.quality%TYPE; + name_result item.name%TYPE; BEGIN TRUNCATE TABLE item; - CALL new_item('Aged Brie', 4, 6); + CALL new_item('foo', 0, 0); CALL update_quality(); - SELECT quality, sell_in FROM item INTO quality_result, sell_in_result; - perform test_assertEquals('Quality should increase', 7.0, quality_result); - perform test_assertEquals('Sell in should decrease', 3.0, sell_in_result); + SELECT name FROM item INTO name_result; + perform test_assertEquals('name did change', 'fixme', name_result); END; $$ LANGUAGE plpgsql;