Packages
ecto
0.12.0
3.14.1
3.14.0
3.13.6
3.13.5
3.13.4
3.13.3
3.13.2
3.13.1
3.13.0
3.12.6
3.12.5
3.12.4
3.12.3
3.12.2
3.12.1
3.12.0
3.11.2
3.11.1
3.11.0
3.10.3
3.10.2
3.10.1
3.10.0
3.9.6
3.9.5
3.9.4
3.9.3
3.9.2
3.9.1
3.9.0
3.8.4
3.8.3
3.8.2
3.8.1
3.8.0
3.7.2
3.7.1
3.7.0
3.6.2
3.6.1
3.6.0
3.5.8
3.5.7
3.5.6
3.5.5
3.5.4
3.5.3
3.5.2
3.5.1
3.5.0
3.5.0-rc.1
3.5.0-rc.0
3.4.6
3.4.5
3.4.4
3.4.3
3.4.2
3.4.1
3.4.0
3.3.4
3.3.3
3.3.2
3.3.1
3.3.0
3.2.5
3.2.4
3.2.3
3.2.2
3.2.1
3.2.0
3.1.7
3.1.6
3.1.5
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.9
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
3.0.0-rc.1
3.0.0-rc.0
2.2.12
2.2.11
2.2.10
2.2.9
2.2.8
2.2.7
2.2.6
2.2.5
2.2.4
2.2.3
2.2.2
2.2.1
2.2.0
2.2.0-rc.1
2.2.0-rc.0
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.1.0-rc.5
2.1.0-rc.4
2.1.0-rc.3
2.1.0-rc.2
2.1.0-rc.1
2.1.0-rc.0
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
2.0.0-rc.6
2.0.0-rc.5
2.0.0-rc.4
2.0.0-rc.3
2.0.0-rc.2
2.0.0-rc.1
2.0.0-rc.0
2.0.0-beta.2
2.0.0-beta.1
2.0.0-beta.0
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.16.0
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
0.13.0
0.12.1
0.12.0
0.12.0-rc
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
A toolkit for data mapping and language integrated query for Elixir
Current section
Files
Jump to
Current section
Files
integration_test/sql/test_transaction.exs
defmodule Ecto.Integration.TestTransactionTest do
use ExUnit.Case
require Ecto.Integration.TestRepo, as: TestRepo
test "begin, restart and rollback" do
assert_transaction_threshold(0)
assert :ok = Ecto.Adapters.SQL.begin_test_transaction(TestRepo)
assert_transaction_threshold(1)
assert :ok = Ecto.Adapters.SQL.restart_test_transaction(TestRepo)
assert_transaction_threshold(1)
assert :ok = Ecto.Adapters.SQL.rollback_test_transaction(TestRepo)
assert_transaction_threshold(0)
after
Ecto.Adapters.SQL.rollback_test_transaction(TestRepo)
end
test "restart_test_transaction begins a transaction if one is not running" do
assert_transaction_threshold(0)
assert :ok = Ecto.Adapters.SQL.restart_test_transaction(TestRepo)
assert_transaction_threshold(1)
assert :ok = Ecto.Adapters.SQL.rollback_test_transaction(TestRepo)
assert_transaction_threshold(0)
after
Ecto.Adapters.SQL.rollback_test_transaction(TestRepo)
end
test "being_test_transaction inside another transaction should fail" do
TestRepo.transaction(fn ->
assert_raise RuntimeError, ~r"cannot begin test transaction", fn ->
Ecto.Adapters.SQL.begin_test_transaction(TestRepo)
end
end)
end
test "restart_test_transaction inside another transaction should fail" do
TestRepo.transaction(fn ->
assert_raise RuntimeError, ~r"cannot restart test transaction", fn ->
Ecto.Adapters.SQL.restart_test_transaction(TestRepo)
end
end)
end
test "begin_test_transaction should fail when it has already began" do
Ecto.Adapters.SQL.begin_test_transaction(TestRepo)
assert_raise RuntimeError, ~r"cannot begin test transaction", fn ->
Ecto.Adapters.SQL.begin_test_transaction(TestRepo)
end
after
Ecto.Adapters.SQL.rollback_test_transaction(TestRepo)
end
defp assert_transaction_threshold(value) do
TestRepo.transaction(fn ->
assert %{threshold: ^value} =
Process.get({:ecto_transaction_info, elem(TestRepo.__pool__, 0)})
end)
end
end