From 3594d1da76bf226258f1fcfa4f1ba31a798fc80a Mon Sep 17 00:00:00 2001 From: bearmug Date: Sat, 2 Feb 2019 17:48:22 +0300 Subject: [PATCH] #6 implement one more negative test --- test/epgsql_migrations_SUITE.erl | 23 +++++++++++++++---- .../00_initial_version.sql | 7 ++++++ .../01_faulty_migration.sql | 1 + 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 test/epgsql_migrations_SUITE_data/04-last-migration-fail/00_initial_version.sql create mode 100644 test/epgsql_migrations_SUITE_data/04-last-migration-fail/01_faulty_migration.sql diff --git a/test/epgsql_migrations_SUITE.erl b/test/epgsql_migrations_SUITE.erl index 565ffb7..ec96562 100644 --- a/test/epgsql_migrations_SUITE.erl +++ b/test/epgsql_migrations_SUITE.erl @@ -128,13 +128,28 @@ migration_gap_test(Opts) -> {error, {error, error, _, undefined_column, <<"column \"color\" does not exist">>, _}}, epgsql:squery(Conn, "select count(*) from fruit where color = 'yellow'")). -transactional_migration_test(_Opts) -> ok. +transactional_migration_test(Opts) -> + Conn = ?config(conn, Opts), + PreparedCall = engine:migrate( + filename:join([?config(data_dir, Opts), "04-last-migration-fail"]), + fun(F) -> + epgsql:with_transaction(Conn, fun(_) -> F() end) + end, + epgsql_query_fun(Conn) + ), + ?assertMatch( + {rollback, {badmatch, {error, {error, error, _, syntax_error, _, _}}}}, + PreparedCall()), + ?assertMatch( + {ok, _,[{null}]}, + epgsql:squery(Conn, "select max(version) from database_migrations_history")), + ?assertMatch( + {error,{error, _, _, undefined_table, <<"relation \"fruit\" does not exist">>, _}}, + epgsql:squery(Conn, "select count(*) from fruit")). epgsql_query_fun(Conn) -> fun(Q) -> - Res = epgsql:squery(Conn, Q), - io:format("epgsql_query_fun ~p -> ~p~n",[Q, Res]), - case Res of + case epgsql:squery(Conn, Q) of ok -> ok; {ok, [ {column, <<"version">>, _, _, _, _, _}, diff --git a/test/epgsql_migrations_SUITE_data/04-last-migration-fail/00_initial_version.sql b/test/epgsql_migrations_SUITE_data/04-last-migration-fail/00_initial_version.sql new file mode 100644 index 0000000..5853b2e --- /dev/null +++ b/test/epgsql_migrations_SUITE_data/04-last-migration-fail/00_initial_version.sql @@ -0,0 +1,7 @@ +CREATE TABLE fruit ( + id SERIAL, + name TEXT NOT NULL +); +INSERT INTO fruit (name) VALUES ( + 'apple' +); \ No newline at end of file diff --git a/test/epgsql_migrations_SUITE_data/04-last-migration-fail/01_faulty_migration.sql b/test/epgsql_migrations_SUITE_data/04-last-migration-fail/01_faulty_migration.sql new file mode 100644 index 0000000..951bb93 --- /dev/null +++ b/test/epgsql_migrations_SUITE_data/04-last-migration-fail/01_faulty_migration.sql @@ -0,0 +1 @@ +GARBAGE scrip4 h3r3!@ \ No newline at end of file