GildedRose-Refactoring-Kata/postgres/asserts_tests.sql
2019-12-23 11:53:54 +01:00

96 lines
3.3 KiB
PL/PgSQL

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();