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

https://github.com/ajadex/SharpDevelop · C# · 201 lines · 142 code · 42 blank · 17 comment · 0 complexity · c5f260ec93e35369ed432fd0ca45de9e 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 ICSharpCode.PackageManagement;
  20. using ICSharpCode.PackageManagement.Design;
  21. using ICSharpCode.PackageManagement.Scripting;
  22. using NuGet;
  23. using NUnit.Framework;
  24. using PackageManagement.Tests.Helpers;
  25. using Rhino.Mocks;
  26. namespace PackageManagement.Tests
  27. {
  28. [TestFixture]
  29. public class UpdatePackagesActionTests
  30. {
  31. TestableUpdatePackagesAction action;
  32. IPackageManagementProject project;
  33. IPackageManagementEvents packageEvents;
  34. void CreateAction()
  35. {
  36. CreateSolution();
  37. packageEvents = MockRepository.GenerateStub<IPackageManagementEvents>();
  38. action = new TestableUpdatePackagesAction(project, packageEvents);
  39. }
  40. void CreateActionWithOperations(params PackageOperation[] operations)
  41. {
  42. CreateAction();
  43. action.AddOperations(operations);
  44. }
  45. void CreateSolution()
  46. {
  47. project = MockRepository.GenerateStub<IPackageManagementProject>();
  48. }
  49. IPackage CreatePackage()
  50. {
  51. return MockRepository.GenerateStub<IPackage>();
  52. }
  53. PackageOperation CreateInstallOperationWithFile(string fileName)
  54. {
  55. return PackageOperationHelper.CreateInstallOperationWithFile(fileName);
  56. }
  57. IPackageScriptRunner CreatePackageScriptRunner()
  58. {
  59. return MockRepository.GenerateStub<IPackageScriptRunner>();
  60. }
  61. FakePackage AddPackageToAction(string id, string version)
  62. {
  63. var package = new FakePackage(id, version);
  64. action.AddPackages(new FakePackage[] { package });
  65. return package;
  66. }
  67. [Test]
  68. public void UpdateDependencies_DefaultValue_IsTrue()
  69. {
  70. CreateActionWithOperations();
  71. bool result = action.UpdateDependencies;
  72. Assert.IsTrue(result);
  73. }
  74. [Test]
  75. public void HasPackageScriptsToRun_PackageHasInitPowerShellScript_ReturnsTrue()
  76. {
  77. PackageOperation operation = CreateInstallOperationWithFile(@"tools\install.ps1");
  78. CreateActionWithOperations(operation);
  79. bool result = action.HasPackageScriptsToRun();
  80. Assert.IsTrue(result);
  81. }
  82. [Test]
  83. public void HasPackageScriptsToRun_PackageHasOneTextFile_ReturnsFalse()
  84. {
  85. PackageOperation operation = CreateInstallOperationWithFile(@"tools\readme.txt");
  86. CreateActionWithOperations(operation);
  87. bool result = action.HasPackageScriptsToRun();
  88. Assert.IsFalse(result);
  89. }
  90. [Test]
  91. public void Execute_UpdatePackagesAction_PackagesUpdatedUsingProject()
  92. {
  93. CreateAction();
  94. action.Execute();
  95. project.AssertWasCalled(p => p.UpdatePackages(action));
  96. }
  97. [Test]
  98. public void Execute_UpdatePackagesActionWithOnePackageOperation_PackagesUpdatedUsingProject()
  99. {
  100. PackageOperation operation = CreateInstallOperationWithFile(@"tools\readme.txt");
  101. CreateActionWithOperations(operation);
  102. action.Execute();
  103. project.AssertWasCalled(p => p.UpdatePackages(action));
  104. }
  105. [Test]
  106. public void Execute_PackageScriptRunnerSet_RunPackageScriptsActionCreatedUsingPackageScriptRunner()
  107. {
  108. CreateAction();
  109. IPackageScriptRunner expectedRunner = CreatePackageScriptRunner();
  110. action.PackageScriptRunner = expectedRunner;
  111. action.Execute();
  112. IPackageScriptRunner actualRunner = action.ScriptRunnerPassedToCreateRunPackageScriptsAction;
  113. Assert.AreEqual(expectedRunner, actualRunner);
  114. }
  115. [Test]
  116. public void Execute_PackageScriptRunnerSet_RunPackageScriptsActionCreatedUsingProject()
  117. {
  118. CreateAction();
  119. action.PackageScriptRunner = CreatePackageScriptRunner();
  120. action.Execute();
  121. IPackageManagementProject actualProject = action.ProjectPassedToCreateRunPackageScriptsAction;
  122. Assert.AreEqual(project, actualProject);
  123. }
  124. [Test]
  125. public void Execute_PackageScriptRunnerSet_RunPackageScriptsActionIsDisposed()
  126. {
  127. CreateAction();
  128. action.PackageScriptRunner = CreatePackageScriptRunner();
  129. action.Execute();
  130. Assert.IsTrue(action.IsRunPackageScriptsActionDisposed);
  131. }
  132. [Test]
  133. public void Execute_NullPackageScriptRunner_RunPackageScriptsActionIsNotCreated()
  134. {
  135. CreateAction();
  136. action.PackageScriptRunner = null;
  137. action.Execute();
  138. Assert.IsFalse(action.IsRunPackageScriptsActionCreated);
  139. }
  140. [Test]
  141. public void Execute_PackageScriptRunnerSet_PackagesAreUpdated()
  142. {
  143. CreateAction();
  144. PackageOperation operation = CreateInstallOperationWithFile(@"tools\readme.txt");
  145. CreateActionWithOperations(operation);
  146. action.PackageScriptRunner = CreatePackageScriptRunner();
  147. action.Execute();
  148. project.AssertWasCalled(p => p.UpdatePackages(action));
  149. }
  150. [Test]
  151. public void Execute_ActionHasOnePackage_ParentPackagesUpdatedEventIsFired()
  152. {
  153. CreateAction();
  154. AddPackageToAction("Test", "1.0");
  155. action.Execute();
  156. packageEvents.AssertWasCalled(events => events.OnParentPackagesUpdated(action.Packages));
  157. }
  158. }
  159. }