CSLA.NET 6.0.0
CSLA .NET is a software development framework that helps you build a reusable, maintainable object-oriented business layer for your app.
RollBackTests.cs
Go to the documentation of this file.
1//-----------------------------------------------------------------------
2// <copyright file="RollBackTests.cs" company="Marimer LLC">
3// Copyright (c) Marimer LLC. All rights reserved.
4// Website: https://cslanet.com
5// </copyright>
6// <summary>no summary</summary>
7//-----------------------------------------------------------------------
8using System;
9using System.Collections.Generic;
10using System.Text;
11using Csla.TestHelpers;
12
13#if !NUNIT
14using Microsoft.VisualStudio.TestTools.UnitTesting;
15#else
16using NUnit.Framework;
17using TestClass = NUnit.Framework.TestFixtureAttribute;
18using TestInitialize = NUnit.Framework.SetUpAttribute;
19using TestCleanup = NUnit.Framework.TearDownAttribute;
20using TestMethod = NUnit.Framework.TestAttribute;
21#endif
22
23namespace Csla.Test.RollBack
24{
25 [TestClass]
26 public class RollBackTests
27 {
28 private static TestDIContext _testDIContext;
29
31 public static void ClassInitialize(TestContext context)
32 {
33 _testDIContext = TestDIContextFactory.CreateDefaultContext();
34 }
35
36 [TestMethod]
37 [TestCategory("SkipWhenLiveUnitTesting")]
38 public void NoFail()
39 {
40 IDataPortal<RollbackRoot> dataPortal = _testDIContext.CreateDataPortal<RollbackRoot>();
41
44
45 root.BeginEdit();
46 root.Data = "saved";
47 Assert.AreEqual("saved", root.Data, "data is 'saved'");
48 Assert.AreEqual(false, root.Fail, "fail is false");
49 Assert.AreEqual(true, root.IsDirty, "isdirty is true");
50 Assert.AreEqual(true, root.IsValid, "isvalid is true");
51 Assert.AreEqual(true, root.IsNew, "isnew is true");
52
54 RollbackRoot tmp = (RollbackRoot)(root.Clone());
55 root.ApplyEdit();
56 root = root.Save();
57
58 Assert.IsNotNull(root, "obj is not null");
59 Assert.AreEqual("Inserted", TestResults.GetResult("Root"), "obj was inserted");
60 Assert.AreEqual("saved", root.Data, "data is 'saved'");
61 Assert.AreEqual(false, root.IsNew, "is new is false");
62 Assert.AreEqual(false, root.IsDeleted, "isdeleted is false");
63 Assert.AreEqual(false, root.IsDirty, "isdirty is false");
64 }
65
66 [TestMethod]
67 [TestCategory("SkipWhenLiveUnitTesting")]
68 public void YesFail()
69 {
70 IDataPortal<RollbackRoot> dataPortal = _testDIContext.CreateDataPortal<RollbackRoot>();
71
74
75 root.BeginEdit();
76 root.Data = "saved";
77 root.Fail = true;
78 Assert.AreEqual("saved", root.Data, "data is 'saved'");
79 Assert.AreEqual(true, root.Fail, "fail is true");
80 Assert.AreEqual(true, root.IsDirty, "isdirty is true");
81 Assert.AreEqual(true, root.IsValid, "isvalid is true");
82 Assert.AreEqual(true, root.IsNew, "isnew is true");
83
85 RollbackRoot tmp = (RollbackRoot)(root.Clone());
86 try
87 {
88 root.ApplyEdit();
89 root = (RollbackRoot)(root.Save());
90 Assert.Fail("exception didn't occur");
91 }
92 catch
93 {
94 root = tmp;
95 }
96
97 Assert.IsNotNull(root, "obj is not null");
98 Assert.AreEqual("Inserted", TestResults.GetResult("Root"), "obj was inserted");
99 Assert.AreEqual("saved", root.Data, "data is 'saved'");
100 Assert.AreEqual(true, root.IsNew, "isnew is true");
101 Assert.AreEqual(false, root.IsDeleted, "isdeleted is false");
102 Assert.AreEqual(true, root.IsDirty, "isdirty is true");
103 }
104
105 [TestMethod]
106 [TestCategory("SkipWhenLiveUnitTesting")]
107 public void YesFailCancel()
108 {
109 IDataPortal<RollbackRoot> dataPortal = _testDIContext.CreateDataPortal<RollbackRoot>();
110
113 Assert.AreEqual(true, root.IsDirty, "isdirty is true");
114 Assert.AreEqual("<new>", root.Data, "data is '<new>'");
115
116 root.BeginEdit();
117 root.Data = "saved";
118 root.Fail = true;
119 Assert.AreEqual("saved", root.Data, "data is 'saved'");
120 Assert.AreEqual(true, root.Fail, "fail is true");
121 Assert.AreEqual(true, root.IsDirty, "isdirty is true");
122 Assert.AreEqual(true, root.IsValid, "isvalid is true");
123 Assert.AreEqual(true, root.IsNew, "isnew is true");
124
126 RollbackRoot tmp = (RollbackRoot)(root.Clone());
127 try
128 {
129 root.ApplyEdit();
130 root = (RollbackRoot)(root.Save());
131 Assert.Fail("exception didn't occur");
132 }
133 catch
134 {
135 root = tmp;
136 root.CancelEdit();
137 }
138
139 Assert.IsNotNull(root, "obj is not null");
140 Assert.AreEqual("Inserted", TestResults.GetResult("Root"), "obj was inserted");
141 Assert.AreEqual("<new>", root.Data, "data is '<new>'");
142 Assert.AreEqual(true, root.IsNew, "isnew is true");
143 Assert.AreEqual(false, root.IsDeleted, "isdeleted is false");
144 Assert.AreEqual(true, root.IsDirty, "isdirty is true");
145 }
146
147 [TestMethod]
148 public void EditParentEntity()
149 {
150 IDataPortal<DataBinding.ParentEntity> dataPortal = _testDIContext.CreateDataPortal<DataBinding.ParentEntity>();
151
153 p.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(p_PropertyChanged);
154
155 p.BeginEdit();
156 p.Data = "something";
157 p.BeginEdit();
158 p.CancelEdit();
159 p.CancelEdit();
160
161 Assert.AreEqual(string.Empty, p.Data);
162
163 p.BeginEdit();
164 p.BeginEdit();
165 p.Data = "data";
166 p.ApplyEdit();
167 p.CancelEdit();
168
169 Assert.AreEqual(string.Empty, p.Data);
170
171 p.Data = "data";
172 p.BeginEdit();
173 p.Data += " more data";
174 p.ApplyEdit();
175 p.CancelEdit();
176
177 Assert.AreEqual("data more data", p.Data);
178 }
179
180 public void p_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
181 {
182 Console.WriteLine(e.PropertyName + " has been changed");
183 }
184 }
185}
T Save()
Saves the object to the database.
T Clone()
Creates a clone of the object.
Definition: BusinessBase.cs:79
static ParentEntity NewParentEntity(IDataPortal< ParentEntity > dataPortal)
void p_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
static void ClassInitialize(TestContext context)
static RollbackRoot NewRoot(IDataPortal< RollbackRoot > dataPortal)
Static dictionary-like class that offers similar functionality to GlobalContext This is used in tests...
Definition: TestResults.cs:21
static void Reinitialise()
Reinitialise the dictionary, clearing any existing results, ready for the next test
Definition: TestResults.cs:69
static string GetResult(string key)
Get a result of an operation from the underlying results dictionary
Definition: TestResults.cs:49
Type to carry context information for DI in unit tests
Interface defining the members of the data portal type.
Definition: IDataPortalT.cs:17