Skip to content

Commit 71cca55

Browse files
committed
added test case for transaction with multiple databases
1 parent 7ec7b4a commit 71cca55

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

test/mongo/session_test.exs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,50 @@ defmodule Mongo.SessionTest do
143143

144144
end
145145

146+
@tag :mongo_4_2
147+
test "commit_transaction on multiple database", %{top: top} do
148+
149+
coll = "dogs"
150+
151+
Mongo.insert_one(top, coll, %{name: "Wuff"})
152+
Mongo.delete_many(top, coll, %{})
153+
Mongo.insert_one(top, coll, %{name: "Wuff"}, database: "mongodb_test_2")
154+
Mongo.delete_many(top, coll, %{}, database: "mongodb_test_2")
155+
156+
{:ok, session} = Session.start_session(top, :write, [])
157+
assert :ok = Session.start_transaction(session)
158+
159+
{:ok, %InsertOneResult{:inserted_id => id}} = Mongo.insert_one(top, coll, %{name: "Greta"}, session: session)
160+
assert id != nil
161+
{:ok, %InsertOneResult{:inserted_id => id}} = Mongo.insert_one(top, coll, %{name: "Waldo"}, session: session)
162+
assert id != nil
163+
{:ok, %InsertOneResult{:inserted_id => id}} = Mongo.insert_one(top, coll, %{name: "Tom"}, session: session)
164+
assert id != nil
165+
166+
{:ok, %InsertOneResult{:inserted_id => id}} = Mongo.insert_one(top, coll, %{name: "Greta"}, session: session, database: "mongodb_test_2")
167+
assert id != nil
168+
{:ok, %InsertOneResult{:inserted_id => id}} = Mongo.insert_one(top, coll, %{name: "Waldo"}, session: session, database: "mongodb_test_2")
169+
assert id != nil
170+
{:ok, %InsertOneResult{:inserted_id => id}} = Mongo.insert_one(top, coll, %{name: "Tom"}, session: session, database: "mongodb_test_2")
171+
assert id != nil
172+
173+
assert %{"name" => "Tom"} = Mongo.find_one(top, coll, %{name: "Tom"}, session: session)
174+
assert {:ok, 3} == Mongo.count_documents(top, coll, %{}, session: session)
175+
assert {:ok, 0} == Mongo.count_documents(top, coll, %{})
176+
177+
assert %{"name" => "Tom"} = Mongo.find_one(top, coll, %{name: "Tom"}, session: session, database: "mongodb_test_2")
178+
assert {:ok, 3} == Mongo.count_documents(top, coll, %{}, session: session, database: "mongodb_test_2")
179+
assert {:ok, 0} == Mongo.count_documents(top, coll, %{}, database: "mongodb_test_2")
180+
181+
:ok = Session.commit_transaction(session)
182+
183+
%{"_id" => _id, "name" => "Tom"} = Mongo.find_one(top, coll, %{name: "Tom"}, session: session)
184+
assert {:ok, 3} == Mongo.count(top, coll, %{})
185+
assert {:ok, 3} == Mongo.count(top, coll, %{}, session: session)
186+
187+
assert :ok == Session.end_session(top, session)
188+
189+
end
146190
@tag :mongo_4_2
147191
test "abort_transaction", %{top: top} do
148192

0 commit comments

Comments
 (0)