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

https://github.com/ajadex/SharpDevelop · C# · 149 lines · 106 code · 26 blank · 17 comment · 0 complexity · dbcb36b9f5c7c4d25d38f00f0f1687d6 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 ICSharpCode.Core;
  21. using ICSharpCode.PackageManagement;
  22. using ICSharpCode.SharpDevelop.Project;
  23. using NuGet;
  24. using NUnit.Framework;
  25. using PackageManagement.Tests.Helpers;
  26. namespace PackageManagement.Tests
  27. {
  28. [TestFixture]
  29. public class PackageReferencesForProjectTests
  30. {
  31. PackageReferencesForProject packageReferencesForProject;
  32. FakePackageReferenceFileFactory fakePackageReferenceFileFactory;
  33. FakePackageReferenceFile fakePackageReferenceFile;
  34. FakePackageReferenceInstaller fakePackageReferenceInstaller;
  35. TestableProject CreateProject()
  36. {
  37. return ProjectHelper.CreateTestProject();
  38. }
  39. void CreatePackageReferencesForProject(MSBuildBasedProject project)
  40. {
  41. fakePackageReferenceFileFactory = new FakePackageReferenceFileFactory();
  42. fakePackageReferenceFile = fakePackageReferenceFileFactory.FakePackageReferenceFile;
  43. fakePackageReferenceInstaller = new FakePackageReferenceInstaller();
  44. packageReferencesForProject =
  45. new PackageReferencesForProject(
  46. project,
  47. fakePackageReferenceInstaller,
  48. fakePackageReferenceFileFactory);
  49. }
  50. void AddPackageReference(string packageId, string version)
  51. {
  52. fakePackageReferenceFile.AddFakePackageReference(packageId, version);
  53. }
  54. void PackageReferenceCollectionAssertAreEqual(IEnumerable<PackageReference> expected, IEnumerable<PackageReference> actual)
  55. {
  56. IEnumerable<string> expectedAsStrings = ConvertToStrings(expected);
  57. IEnumerable<string> actualAsStrings = ConvertToStrings(actual);
  58. CollectionAssert.AreEqual(expectedAsStrings, actualAsStrings);
  59. }
  60. List<string> ConvertToStrings(IEnumerable<PackageReference> packageReferences)
  61. {
  62. var converted = new List<string>();
  63. foreach (PackageReference packageReference in packageReferences) {
  64. string convertedPackageReference = ConvertToString(packageReference);
  65. converted.Add(convertedPackageReference);
  66. }
  67. return converted;
  68. }
  69. string ConvertToString(PackageReference packageReference)
  70. {
  71. return String.Format(
  72. "Id: {0}, Version: {1}",
  73. packageReference.Id,
  74. packageReference.Version);
  75. }
  76. [Test]
  77. public void InstallPackages_OnePackageReferenceInPackageConfigFile_OpensPackageConfigFileInProjectDirectory()
  78. {
  79. TestableProject project = CreateProject();
  80. project.FileName = new FileName(@"d:\projects\myproject\myproject.csproj");
  81. CreatePackageReferencesForProject(project);
  82. AddPackageReference("PackageId", "1.0.3.2");
  83. packageReferencesForProject.InstallPackages();
  84. string fileName = fakePackageReferenceFileFactory.FileNamePassedToCreatePackageReferenceFile;
  85. string expectedFileName = @"d:\projects\myproject\packages.config";
  86. Assert.AreEqual(expectedFileName, fileName);
  87. }
  88. [Test]
  89. public void InstallPackages_OnePackageReferenceInPackageConfigFile_OnePackageInstalled()
  90. {
  91. TestableProject project = CreateProject();
  92. CreatePackageReferencesForProject(project);
  93. AddPackageReference("PackageId", "1.0.3.2");
  94. packageReferencesForProject.InstallPackages();
  95. IEnumerable<PackageReference> packageReferencesInstalled =
  96. fakePackageReferenceInstaller.PackageReferencesPassedToInstallPackages;
  97. List<PackageReference> expectedPackageReferences =
  98. fakePackageReferenceFile.FakePackageReferences;
  99. CollectionAssert.AreEqual(expectedPackageReferences, packageReferencesInstalled);
  100. }
  101. [Test]
  102. public void InstallPackages_OnePackageReferenceInPackageConfigFile_ProjectPassedToInstaller()
  103. {
  104. TestableProject expectedProject = CreateProject();
  105. CreatePackageReferencesForProject(expectedProject);
  106. AddPackageReference("PackageId", "1.0.3.2");
  107. packageReferencesForProject.InstallPackages();
  108. MSBuildBasedProject project = fakePackageReferenceInstaller.ProjectPassedToInstallPackages;
  109. Assert.AreEqual(expectedProject, project);
  110. }
  111. [Test]
  112. public void RemovePackageReferences_TwoPackageReferencesInPackageConfigFile_PackageReferenceFileIsDeleted()
  113. {
  114. TestableProject project = CreateProject();
  115. CreatePackageReferencesForProject(project);
  116. AddPackageReference("One", "1.0.3.2");
  117. AddPackageReference("Two", "2.0.44");
  118. packageReferencesForProject.RemovePackageReferences();
  119. bool deleted = fakePackageReferenceFile.IsDeleteCalled;
  120. Assert.IsTrue(deleted);
  121. }
  122. }
  123. }