/Parliament.CodeQuality.UnusedCode.Tests/OptionsWindowViewModelTests.cs

https://bitbucket.org/PollyShaw/unusedcode · C# · 253 lines · 203 code · 50 blank · 0 comment · 13 complexity · 3e3cde8c2d51fa3d8998e9a35f497cc2 MD5 · raw file

  1. using System.Collections;
  2. using FluentAssertions;
  3. using Moq;
  4. using NUnit.Framework;
  5. using Parliament.CodeQuality.UnusedCode.Implementation.RecordsToIncludeAndIgnore;
  6. using Parliament.CodeQuality.UnusedCode.Interfaces;
  7. using Parliament.CodeQuality.UnusedCode.UI;
  8. namespace Parliament.CodeQuality.UnusedCode.Tests
  9. {
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using System.Text;
  14. [TestFixture]
  15. public class OptionsWindowViewModelTests
  16. {
  17. private Mock<IFunctionsToAssessSpecifier> _functionAssessorSpecifierMockArtisan;
  18. private OptionsWindowViewModel _sut;
  19. [SetUp]
  20. public void SetUp()
  21. {
  22. _functionAssessorSpecifierMockArtisan = new Mock<IFunctionsToAssessSpecifier>();
  23. }
  24. [Test]
  25. public void CanCreateViewModel()
  26. {
  27. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  28. _sut.Should().NotBeNull();
  29. }
  30. [Test]
  31. public void CreatesProjects()
  32. {
  33. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.AllProjects).Returns(new Project[]
  34. {
  35. new Project()
  36. {
  37. Guid = new Guid(
  38. "{57F854F9-4C54-45E9-8E8E-951C939B3197}")
  39. }
  40. });
  41. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  42. _sut.Projects.Should().Contain(p => p.Guid == new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}"));
  43. }
  44. [Test]
  45. public void ProjectsAreIncludedIfInIncludedProjectsCollection()
  46. {
  47. var project = new Project()
  48. {
  49. Guid = new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}")
  50. };
  51. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.AllProjects).Returns(new Project[]
  52. {
  53. project
  54. });
  55. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.ProjectsToInclude).Returns(new Project[] { project });
  56. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  57. _sut.Projects.Should().Contain(p => p.Guid == new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}") && p.Included);
  58. }
  59. [Test]
  60. public void ProjectsAreIgnoredIfInIgnoredProjectsCollection()
  61. {
  62. var project = new Project()
  63. {
  64. Guid = new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}")
  65. };
  66. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.AllProjects).Returns(new Project[]
  67. {
  68. project
  69. });
  70. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.ProjectsToIgnore).Returns(new Project[] { project });
  71. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  72. _sut.Projects.Should().Contain(p => p.Guid == new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}") && p.Ignored);
  73. }
  74. [Test]
  75. public void NoErrorOccursIfIgnoredProjectIsNotInAllProjects()
  76. {
  77. var project = new Project()
  78. {
  79. Guid = new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}")
  80. };
  81. var ignoredProject = new Project()
  82. {
  83. Guid = new Guid("FF0831F4-01A1-4947-88C3-4868C3366104")
  84. };
  85. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.AllProjects).Returns(new Project[]
  86. {
  87. project
  88. });
  89. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.ProjectsToIgnore).Returns(new Project[] {ignoredProject });
  90. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  91. }
  92. [Test]
  93. public void NoErrorOccursIfIncludedProjectIsNotInAllProjects()
  94. {
  95. var project = new Project()
  96. {
  97. Guid = new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}")
  98. };
  99. var includedProject = new Project()
  100. {
  101. Guid = new Guid("FF0831F4-01A1-4947-88C3-4868C3366104")
  102. };
  103. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.AllProjects).Returns(new Project[]
  104. {
  105. project
  106. });
  107. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.ProjectsToInclude).Returns(new Project[] { includedProject });
  108. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  109. }
  110. [Test]
  111. public void ProjectNamesAreReplicatedInViewModel()
  112. {
  113. var project1 = new Project()
  114. {
  115. Guid = new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}"),
  116. Name = "Project 1"
  117. };
  118. var project2 = new Project()
  119. {
  120. Guid = new Guid("FF0831F4-01A1-4947-88C3-4868C3366104"),
  121. Name = "Project 2"
  122. };
  123. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.AllProjects).Returns(new Project[]
  124. {
  125. project1,
  126. project2
  127. });
  128. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  129. _sut.Projects.Should().Contain(p => p.Name == project1.Name).And.Contain(p => p.Name == project2.Name);
  130. }
  131. [Test]
  132. public void OKClickedSetsDialogResultToTrue()
  133. {
  134. _functionAssessorSpecifierMockArtisan.DefaultValue = DefaultValue.Mock;
  135. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  136. _sut.OKClicked();
  137. _sut.DialogResult.Should().BeTrue();
  138. }
  139. [Test]
  140. public void OKClickedSetsIncludedProjects()
  141. {
  142. _functionAssessorSpecifierMockArtisan.DefaultValue = DefaultValue.Mock;
  143. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  144. _sut.OKClicked();
  145. _functionAssessorSpecifierMockArtisan.Verify(f => f.SetProjectsToInclude(new Project[] { }));
  146. _sut.DialogResult.Should().BeTrue();
  147. }
  148. [Test]
  149. public void OKClickedSetsAProjectThatHasJustBeenIncluded()
  150. {
  151. var project1 = new Project()
  152. {
  153. Guid = new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}"),
  154. Name = "Project 1"
  155. };
  156. var project2 = new Project()
  157. {
  158. Guid = new Guid("FF0831F4-01A1-4947-88C3-4868C3366104"),
  159. Name = "Project 2"
  160. };
  161. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.AllProjects).Returns(new Project[]
  162. {
  163. project1,
  164. project2
  165. });
  166. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  167. _sut.Projects[0].Included = true;
  168. _sut.OKClicked();
  169. _functionAssessorSpecifierMockArtisan.Verify(f => f.SetProjectsToInclude(
  170. It.Is(
  171. (IEnumerable<Project> projectCollection) =>
  172. projectCollection.Count() == 1 && projectCollection.First().Guid == _sut.Projects.First().Guid)));
  173. _sut.DialogResult.Should().BeTrue();
  174. }
  175. [Test]
  176. public void OKClickedSetsAProjectThatHasJustBeenIgnored()
  177. {
  178. var project1 = new Project()
  179. {
  180. Guid = new Guid("{57F854F9-4C54-45E9-8E8E-951C939B3197}"),
  181. Name = "Project 1"
  182. };
  183. var project2 = new Project()
  184. {
  185. Guid = new Guid("FF0831F4-01A1-4947-88C3-4868C3366104"),
  186. Name = "Project 2"
  187. };
  188. _functionAssessorSpecifierMockArtisan.SetupGet(s => s.AllProjects).Returns(new Project[]
  189. {
  190. project1,
  191. project2
  192. });
  193. _sut = new OptionsWindowViewModel(_functionAssessorSpecifierMockArtisan.Object);
  194. _sut.Projects[1].Ignored = true;
  195. _sut.OKClicked();
  196. _functionAssessorSpecifierMockArtisan.Verify(f => f.SetProjectsToIgnore(
  197. It.Is(
  198. (IEnumerable<Project> projectCollection) =>
  199. projectCollection.Count() == 1 && projectCollection.First().Guid == _sut.Projects[1].Guid)));
  200. _sut.DialogResult.Should().BeTrue();
  201. }
  202. }
  203. }