mysql_tests.erl 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. %% @doc This module performs test to an actual database.
  2. -module(mysql_tests).
  3. -include_lib("eunit/include/eunit.hrl").
  4. -define(user, "otptest").
  5. -define(password, "otptest").
  6. connect_test() ->
  7. {ok, Pid} = mysql:connect([{user, ?user}, {password, ?password}]),
  8. %% A query without a result set
  9. ?assertEqual(ok, mysql:query(Pid, <<"USE otptest">>)),
  10. ?assertEqual(ok, mysql:disconnect(Pid)).
  11. query_test_() ->
  12. {setup,
  13. fun () ->
  14. {ok, Pid} = mysql:connect([{user, ?user}, {password, ?password}]),
  15. %ok = mysql:query(Pid, <<"DROP DATABASE IF EXISTS otptest">>),
  16. %ok = mysql:query(Pid, <<"CREATE DATABASE otptest">>),
  17. ok = mysql:query(Pid, <<"USE otptest">>),
  18. Pid
  19. end,
  20. fun (Pid) ->
  21. mysql:disconnect(Pid)
  22. end,
  23. {with, [fun basic_queries/1]}}.
  24. basic_queries(Pid) ->
  25. %% warning count
  26. ?assertEqual(ok, mysql:query(Pid, <<"DROP TABLE IF EXISTS foo">>)),
  27. ?assertEqual(1, mysql:warning_count(Pid)),
  28. %% SQL parse error
  29. ?assertMatch({error, {1064, <<"42000">>, <<"You have an erro", _/binary>>}},
  30. mysql:query(Pid, <<"FOO">>)),
  31. %% Simple resultset with various types
  32. ?assertEqual({ok, [<<"i">>, <<"s">>], [[42, <<"foo">>]]},
  33. mysql:query(Pid, <<"SELECT 42 AS i, 'foo' AS s;">>)),
  34. %{ok, Fields, Rows} = mysql:query(Pid, <<"SELECT * FROM settest">>),
  35. ok.