/src/Tests/Infrastructure.Core.Tests/Unit/Result/ResultBaseTests.cs

https://github.com/SouthsideSoftware/Infrastructure · C# · 279 lines · 252 code · 27 blank · 0 comment · 0 complexity · 93911052674b015b447503c86088dfbb MD5 · raw file

  1. using System;
  2. using System.Xml.Linq;
  3. using Infrastructure.Core.CodeContracts;
  4. using Infrastructure.Core.Result;
  5. using NUnit.Framework;
  6. using FluentAssertions;
  7. namespace Infrastructure.Core.Tests.Unit.Result
  8. {
  9. [TestFixture]
  10. public class ResultBaseTests
  11. {
  12. [Test]
  13. public void Constructor_Default_IsSuccessIsTrue()
  14. {
  15. var result = new ResultBase();
  16. result.IsSuccess.Should().BeTrue();
  17. }
  18. [Test]
  19. public void AddError_AddOne_IsSuccessFalse()
  20. {
  21. var result = new ResultBase();
  22. result.AddMessage(new ResultItem(-1, "this is a test"));
  23. result.IsSuccess.Should().BeFalse();
  24. }
  25. [Test]
  26. public void AddError_AddTwo_HasTwo()
  27. {
  28. var result = new ResultBase();
  29. result.AddMessage(new ResultItem(-1, "this is a test"));
  30. result.AddMessage(new ResultItem(-1, "this is a test 2"));
  31. result.Errors.Should().HaveCount(2);
  32. }
  33. [Test]
  34. public void AddError_AddDuplicateWithoutElements_DuplicateIsNotAdded()
  35. {
  36. var result = new ResultBase();
  37. result.AddMessage(new ResultItem(-1, "this is a test"));
  38. result.AddMessage(new ResultItem(-1, "this is a test"));
  39. result.Errors.Should().HaveCount(1);
  40. }
  41. [Test]
  42. public void AddWarning_AddOne_IsSuccessTrue()
  43. {
  44. var result = new ResultBase();
  45. result.AddMessage(new ResultItem(1, "this is a test"));
  46. result.IsSuccess.Should().BeTrue();
  47. }
  48. [Test]
  49. public void AddWarning_AddTwo_HasTwo()
  50. {
  51. var result = new ResultBase();
  52. result.AddMessage(new ResultItem(1, "this is a test"));
  53. result.AddMessage(new ResultItem(2, "this is a test 2"));
  54. result.Warnings.Should().HaveCount(2);
  55. }
  56. [Test]
  57. public void ToString_TwoWarnings_HasBoth()
  58. {
  59. var result = new ResultBase();
  60. result.AddMessage(new ResultItem(1, "this is a test"));
  61. result.AddMessage(new ResultItem(2, "this is a test 2"));
  62. var stringResult = result.ToString();
  63. stringResult.Should().Contain("this is a test");
  64. stringResult.Should().Contain("this is a test 2");
  65. }
  66. [Test]
  67. public void AddWarning_AddDuplicate_DuplicateIsNotAdded()
  68. {
  69. var result = new ResultBase();
  70. result.AddMessage(new ResultItem(1, "this is a test"));
  71. result.AddMessage(new ResultItem(1, "this is a test"));
  72. result.Warnings.Should().HaveCount(1);
  73. }
  74. [Test]
  75. public void AddMessage_PassNull_ThrowsPreconditionException()
  76. {
  77. var result = new ResultBase();
  78. Action act = () => result.AddMessage(null);
  79. act.ShouldThrow<PreconditionException>().And.Message.Contains("message");
  80. }
  81. [Test]
  82. public void AddErrors_PassNull_ThrowsPreconditionException()
  83. {
  84. var result = new ResultBase();
  85. Action act = () => result.AddMessage(null);
  86. act.ShouldThrow<PreconditionException>().And.Message.Contains("errors");
  87. }
  88. [Test]
  89. public void AddWarnings_PassTwo_HasTwo()
  90. {
  91. var result = new ResultBase();
  92. var warnings = new System.Collections.Generic.List<ResultItem>
  93. {
  94. new ResultItem(1, "test2"),
  95. new ResultItem(2, "test")
  96. };
  97. result.AddMessages(warnings);
  98. result.Warnings.Should().HaveCount(2);
  99. }
  100. [Test]
  101. public void AddWarnings_PassTwoTheSame_HasOne()
  102. {
  103. var result = new ResultBase();
  104. var warnings = new System.Collections.Generic.List<ResultItem>
  105. {
  106. new ResultItem(1, "test"),
  107. new ResultItem(1, "test")
  108. };
  109. result.AddMessages(warnings);
  110. result.Warnings.Should().HaveCount(1);
  111. }
  112. [Test]
  113. public void AddWarnings_PassTwoOneInCollectionDuplicated_HasTwo()
  114. {
  115. var result = new ResultBase();
  116. result.AddMessage(new ResultItem(2, "test"));
  117. var warnings = new System.Collections.Generic.List<ResultItem>
  118. {
  119. new ResultItem(1, "test2"),
  120. new ResultItem(2, "test")
  121. };
  122. result.AddMessages(warnings);
  123. result.Warnings.Should().HaveCount(2);
  124. }
  125. [Test]
  126. public void AddErrors_PassTwo_HasTwo()
  127. {
  128. var result = new ResultBase();
  129. var errors = new System.Collections.Generic.List<ResultItem>
  130. {
  131. new ResultItem(-1, "test2"),
  132. new ResultItem(-2, "test")
  133. };
  134. result.AddMessages(errors);
  135. result.Errors.Should().HaveCount(2);
  136. }
  137. [Test]
  138. public void AddErrors_PassTwoTheSame_HasOne()
  139. {
  140. var result = new ResultBase();
  141. var errors = new System.Collections.Generic.List<ResultItem>
  142. {
  143. new ResultItem(-1, "test"),
  144. new ResultItem(-1, "test")
  145. };
  146. result.AddMessages(errors);
  147. result.Errors.Should().HaveCount(1);
  148. }
  149. [Test]
  150. public void AddErrors_PassTwoOneInCollectionDuplicated_HasTwo()
  151. {
  152. var result = new ResultBase();
  153. result.AddMessage(new ResultItem(-2, "test"));
  154. var errors = new System.Collections.Generic.List<ResultItem>
  155. {
  156. new ResultItem(-1, "test2"),
  157. new ResultItem(-2, "test")
  158. };
  159. result.AddMessages(errors);
  160. result.Errors.Should().HaveCount(2);
  161. }
  162. [Test]
  163. public void AppendResult_AppendResultWithTwoWarnings_HasTwo()
  164. {
  165. var result = new ResultBase();
  166. var otherResult = new ResultBase();
  167. var warnings = new System.Collections.Generic.List<ResultItem>
  168. {
  169. new ResultItem(1, "test2"),
  170. new ResultItem(2, "test")
  171. };
  172. otherResult.AddMessages(warnings);
  173. result.AppendResult(otherResult);
  174. result.Warnings.Should().HaveCount(2);
  175. }
  176. [Test]
  177. public void AppendResult_AppendResultWithTwoWarningsTwoResultWithOneWarning_HasThree()
  178. {
  179. var result = new ResultBase();
  180. result.AddMessage(new ResultItem(1, "arghhhhh"));
  181. var otherResult = new ResultBase();
  182. var warnings = new System.Collections.Generic.List<ResultItem>
  183. {
  184. new ResultItem(2, "test2"),
  185. new ResultItem(3, "test")
  186. };
  187. otherResult.AddMessages(warnings);
  188. result.AppendResult(otherResult);
  189. result.Warnings.Should().HaveCount(3);
  190. }
  191. [Test]
  192. public void AppendResult_AppendResultWithTwoErrors_HasTwo()
  193. {
  194. var result = new ResultBase();
  195. var otherResult = new ResultBase();
  196. var errors = new System.Collections.Generic.List<ResultItem>
  197. {
  198. new ResultItem(-1, "test2"),
  199. new ResultItem(-2, "test")
  200. };
  201. otherResult.AddMessages(errors);
  202. result.AppendResult(otherResult);
  203. result.Errors.Should().HaveCount(2);
  204. }
  205. [Test]
  206. public void AppendResult_AppendResultWithTwoErrorsTwoResultWithOneError_HasThree()
  207. {
  208. var result = new ResultBase();
  209. result.AddMessage(new ResultItem(-1, "arghhhhh"));
  210. var otherResult = new ResultBase();
  211. var errors = new System.Collections.Generic.List<ResultItem>
  212. {
  213. new ResultItem(-2, "test2"),
  214. new ResultItem(-3, "test")
  215. };
  216. otherResult.AddMessages(errors);
  217. result.AppendResult(otherResult);
  218. result.Errors.Should().HaveCount(3);
  219. }
  220. [Test]
  221. public void AddMessageCodeAndStringSignature_PassingData_CreateResultItemInMessages()
  222. {
  223. var result = new ResultBase();
  224. result.AddMessage(-1, "this is the message");
  225. result.IsSuccess.Should().BeFalse();
  226. result.Errors.Should().HaveCount(1);
  227. }
  228. [Test]
  229. public void ToString_TwoMessages_HasCorrectData()
  230. {
  231. var result = new ResultBase();
  232. result.AddMessage(-2, "this is the error");
  233. result.AddMessage(1, "this is the warning");
  234. result.ToString().Should().Be("IsSuccess = False Messages: -2 - this is the error, 1 - this is the warning");
  235. }
  236. [Test]
  237. public void ToStringWithLineBreaks_TwoMessages_HasCorrectData()
  238. {
  239. var result = new ResultBase();
  240. result.AddMessage(-2, "this is the error");
  241. result.AddMessage(1, "this is the warning");
  242. result.ToStringWithLineBreaks().Should().Be("IsSuccess = False Messages:\n-2 - this is the error\n1 - this is the warning");
  243. }
  244. [Test]
  245. public void AddMessageFormat_FormatStringAddMarms_FormatsTheMessage()
  246. {
  247. var result = new ResultBase();
  248. result.AddMessageFormat(-1, "This {0} a {1}", "is", "test");
  249. result.Messages[0].Message.Should().Be("This is a test");
  250. }
  251. }
  252. }