forked from ThatRendle/Simple.Data
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTransactionTests.cs
More file actions
100 lines (89 loc) · 2.93 KB
/
TransactionTests.cs
File metadata and controls
100 lines (89 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using NUnit.Framework;
using Simple.Data.Ado;
namespace Simple.Data.SqlTest
{
[TestFixture]
public class TransactionTests
{
[SetUp]
public void Setup()
{
DatabaseHelper.Reset();
}
[Test]
public void TestCommit()
{
var db = DatabaseHelper.Open();
using (var tx = db.BeginTransaction())
{
try
{
var order = tx.Orders.Insert(CustomerId: 1, OrderDate: DateTime.Today);
tx.OrderItems.Insert(OrderId: order.OrderId, ItemId: 1, Quantity: 3);
tx.Commit();
}
catch
{
tx.Rollback();
throw;
}
}
Assert.AreEqual(2, db.Orders.All().ToList().Count);
Assert.AreEqual(2, db.OrderItems.All().ToList().Count);
}
[Test]
public void TestRollback()
{
var db = DatabaseHelper.Open();
using (var tx = db.BeginTransaction())
{
var order = tx.Orders.Insert(CustomerId: 1, OrderDate: DateTime.Today);
tx.OrderItems.Insert(OrderId: order.OrderId, ItemId: 1, Quantity: 3);
tx.Rollback();
}
Assert.AreEqual(1, db.Orders.All().ToList().Count);
Assert.AreEqual(1, db.OrderItems.All().ToList().Count);
}
[Test]
public void TestWithOptionsTransaction()
{
var dbWithOptions = DatabaseHelper.Open().WithOptions(new AdoOptions(commandTimeout: 60000));
using (var tx = dbWithOptions.BeginTransaction())
{
tx.Orders.Insert(CustomerId: 1, OrderDate: DateTime.Today);
tx.Rollback();
}
Assert.Pass();
}
[Test]
public void TestRollbackOnProcedure()
{
var db = DatabaseHelper.Open();
Customer customer;
using (var tx = db.BeginTransaction())
{
customer = tx.CreateCustomer().FirstOrDefault();
tx.Rollback();
}
customer = db.Customers.FindByCustomerId(customer.CustomerId);
Assert.IsNull(customer);
}
[Test]
public void QueryInsideTransaction()
{
var db = DatabaseHelper.Open();
using (var tx = db.BeginTransaction())
{
tx.Users.Insert(Name: "Arthur", Age: 42, Password: "Ladida");
User u2 = tx.Users.FindByName("Arthur");
Assert.IsNotNull(u2);
Assert.AreEqual("Arthur", u2.Name);
}
}
}
}