/src/AddIns/Misc/PackageManagement/Test/Src/UpdateAllPackagesInProjectTests.cs

https://github.com/ajadex/SharpDevelop · C# · 240 lines · 173 code · 50 blank · 17 comment · 0 complexity · 5cf6e331b21da1820dac3e068d3dc5ee MD5 · raw file

  1. // Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
  2. //
  3. // Permission is hereby granted, free of charge, to any person obtaining a copy of this
  4. // software and associated documentation files (the "Software"), to deal in the Software
  5. // without restriction, including without limitation the rights to use, copy, modify, merge,
  6. // publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
  7. // to whom the Software is furnished to do so, subject to the following conditions:
  8. //
  9. // The above copyright notice and this permission notice shall be included in all copies or
  10. // substantial portions of the Software.
  11. //
  12. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
  13. // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  14. // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
  15. // FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  16. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  17. // DEALINGS IN THE SOFTWARE.
  18. using System;
  19. using System.Collections.Generic;
  20. using System.Linq;
  21. using ICSharpCode.PackageManagement;
  22. using ICSharpCode.PackageManagement.Design;
  23. using ICSharpCode.PackageManagement.Scripting;
  24. using NuGet;
  25. using NUnit.Framework;
  26. using PackageManagement.Tests.Helpers;
  27. namespace PackageManagement.Tests
  28. {
  29. [TestFixture]
  30. public class UpdateAllPackagesInProjectTests
  31. {
  32. UpdateAllPackagesInProject updateAllPackagesInProject;
  33. FakePackageManagementProject fakeProject;
  34. List<UpdatePackageAction> updateActions;
  35. void CreateUpdateAllPackagesInProject()
  36. {
  37. fakeProject = new FakePackageManagementProject();
  38. updateAllPackagesInProject = new UpdateAllPackagesInProject(fakeProject);
  39. }
  40. void AddPackageToProject(string packageId)
  41. {
  42. var package = new FakePackage(packageId, "1.0");
  43. fakeProject.FakePackagesInReverseDependencyOrder.Add(package);
  44. }
  45. void CallCreateActions()
  46. {
  47. IEnumerable<UpdatePackageAction> actions = updateAllPackagesInProject.CreateActions();
  48. updateActions = actions.ToList();
  49. }
  50. UpdatePackageAction FirstUpdateAction {
  51. get { return updateActions[0]; }
  52. }
  53. [Test]
  54. public void CreateActions_OnePackageInProject_ReturnsOneAction()
  55. {
  56. CreateUpdateAllPackagesInProject();
  57. AddPackageToProject("Test");
  58. CallCreateActions();
  59. Assert.AreEqual(1, updateActions.Count);
  60. }
  61. [Test]
  62. public void CreateActions_OnePackageInProject_ActionCreatedFromProject()
  63. {
  64. CreateUpdateAllPackagesInProject();
  65. AddPackageToProject("Test");
  66. CallCreateActions();
  67. UpdatePackageAction action = updateActions[0];
  68. UpdatePackageAction expectedAction = fakeProject.FirstFakeUpdatePackageActionCreated;
  69. Assert.AreEqual(expectedAction, action);
  70. }
  71. [Test]
  72. public void CreateActions_OnePackageInProject_PackageIdSpecifiedInAction()
  73. {
  74. CreateUpdateAllPackagesInProject();
  75. AddPackageToProject("Test");
  76. CallCreateActions();
  77. string id = FirstUpdateAction.PackageId;
  78. Assert.AreEqual("Test", id);
  79. }
  80. [Test]
  81. public void CreateActions_OnePackageInProject_PackageVersionSpecifiedInActionIsNull()
  82. {
  83. CreateUpdateAllPackagesInProject();
  84. AddPackageToProject("Test");
  85. CallCreateActions();
  86. SemanticVersion version = FirstUpdateAction.PackageVersion;
  87. Assert.IsNull(version);
  88. }
  89. [Test]
  90. public void CreateActions_NoPackagesInProject_ReturnsNoActions()
  91. {
  92. CreateUpdateAllPackagesInProject();
  93. CallCreateActions();
  94. Assert.AreEqual(0, updateActions.Count);
  95. }
  96. [Test]
  97. public void CreateActions_TwoPackagesInProject_TwoUpdateActionsCreated()
  98. {
  99. CreateUpdateAllPackagesInProject();
  100. AddPackageToProject("Test1");
  101. AddPackageToProject("Test2");
  102. CallCreateActions();
  103. Assert.AreEqual(2, updateActions.Count);
  104. }
  105. [Test]
  106. public void CreateActions_TwoPackagesInProject_TwoPackageIdsSpecifiedInActions()
  107. {
  108. CreateUpdateAllPackagesInProject();
  109. AddPackageToProject("Test1");
  110. AddPackageToProject("Test2");
  111. CallCreateActions();
  112. Assert.AreEqual("Test1", updateActions[0].PackageId);
  113. Assert.AreEqual("Test2", updateActions[1].PackageId);
  114. }
  115. [Test]
  116. public void CreateActions_OnePackageInProject_UpdateIfPackageDoesNotExistInProjectIsFalse()
  117. {
  118. CreateUpdateAllPackagesInProject();
  119. AddPackageToProject("Test");
  120. CallCreateActions();
  121. bool update = FirstUpdateAction.UpdateIfPackageDoesNotExistInProject;
  122. Assert.IsFalse(update);
  123. }
  124. [Test]
  125. public void CreateActions_OnePackageInProjectAndUpdateDependenciesSetToFalse_ActionUpdateDependenciesIsFalse()
  126. {
  127. CreateUpdateAllPackagesInProject();
  128. AddPackageToProject("Test");
  129. updateAllPackagesInProject.UpdateDependencies = false;
  130. CallCreateActions();
  131. bool update = FirstUpdateAction.UpdateDependencies;
  132. Assert.IsFalse(update);
  133. }
  134. [Test]
  135. public void UpdateDependencies_NewInstance_ReturnsTrue()
  136. {
  137. CreateUpdateAllPackagesInProject();
  138. bool update = updateAllPackagesInProject.UpdateDependencies;
  139. Assert.IsTrue(update);
  140. }
  141. [Test]
  142. public void CreateActions_OnePackageInProjectAndAllowPrereleaseVersionsSetToFalse_ActionPrereleaseVersionsIsFalse()
  143. {
  144. CreateUpdateAllPackagesInProject();
  145. AddPackageToProject("Test");
  146. updateAllPackagesInProject.AllowPrereleaseVersions = false;
  147. CallCreateActions();
  148. bool allow = FirstUpdateAction.AllowPrereleaseVersions;
  149. Assert.IsFalse(allow);
  150. }
  151. [Test]
  152. public void CreateActions_OnePackageInProjectAndAllowPrereleaseVersionsSetToTrue_ActionPrereleaseVersionsIsTrue()
  153. {
  154. CreateUpdateAllPackagesInProject();
  155. AddPackageToProject("Test");
  156. updateAllPackagesInProject.AllowPrereleaseVersions = true;
  157. CallCreateActions();
  158. bool allow = FirstUpdateAction.AllowPrereleaseVersions;
  159. Assert.IsTrue(allow);
  160. }
  161. [Test]
  162. public void AllowPrereleaseVersions_NewInstance_ReturnsFalse()
  163. {
  164. CreateUpdateAllPackagesInProject();
  165. bool allow = updateAllPackagesInProject.AllowPrereleaseVersions;
  166. Assert.IsFalse(allow);
  167. }
  168. [Test]
  169. public void CreateActions_OnePackageInProjectAndUpdateDependenciesSetToTrue_ActionUpdateDependenciesIsTrue()
  170. {
  171. CreateUpdateAllPackagesInProject();
  172. AddPackageToProject("Test");
  173. updateAllPackagesInProject.UpdateDependencies = true;
  174. CallCreateActions();
  175. bool update = FirstUpdateAction.UpdateDependencies;
  176. Assert.IsTrue(update);
  177. }
  178. [Test]
  179. public void CreateActions_OnePackageInProjectAndPackageScriptRunnerSet_ActionPackageScriptRunnerIsSet()
  180. {
  181. CreateUpdateAllPackagesInProject();
  182. AddPackageToProject("Test");
  183. var expectedRunner = new FakePackageScriptRunner();
  184. updateAllPackagesInProject.PackageScriptRunner = expectedRunner;
  185. CallCreateActions();
  186. IPackageScriptRunner runner = FirstUpdateAction.PackageScriptRunner;
  187. Assert.AreEqual(expectedRunner, runner);
  188. }
  189. }
  190. }