Browse Source

Move package repository code into separate class.

pull/15/head
Matt Ward 14 years ago
parent
commit
8eee3a31f6
  1. 15
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs
  2. 4
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs
  3. 4
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs
  4. 4
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
  5. 6
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableGetPackageCmdlet.cs
  6. 84
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs
  7. 9
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  8. 4
      src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceView.xaml
  9. 11
      src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs
  10. 10
      src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs
  11. 4
      src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeLicenseAcceptanceViewModel.cs
  12. 14
      src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimePackagesViewModel.cs
  13. 7
      src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageRepositories.cs
  14. 69
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
  15. 9
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageRepository.cs
  16. 85
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeRegisteredPackageRepositories.cs
  17. 7
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
  18. 3
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageRepositoryCache.cs
  19. 5
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelFactory.cs
  20. 21
      src/AddIns/Misc/PackageManagement/Project/Src/IRegisteredPackageRepositories.cs
  21. 11
      src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageRepositoryFactory.cs
  22. 13
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs
  23. 4
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml
  24. 119
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
  25. 39
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs
  26. 30
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementViewModels.cs
  27. 62
      src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs
  28. 9
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  29. 23
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs
  30. 46
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  31. 22
      src/AddIns/Misc/PackageManagement/Project/Src/RecentPackageRepository.cs
  32. 13
      src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs
  33. 84
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageRepositories.cs
  34. 4
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleView.xaml
  35. 22
      src/AddIns/Misc/PackageManagement/Project/Src/ServiceLocator.cs
  36. 17
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageRepositoryFactory.cs
  37. 3
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
  38. 8
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
  39. 14
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackages.cs
  40. 18
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
  41. 3
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  42. 16
      src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs
  43. 111
      src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs
  44. 11
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementService.cs
  45. 23
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingRegisteredPackageRepositories.cs
  46. 40
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageRepositoryFactory.cs
  47. 44
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageViewModelFactory.cs
  48. 22
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/OneRegisteredPackageSourceHelper.cs
  49. 5
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs
  50. 19
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModel.cs
  51. 5
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
  52. 2
      src/AddIns/Misc/PackageManagement/Test/Src/InstallPackageActionTests.cs
  53. 13
      src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs
  54. 10
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs
  55. 214
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
  56. 230
      src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs
  57. 2
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
  58. 16
      src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs
  59. 28
      src/AddIns/Misc/PackageManagement/Test/Src/RecentPackageRepositoryTests.cs
  60. 12
      src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs
  61. 252
      src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageRepositoriesTests.cs
  62. 2
      src/AddIns/Misc/PackageManagement/Test/Src/UninstallPackageActionTests.cs
  63. 13
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackagesViewModelTests.cs

15
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs

@ -18,21 +18,25 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -18,21 +18,25 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
int? skip;
int? first;
IRegisteredPackageRepositories registeredPackageRepositories;
public GetPackageCmdlet()
: this(
ServiceLocator.PackageManagementService,
ServiceLocator.PackageManagementConsoleHost,
PackageManagementServices.RegisteredPackageRepositories,
PackageManagementServices.PackageManagementService,
PackageManagementServices.ConsoleHost,
null)
{
}
public GetPackageCmdlet(
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageManagementService packageManagementService,
IPackageManagementConsoleHost consoleHost,
ICmdletTerminatingError terminatingError)
: base(packageManagementService, consoleHost, terminatingError)
{
this.registeredPackageRepositories = registeredPackageRepositories;
}
[Alias("Online", "Remote")]
@ -135,7 +139,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -135,7 +139,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IPackageRepository CreatePackageRepositoryForActivePackageSource()
{
PackageSource source = GetActivePackageSource(Source);
return PackageManagementService.CreatePackageRepository(source);
return registeredPackageRepositories.CreateRepository(source);
}
IQueryable<IPackage> FilterPackages(IQueryable<IPackage> packages)
@ -149,7 +153,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -149,7 +153,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> GetUpdatedPackages()
{
var updatedPackages = new UpdatedPackages(PackageManagementService, DefaultProject);
IPackageRepository aggregateRepository = registeredPackageRepositories.CreateAggregateRepository();
var updatedPackages = new UpdatedPackages(PackageManagementService, aggregateRepository, DefaultProject);
updatedPackages.SearchTerms = Filter;
return updatedPackages.GetUpdatedPackages().AsQueryable();
}
@ -174,7 +179,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -174,7 +179,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> GetRecentPackages()
{
IQueryable<IPackage> packages = PackageManagementService.RecentPackageRepository.GetPackages();
IQueryable<IPackage> packages = registeredPackageRepositories.RecentPackageRepository.GetPackages();
return FilterPackages(packages);
}

4
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs

@ -14,8 +14,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -14,8 +14,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
public InstallPackageCmdlet()
: this(
ServiceLocator.PackageManagementService,
ServiceLocator.PackageManagementConsoleHost,
PackageManagementServices.PackageManagementService,
PackageManagementServices.ConsoleHost,
null)
{
}

4
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs

@ -14,8 +14,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -14,8 +14,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
public UninstallPackageCmdlet()
: this(
ServiceLocator.PackageManagementService,
ServiceLocator.PackageManagementConsoleHost,
PackageManagementServices.PackageManagementService,
PackageManagementServices.ConsoleHost,
null)
{
}

4
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs

@ -14,8 +14,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -14,8 +14,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
public UpdatePackageCmdlet()
: this(
ServiceLocator.PackageManagementService,
ServiceLocator.PackageManagementConsoleHost,
PackageManagementServices.PackageManagementService,
PackageManagementServices.ConsoleHost,
null)
{
}

6
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableGetPackageCmdlet.cs

@ -13,6 +13,7 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -13,6 +13,7 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
public class TestableGetPackageCmdlet : GetPackageCmdlet
{
public FakePackageManagementService FakePackageManagementService;
public FakeRegisteredPackageRepositories FakeRegisteredPackageRepositories;
public FakeCommandRuntime FakeCommandRuntime;
public List<IPackage> PackagesPassedToWriteObject = new List<IPackage>();
public FakePackageManagementConsoleHost FakePackageManagementConsoleHost;
@ -21,6 +22,7 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -21,6 +22,7 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
public TestableGetPackageCmdlet()
: this(
new FakePackageManagementService(),
new FakeRegisteredPackageRepositories(),
new FakePackageManagementConsoleHost(),
new FakeCommandRuntime(),
new FakeCmdletTerminatingError())
@ -29,12 +31,14 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -29,12 +31,14 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
public TestableGetPackageCmdlet(
FakePackageManagementService packageManagementService,
FakeRegisteredPackageRepositories registeredPackageRepositories,
FakePackageManagementConsoleHost consoleHost,
FakeCommandRuntime commandRuntime,
FakeCmdletTerminatingError terminatingError)
: base(packageManagementService, consoleHost, terminatingError)
: base(registeredPackageRepositories, packageManagementService, consoleHost, terminatingError)
{
this.FakePackageManagementService = packageManagementService;
this.FakeRegisteredPackageRepositories = registeredPackageRepositories;
this.FakePackageManagementConsoleHost = consoleHost;
this.FakeCommandRuntime = commandRuntime;
this.CommandRuntime = commandRuntime;

84
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs

@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests
{
TestableGetPackageCmdlet cmdlet;
FakePackageManagementService fakePackageManagementService;
FakeRegisteredPackageRepositories fakeRegisteredPackageRepositories;
FakeCommandRuntime fakeCommandRuntime;
FakeCmdletTerminatingError fakeTerminatingError;
@ -23,6 +24,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -23,6 +24,7 @@ namespace PackageManagement.Cmdlets.Tests
{
cmdlet = new TestableGetPackageCmdlet();
fakePackageManagementService = cmdlet.FakePackageManagementService;
fakeRegisteredPackageRepositories = cmdlet.FakeRegisteredPackageRepositories;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeCommandRuntime = cmdlet.FakeCommandRuntime;
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
@ -65,7 +67,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -65,7 +67,7 @@ namespace PackageManagement.Cmdlets.Tests
FakePackage AddPackageToAggregateRepository(string id, string version)
{
return fakePackageManagementService.AddFakePackageWithVersionToAggregrateRepository(id, version);
return fakeRegisteredPackageRepositories.AddFakePackageWithVersionToAggregrateRepository(id, version);
}
void SetFilterParameter(string filter)
@ -97,8 +99,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -97,8 +99,8 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasOnePackage_OutputIsPackagesFromPackageSourceRepository()
{
CreateCmdlet();
var repository = fakePackageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository;
repository.AddOneFakePackage("Test");
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("Test");
EnableListAvailableParameter();
RunCmdlet();
@ -113,10 +115,10 @@ namespace PackageManagement.Cmdlets.Tests @@ -113,10 +115,10 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasThreePackages_OutputIsPackagesFromPackageSourceRepository()
{
CreateCmdlet();
var repository = fakePackageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository;
repository.AddOneFakePackage("A");
repository.AddOneFakePackage("B");
repository.AddOneFakePackage("C");
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("A");
repository.AddFakePackage("B");
repository.AddFakePackage("C");
EnableListAvailableParameter();
RunCmdlet();
@ -131,9 +133,9 @@ namespace PackageManagement.Cmdlets.Tests @@ -131,9 +133,9 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasTwoPackages_PackagesAreSortedById()
{
CreateCmdlet();
var repository = fakePackageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository;
var packageB = repository.AddOneFakePackage("B");
var packageA = repository.AddOneFakePackage("A");
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
var packageB = repository.AddFakePackage("B");
var packageA = repository.AddFakePackage("A");
EnableListAvailableParameter();
RunCmdlet();
@ -156,7 +158,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -156,7 +158,7 @@ namespace PackageManagement.Cmdlets.Tests
EnableListAvailableParameter();
RunCmdlet();
var actualSource = fakePackageManagementService.PackageSourcePassedToCreatePackageRepository;
var actualSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
Assert.AreEqual(source, actualSource);
}
@ -167,8 +169,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -167,8 +169,8 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet();
AddDefaultProjectToConsoleHost();
FakeProjectManager projectManager = fakePackageManagementService.FakeProjectManagerToReturnFromCreateProjectManager;
projectManager.FakeLocalRepository.AddOneFakePackage("One");
projectManager.FakeLocalRepository.AddOneFakePackage("Two");
projectManager.FakeLocalRepository.AddFakePackage("One");
projectManager.FakeLocalRepository.AddFakePackage("Two");
RunCmdlet();
@ -186,7 +188,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -186,7 +188,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var actualSource = fakePackageManagementService.PackageSourcePassedToCreatePackageRepository;
var actualSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
Assert.AreEqual(source, actualSource);
}
@ -200,7 +202,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -200,7 +202,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var actualRepository = fakePackageManagementService.PackageRepositoryPassedToCreateProjectManager;
var expectedRepository = fakePackageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository;
var expectedRepository = fakeRegisteredPackageRepositories.FakePackageRepository;
Assert.AreEqual(expectedRepository, actualRepository);
}
@ -260,7 +262,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -260,7 +262,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var actualRepository = fakePackageManagementService.PackageRepositoryPassedToCreateProjectManager;
var expectedRepository = fakePackageManagementService.FakeAggregateRepository;
var expectedRepository = fakeRegisteredPackageRepositories.FakeAggregateRepository;
Assert.AreEqual(expectedRepository, actualRepository);
}
@ -269,10 +271,10 @@ namespace PackageManagement.Cmdlets.Tests @@ -269,10 +271,10 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesAndFilterResults_PackagesReturnedMatchFilter()
{
CreateCmdlet();
var repository = fakePackageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository;
repository.AddOneFakePackage("A");
var package = repository.AddOneFakePackage("B");
repository.AddOneFakePackage("C");
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("A");
var package = repository.AddFakePackage("B");
repository.AddFakePackage("C");
EnableListAvailableParameter();
SetFilterParameter("B");
@ -292,8 +294,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -292,8 +294,8 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet();
AddPackageSourceToConsoleHost();
FakeProjectManager projectManager = fakePackageManagementService.FakeProjectManagerToReturnFromCreateProjectManager;
projectManager.FakeLocalRepository.AddOneFakePackage("A");
var package = projectManager.FakeLocalRepository.AddOneFakePackage("B");
projectManager.FakeLocalRepository.AddFakePackage("A");
var package = projectManager.FakeLocalRepository.AddFakePackage("B");
SetFilterParameter("B");
RunCmdlet();
@ -332,13 +334,13 @@ namespace PackageManagement.Cmdlets.Tests @@ -332,13 +334,13 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesWhenPackageSourceParameterSpecified_PackageRepositoryCreatedForPackageSourceSpecifiedByParameter()
{
CreateCmdlet();
var repository = fakePackageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository;
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
SetSourceParameter("http://sharpdevelop.com/packages");
EnableListAvailableParameter();
RunCmdlet();
var actualPackageSource = fakePackageManagementService.PackageSourcePassedToCreatePackageRepository.Source;
var actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository.Source;
var expectedPackageSource = "http://sharpdevelop.com/packages";
Assert.AreEqual(expectedPackageSource, actualPackageSource);
@ -352,7 +354,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -352,7 +354,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var actualPackageSource = fakePackageManagementService.PackageSourcePassedToCreatePackageRepository.Source;
var actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository.Source;
var expectedPackageSource = "http://test";
Assert.AreEqual(expectedPackageSource, actualPackageSource);
@ -363,8 +365,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -363,8 +365,8 @@ namespace PackageManagement.Cmdlets.Tests
{
CreateCmdlet();
var recentPackageRepository = fakePackageManagementService.FakeRecentPackageRepository;
recentPackageRepository.AddOneFakePackage("A");
var recentPackageRepository = fakeRegisteredPackageRepositories.FakeRecentPackageRepository;
recentPackageRepository.AddFakePackage("A");
EnableRecentParameter();
RunCmdlet();
@ -380,9 +382,9 @@ namespace PackageManagement.Cmdlets.Tests @@ -380,9 +382,9 @@ namespace PackageManagement.Cmdlets.Tests
{
CreateCmdlet();
var recentPackageRepository = fakePackageManagementService.FakeRecentPackageRepository;
recentPackageRepository.AddOneFakePackage("A");
var packageB = recentPackageRepository.AddOneFakePackage("B");
var recentPackageRepository = fakeRegisteredPackageRepositories.FakeRecentPackageRepository;
recentPackageRepository.AddFakePackage("A");
var packageB = recentPackageRepository.AddFakePackage("B");
EnableRecentParameter();
SetFilterParameter("B");
@ -402,9 +404,9 @@ namespace PackageManagement.Cmdlets.Tests @@ -402,9 +404,9 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet();
AddPackageSourceToConsoleHost();
FakeProjectManager projectManager = fakePackageManagementService.FakeProjectManagerToReturnFromCreateProjectManager;
var packageA = projectManager.FakeLocalRepository.AddOneFakePackage("A");
var packageB = projectManager.FakeLocalRepository.AddOneFakePackage("B");
var packageC = projectManager.FakeLocalRepository.AddOneFakePackage("C");
var packageA = projectManager.FakeLocalRepository.AddFakePackage("A");
var packageB = projectManager.FakeLocalRepository.AddFakePackage("B");
var packageC = projectManager.FakeLocalRepository.AddFakePackage("C");
SetFilterParameter("B C");
RunCmdlet();
@ -474,10 +476,10 @@ namespace PackageManagement.Cmdlets.Tests @@ -474,10 +476,10 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailableAndSkipFirstTwoPackages_ReturnsAllPackagesExceptionFirstTwo()
{
CreateCmdlet();
var repository = fakePackageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository;
repository.AddOneFakePackage("A");
repository.AddOneFakePackage("B");
var packageC = repository.AddOneFakePackage("C");
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("A");
repository.AddFakePackage("B");
var packageC = repository.AddFakePackage("C");
EnableListAvailableParameter();
SetSkipParameter(2);
@ -504,10 +506,10 @@ namespace PackageManagement.Cmdlets.Tests @@ -504,10 +506,10 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailableAndFirstTwo_ReturnsFirstTwoPackages()
{
CreateCmdlet();
var repository = fakePackageManagementService.FakePackageRepositoryToReturnFromCreatePackageRepository;
var packageA = repository.AddOneFakePackage("A");
var packageB = repository.AddOneFakePackage("B");
repository.AddOneFakePackage("C");
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
var packageA = repository.AddFakePackage("A");
var packageB = repository.AddFakePackage("B");
repository.AddFakePackage("C");
EnableListAvailableParameter();
SetFirstParameter(2);

9
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -66,6 +66,7 @@ @@ -66,6 +66,7 @@
</Compile>
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Src\AddPackageReferenceCommand.cs" />
<Compile Include="Src\RegisteredPackageRepositories.cs" />
<Compile Include="Src\AddPackageReferenceView.xaml.cs">
<DependentUpon>AddPackageReferenceView.xaml</DependentUpon>
<SubType>Code</SubType>
@ -76,8 +77,9 @@ @@ -76,8 +77,9 @@
<Compile Include="Src\DelegateCommand.cs" />
<Compile Include="Src\Design\DesignTimeLicenseAcceptanceViewModel.cs" />
<Compile Include="Src\Design\DesignTimePackageManagementOptionsViewModel.cs" />
<Compile Include="Src\Design\DesignTimePackageManagementService.cs" />
<Compile Include="Src\Design\DesignTimeRegisteredPackageRepositories.cs" />
<Compile Include="Src\Design\DesignTimePackagesViewModel.cs" />
<Compile Include="Src\Design\FakeRegisteredPackageRepositories.cs" />
<Compile Include="Src\Design\FakeFileSystem.cs" />
<Compile Include="Src\Design\FakeInstallPackageTask.cs" />
<Compile Include="Src\Design\FakePackage.cs" />
@ -92,6 +94,7 @@ @@ -92,6 +94,7 @@
<Compile Include="Src\Design\FakeUninstallPackageAction.cs" />
<Compile Include="Src\Design\FakeUpdatePackageAction.cs" />
<Compile Include="Src\Design\WpfDesigner.cs" />
<Compile Include="Src\IRegisteredPackageRepositories.cs" />
<Compile Include="Src\ICompilerMessageView.cs" />
<Compile Include="Src\IMessageReporter.cs" />
<Compile Include="Src\IMessageViewCategory.cs" />
@ -183,7 +186,7 @@ @@ -183,7 +186,7 @@
<Compile Include="Src\Scripting\PowerShellHostFactory.cs" />
<Compile Include="Src\Scripting\PowerShellHostUserInterface.cs" />
<Compile Include="Src\SelectedListBoxItemScrollingBehaviour.cs" />
<Compile Include="Src\ServiceLocator.cs" />
<Compile Include="Src\PackageManagementServices.cs" />
<Compile Include="Src\SharpDevelopPackageManager.cs" />
<Compile Include="Src\SharpDevelopPackageManagerFactory.cs" />
<Compile Include="Src\SharpDevelopPackageRepositoryFactory.cs" />
@ -196,7 +199,7 @@ @@ -196,7 +199,7 @@
<Compile Include="Src\UpdatedPackageViewModelFactory.cs" />
<Compile Include="Src\UpdatePackageAction.cs" />
<Compile Include="Src\ViewModelBase.cs" />
<Compile Include="Src\ViewModelLocator.cs" />
<Compile Include="Src\PackageManagementViewModels.cs" />
</ItemGroup>
<ItemGroup>
<Page Include="Src\AddPackageReferenceView.xaml" />

4
src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceView.xaml

@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
<Window.Resources>
<Style TargetType="Button" BasedOn="{x:Static core:GlobalStyles.ButtonStyle}"/>
<pm:ViewModelLocator x:Key="ViewModelLocator"/>
<pm:PackageManagementViewModels x:Key="ViewModels"/>
<BooleanToVisibilityConverter x:Key="BoolToVisibility"/>
<BitmapImage x:Key="ErrorIcon"
@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
<!-- Use DockPanel.DataContext instead of Window.DataContext otherwise Visual Studio does not show
design time data -->
<DockPanel.DataContext>
<Binding Source="{StaticResource ViewModelLocator}" Path="AddPackageReferenceViewModel"/>
<Binding Source="{StaticResource ViewModels}" Path="AddPackageReferenceViewModel"/>
</DockPanel.DataContext>
<Grid
DockPanel.Dock="Bottom"

11
src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs

@ -16,15 +16,18 @@ namespace ICSharpCode.PackageManagement @@ -16,15 +16,18 @@ namespace ICSharpCode.PackageManagement
public AddPackageReferenceViewModel(
IPackageManagementService packageManagementService,
IRegisteredPackageRepositories registeredPackageRepositories,
ITaskFactory taskFactory)
{
this.packageManagementService = packageManagementService;
this.packageManagementService.OutputMessagesView.Clear();
AvailablePackagesViewModel = new AvailablePackagesViewModel(packageManagementService, this, taskFactory);
InstalledPackagesViewModel = new InstalledPackagesViewModel(packageManagementService, this, taskFactory);
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(packageManagementService, this, taskFactory);
RecentPackagesViewModel = new RecentPackagesViewModel(packageManagementService, this, taskFactory);
var packageViewModelFactory = new PackageViewModelFactory(registeredPackageRepositories, packageManagementService, new LicenseAcceptanceService(), this);
AvailablePackagesViewModel = new AvailablePackagesViewModel(registeredPackageRepositories, packageViewModelFactory, taskFactory);
InstalledPackagesViewModel = new InstalledPackagesViewModel(packageManagementService, registeredPackageRepositories, packageViewModelFactory, taskFactory);
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(packageManagementService, registeredPackageRepositories, packageViewModelFactory, taskFactory);
RecentPackagesViewModel = new RecentPackagesViewModel(packageManagementService, registeredPackageRepositories, packageViewModelFactory, taskFactory);
AvailablePackagesViewModel.ReadPackages();
InstalledPackagesViewModel.ReadPackages();

10
src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs

@ -15,19 +15,19 @@ namespace ICSharpCode.PackageManagement @@ -15,19 +15,19 @@ namespace ICSharpCode.PackageManagement
string errorMessage;
public AvailablePackagesViewModel(
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(packageManagementService, messageReporter, taskFactory)
: base(registeredPackageRepositories, packageViewModelFactory, taskFactory)
{
IsSearchable = true;
ShowPackageSources = packageManagementService.HasMultiplePackageSources;
ShowPackageSources = registeredPackageRepositories.HasMultiplePackageSources;
}
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
{
try {
repository = PackageManagementService.ActivePackageRepository;
repository = RegisteredPackageRepositories.ActiveRepository;
} catch (Exception ex) {
errorMessage = ex.Message;
}

4
src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeLicenseAcceptanceViewModel.cs

@ -16,8 +16,8 @@ namespace ICSharpCode.PackageManagement.Design @@ -16,8 +16,8 @@ namespace ICSharpCode.PackageManagement.Design
static IEnumerable<IPackage> CreatePackages()
{
var packageManagementService = new DesignTimePackageManagementService();
return packageManagementService.FakeActivePackageRepository.FakePackages;
var packageManagementService = new DesignTimeRegisteredPackageRepositories();
return packageManagementService.FakeActiveRepository.FakePackages;
}
}
}

14
src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimePackagesViewModel.cs

@ -11,7 +11,17 @@ namespace ICSharpCode.PackageManagement.Design @@ -11,7 +11,17 @@ namespace ICSharpCode.PackageManagement.Design
public class DesignTimePackagesViewModel : PackagesViewModel
{
public DesignTimePackagesViewModel()
: base(new DesignTimePackageManagementService(), (IMessageReporter)null, new PackageManagementTaskFactory())
: this(new DesignTimeRegisteredPackageRepositories(), new FakePackageManagementService())
{
}
public DesignTimePackagesViewModel(
DesignTimeRegisteredPackageRepositories registeredPackageRepositories,
FakePackageManagementService packageManagementService)
: base(
registeredPackageRepositories,
new PackageViewModelFactory(registeredPackageRepositories, packageManagementService, null, null),
new PackageManagementTaskFactory())
{
PageSize = 3;
AddPackageViewModels();
@ -19,7 +29,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -19,7 +29,7 @@ namespace ICSharpCode.PackageManagement.Design
void AddPackageViewModels()
{
IQueryable<IPackage> packages = PackageManagementService.ActivePackageRepository.GetPackages();
IQueryable<IPackage> packages = RegisteredPackageRepositories.ActiveRepository.GetPackages();
PackageViewModels.AddRange(ConvertToPackageViewModels(packages));
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimePackageManagementService.cs → src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageRepositories.cs

@ -7,9 +7,9 @@ using NuGet; @@ -7,9 +7,9 @@ using NuGet;
namespace ICSharpCode.PackageManagement.Design
{
public class DesignTimePackageManagementService : FakePackageManagementService
public class DesignTimeRegisteredPackageRepositories : FakeRegisteredPackageRepositories
{
public DesignTimePackageManagementService()
public DesignTimeRegisteredPackageRepositories()
{
AddDesignTimePackages();
ActivePackageSource = new PackageSource("http://nuget.org", "NuGet Official Package Source");
@ -19,8 +19,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -19,8 +19,7 @@ namespace ICSharpCode.PackageManagement.Design
{
for (int i = 0; i < 5; ++i) {
FakePackage package = CreatePackage(i);
FakeActiveProjectManager.FakeLocalRepository.FakePackages.Add(package);
FakeActivePackageRepository.FakePackages.Add(package);
FakeActiveRepository.FakePackages.Add(package);
}
}

69
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs

@ -34,20 +34,11 @@ namespace ICSharpCode.PackageManagement.Design @@ -34,20 +34,11 @@ namespace ICSharpCode.PackageManagement.Design
public FakeProjectManager FakeActiveProjectManager { get; set; }
public FakePackageRepository FakeActivePackageRepository {
get { return ActivePackageRepository as FakePackageRepository; }
set { ActivePackageRepository = value; }
}
public FakePackageManagementService()
{
FakeActiveProjectManager = new FakeProjectManager();
FakeActivePackageRepository = new FakePackageRepository();
FakeActiveProjectManager.FakeSourceRepository = FakeActivePackageRepository;
}
public virtual IPackageRepository ActivePackageRepository { get; set; }
public virtual IProjectManager ActiveProjectManager {
get { return FakeActiveProjectManager; }
}
@ -87,60 +78,12 @@ namespace ICSharpCode.PackageManagement.Design @@ -87,60 +78,12 @@ namespace ICSharpCode.PackageManagement.Design
get { return options; }
}
public void ClearPackageSources()
{
options.PackageSources.Clear();
}
public PackageSource AddOnePackageSource()
{
return AddOnePackageSource("Test");
}
public PackageSource AddOnePackageSource(string name)
{
var source = new PackageSource("http://sharpdevelop.codeplex.com", name);
options.PackageSources.Add(source);
return source;
}
public bool HasMultiplePackageSources { get; set; }
public void AddPackageSources(IEnumerable<PackageSource> sources)
{
options.PackageSources.AddRange(sources);
}
public PackageSource ActivePackageSource { get; set; }
public FakePackageRepository FakeAggregateRepository = new FakePackageRepository();
public IPackageRepository CreateAggregatePackageRepository()
{
return FakeAggregateRepository;
}
public FakePackageManagementOutputMessagesView FakeOutputMessagesView = new FakePackageManagementOutputMessagesView();
public IPackageManagementOutputMessagesView OutputMessagesView {
get { return FakeOutputMessagesView; }
}
public FakePackageRepository FakeRecentPackageRepository = new FakePackageRepository();
public IPackageRepository RecentPackageRepository {
get { return FakeRecentPackageRepository; }
}
public FakePackageRepository FakePackageRepositoryToReturnFromCreatePackageRepository = new FakePackageRepository();
public PackageSource PackageSourcePassedToCreatePackageRepository;
public IPackageRepository CreatePackageRepository(PackageSource source)
{
PackageSourcePassedToCreatePackageRepository = source;
return FakePackageRepositoryToReturnFromCreatePackageRepository;
}
public FakeProjectManager FakeProjectManagerToReturnFromCreateProjectManager = new FakeProjectManager();
public IPackageRepository PackageRepositoryPassedToCreateProjectManager;
public MSBuildBasedProject ProjectPassedToCreateProjectManager;
@ -179,18 +122,6 @@ namespace ICSharpCode.PackageManagement.Design @@ -179,18 +122,6 @@ namespace ICSharpCode.PackageManagement.Design
return FakePackageManagerToReturnFromCreatePackageManager;
}
public FakePackage AddFakePackageWithVersionToAggregrateRepository(string version)
{
return AddFakePackageWithVersionToAggregrateRepository("Test", version);
}
public FakePackage AddFakePackageWithVersionToAggregrateRepository(string id, string version)
{
var package = FakePackage.CreatePackageWithVersion(id, version);
FakeAggregateRepository.FakePackages.Add(package);
return package;
}
public FakeUpdatePackageAction ActionToReturnFromCreateUpdatePackageAction =
new FakeUpdatePackageAction();

9
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageRepository.cs

@ -35,11 +35,18 @@ namespace ICSharpCode.PackageManagement.Design @@ -35,11 +35,18 @@ namespace ICSharpCode.PackageManagement.Design
public string Source { get; set; }
public FakePackage AddOneFakePackage(string packageId)
public FakePackage AddFakePackage(string packageId)
{
var package = new FakePackage(packageId);
FakePackages.Add(package);
return package;
}
public FakePackage AddFakePackageWithVersion(string packageId, string version)
{
var package = FakePackage.CreatePackageWithVersion(packageId, version);
FakePackages.Add(package);
return package;
}
}
}

85
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeRegisteredPackageRepositories.cs

@ -0,0 +1,85 @@ @@ -0,0 +1,85 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using NuGet;
namespace ICSharpCode.PackageManagement.Design
{
public class FakeRegisteredPackageRepositories : IRegisteredPackageRepositories
{
public FakeRegisteredPackageRepositories()
{
PackageSources = new RegisteredPackageSources(new PackageSource[0]);
}
public FakePackageRepository FakeActiveRepository = new FakePackageRepository();
public virtual IPackageRepository ActiveRepository {
get { return FakeActiveRepository; }
}
public FakePackageRepository FakeRecentPackageRepository = new FakePackageRepository();
public IPackageRepository RecentPackageRepository {
get { return FakeRecentPackageRepository; }
}
public bool HasMultiplePackageSources { get; set; }
public PackageSource ActivePackageSource { get; set; }
public RegisteredPackageSources PackageSources { get; set; }
public FakePackageRepository FakePackageRepository = new FakePackageRepository();
public PackageSource PackageSourcePassedToCreateRepository;
public IPackageRepository CreateRepository(PackageSource source)
{
PackageSourcePassedToCreateRepository = source;
return FakePackageRepository;
}
public FakePackageRepository FakeAggregateRepository = new FakePackageRepository();
public IPackageRepository CreateAggregateRepository()
{
return FakeAggregateRepository;
}
public void ClearPackageSources()
{
PackageSources.Clear();
}
public PackageSource AddOnePackageSource()
{
return AddOnePackageSource("Test");
}
public PackageSource AddOnePackageSource(string name)
{
var source = new PackageSource("http://sharpdevelop.codeplex.com", name);
PackageSources.Add(source);
return source;
}
public void AddPackageSources(IEnumerable<PackageSource> sources)
{
PackageSources.AddRange(sources);
}
public FakePackage AddFakePackageWithVersionToAggregrateRepository(string version)
{
return AddFakePackageWithVersionToAggregrateRepository("Test", version);
}
public FakePackage AddFakePackageWithVersionToAggregrateRepository(string id, string version)
{
var package = FakePackage.CreatePackageWithVersion(id, version);
FakeAggregateRepository.FakePackages.Add(package);
return package;
}
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs

@ -13,16 +13,12 @@ namespace ICSharpCode.PackageManagement @@ -13,16 +13,12 @@ namespace ICSharpCode.PackageManagement
event EventHandler ParentPackageInstalled;
event EventHandler ParentPackageUninstalled;
IPackageRepository CreateAggregatePackageRepository();
IPackageRepository CreatePackageRepository(PackageSource source);
ISharpDevelopProjectManager CreateProjectManager(IPackageRepository repository, MSBuildBasedProject project);
ISharpDevelopPackageManager CreatePackageManagerForActiveProject();
ISharpDevelopPackageManager CreatePackageManagerForActiveProject(IPackageRepository packageRepository);
ISharpDevelopPackageManager CreatePackageManager(PackageSource packageSource, MSBuildBasedProject project);
IPackageRepository ActivePackageRepository { get; }
IProjectManager ActiveProjectManager { get; }
IPackageRepository RecentPackageRepository { get; }
InstallPackageAction CreateInstallPackageAction();
UninstallPackageAction CreateUninstallPackageAction();
@ -33,9 +29,6 @@ namespace ICSharpCode.PackageManagement @@ -33,9 +29,6 @@ namespace ICSharpCode.PackageManagement
PackageManagementOptions Options { get; }
bool HasMultiplePackageSources { get; }
PackageSource ActivePackageSource { get; set; }
IPackageManagementOutputMessagesView OutputMessagesView { get; }
}
}

3
src/AddIns/Misc/PackageManagement/Project/Src/IPackageRepositoryCache.cs

@ -2,10 +2,13 @@ @@ -2,10 +2,13 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public interface IPackageRepositoryCache : ISharpDevelopPackageRepositoryFactory
{
IPackageRepository RecentPackageRepository { get; }
IPackageRepository CreateAggregateRepository();
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelFactory.cs

@ -9,5 +9,10 @@ namespace ICSharpCode.PackageManagement @@ -9,5 +9,10 @@ namespace ICSharpCode.PackageManagement
public interface IPackageViewModelFactory
{
PackageViewModel CreatePackageViewModel(IPackage package);
IRegisteredPackageRepositories RegisteredPackageRepositories { get; }
IPackageManagementService PackageManagementService { get; }
ILicenseAcceptanceService LicenseAcceptanceService { get; }
IMessageReporter MessageReporter { get; }
}
}

21
src/AddIns/Misc/PackageManagement/Project/Src/IRegisteredPackageRepositories.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public interface IRegisteredPackageRepositories
{
IPackageRepository ActiveRepository { get; }
IPackageRepository RecentPackageRepository { get; }
IPackageRepository CreateRepository(PackageSource source);
IPackageRepository CreateAggregateRepository();
bool HasMultiplePackageSources { get; }
PackageSource ActivePackageSource { get; set; }
RegisteredPackageSources PackageSources { get; }
}
}

11
src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageRepositoryFactory.cs

@ -2,12 +2,21 @@ @@ -2,12 +2,21 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public interface ISharpDevelopPackageRepositoryFactory : IPackageRepositoryFactory
{
ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem);
ISharedPackageRepository CreateSharedRepository(
IPackagePathResolver pathResolver,
IFileSystem fileSystem);
IPackageRepository CreateRecentPackageRepository(
IList<RecentPackageInfo> recentPackages,
IPackageRepository aggregateRepository);
IPackageRepository CreateAggregateRepository(IEnumerable<IPackageRepository> repositories);
}
}

13
src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs

@ -10,16 +10,19 @@ namespace ICSharpCode.PackageManagement @@ -10,16 +10,19 @@ namespace ICSharpCode.PackageManagement
{
public class InstalledPackagesViewModel : PackagesViewModel
{
IPackageManagementService packageManagementService;
IProjectManager projectManager;
IPackageRepository repository;
string errorMessage = String.Empty;
public InstalledPackagesViewModel(
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(packageManagementService, messageReporter, taskFactory)
: base(registeredPackageRepositories, packageViewModelFactory, taskFactory)
{
this.packageManagementService = packageManagementService;
packageManagementService.ParentPackageInstalled += ParentPackageInstalled;
packageManagementService.ParentPackageUninstalled += ParentPackageUninstalled;
@ -29,7 +32,7 @@ namespace ICSharpCode.PackageManagement @@ -29,7 +32,7 @@ namespace ICSharpCode.PackageManagement
void GetActiveProjectManager()
{
try {
this.projectManager = PackageManagementService.ActiveProjectManager;
this.projectManager = packageManagementService.ActiveProjectManager;
} catch (Exception ex) {
errorMessage = ex.Message;
}
@ -47,8 +50,8 @@ namespace ICSharpCode.PackageManagement @@ -47,8 +50,8 @@ namespace ICSharpCode.PackageManagement
protected override void OnDispose()
{
PackageManagementService.ParentPackageInstalled -= ParentPackageInstalled;
PackageManagementService.ParentPackageUninstalled -= ParentPackageUninstalled;
packageManagementService.ParentPackageInstalled -= ParentPackageInstalled;
packageManagementService.ParentPackageUninstalled -= ParentPackageUninstalled;
}
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()

4
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml

@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
<Grid x:Name="MainGrid">
<Grid.Resources>
<pm:ViewModelLocator x:Key="ViewModelLocator"/>
<pm:PackageManagementViewModels x:Key="ViewModels"/>
<Style
x:Key="ListBoxItemStyle"
@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
</Grid.Resources>
<Grid.DataContext>
<Binding Source="{StaticResource ViewModelLocator}" Path="PackageManagementOptionsViewModel"/>
<Binding Source="{StaticResource ViewModels}" Path="PackageManagementOptionsViewModel"/>
</Grid.DataContext>
<Grid.ColumnDefinitions>

119
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs

@ -14,12 +14,9 @@ namespace ICSharpCode.PackageManagement @@ -14,12 +14,9 @@ namespace ICSharpCode.PackageManagement
{
IPackageManagementOutputMessagesView outputMessagesView;
PackageManagementOptions options;
IPackageRepositoryCache packageRepositoryCache;
IRegisteredPackageRepositories registeredPackageRepositories;
IPackageManagerFactory packageManagerFactory;
IPackageManagementProjectService projectService;
IPackageRepository activePackageRepository;
PackageSource activePackageSource;
RecentPackageRepository recentPackageRepository;
public PackageManagementService(
PackageManagementOptions options,
@ -27,24 +24,55 @@ namespace ICSharpCode.PackageManagement @@ -27,24 +24,55 @@ namespace ICSharpCode.PackageManagement
IPackageManagerFactory packageManagerFactory,
IPackageManagementProjectService projectService,
IPackageManagementOutputMessagesView outputMessagesView)
: this(
options,
new RegisteredPackageRepositories(packageRepositoryCache, options),
packageManagerFactory,
projectService,
outputMessagesView)
{
this.options = options;
this.packageRepositoryCache = packageRepositoryCache;
this.packageManagerFactory = packageManagerFactory;
this.projectService = projectService;
this.outputMessagesView = outputMessagesView;
}
public PackageManagementService()
public PackageManagementService(
PackageManagementOptions options,
IRegisteredPackageRepositories registeredPackageRepositories)
: this(
new PackageManagementOptions(),
new PackageRepositoryCache(),
options,
registeredPackageRepositories,
new SharpDevelopPackageManagerFactory(),
new PackageManagementProjectService(),
new PackageManagementOutputMessagesView())
{
}
public PackageManagementService(
PackageManagementOptions options,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageManagerFactory packageManagerFactory,
IPackageManagementProjectService projectService,
IPackageManagementOutputMessagesView outputMessagesView)
{
this.options = options;
this.registeredPackageRepositories = registeredPackageRepositories;
this.packageManagerFactory = packageManagerFactory;
this.projectService = projectService;
this.outputMessagesView = outputMessagesView;
}
public PackageManagementService(
PackageManagementOptions options,
IPackageManagerFactory packageManagerFactory,
IPackageManagementProjectService projectService,
IPackageManagementOutputMessagesView outputMessagesView)
: this(
options,
new PackageRepositoryCache(options.PackageSources, options.RecentPackages),
packageManagerFactory,
projectService,
outputMessagesView)
{
}
public IPackageManagementOutputMessagesView OutputMessagesView {
get { return outputMessagesView; }
}
@ -71,33 +99,12 @@ namespace ICSharpCode.PackageManagement @@ -71,33 +99,12 @@ namespace ICSharpCode.PackageManagement
}
}
public IPackageRepository RecentPackageRepository {
get {
if (recentPackageRepository == null) {
CreateRecentPackageRepository();
}
return recentPackageRepository;
}
}
IPackageRepository CreateRecentPackageRepository()
{
recentPackageRepository = new RecentPackageRepository(this);
return recentPackageRepository;
}
public IPackageRepository ActivePackageRepository {
get {
if (activePackageRepository == null) {
CreateActivePackageRepository();
}
return activePackageRepository;
}
IPackageRepository RecentPackageRepository {
get { return registeredPackageRepositories.RecentPackageRepository; }
}
void CreateActivePackageRepository()
{
activePackageRepository = packageRepositoryCache.CreateRepository(ActivePackageSource);
IPackageRepository ActivePackageRepository {
get { return registeredPackageRepositories.ActiveRepository; }
}
public IProjectManager ActiveProjectManager {
@ -139,43 +146,9 @@ namespace ICSharpCode.PackageManagement @@ -139,43 +146,9 @@ namespace ICSharpCode.PackageManagement
return CreatePackageManager(packageRepository, project);
}
public bool HasMultiplePackageSources {
get { return options.PackageSources.HasMultiplePackageSources; }
}
public PackageSource ActivePackageSource {
get {
activePackageSource = options.ActivePackageSource;
if (activePackageSource == null) {
activePackageSource = options.PackageSources[0];
}
return activePackageSource;
}
set {
if (activePackageSource != value) {
activePackageSource = value;
options.ActivePackageSource = value;
activePackageRepository = null;
}
}
}
public IPackageRepository CreateAggregatePackageRepository()
{
IEnumerable<IPackageRepository> allRepositories = CreateAllRepositories();
return new AggregateRepository(allRepositories);
}
IEnumerable<IPackageRepository> CreateAllRepositories()
{
foreach (PackageSource source in options.PackageSources) {
yield return CreatePackageRepository(source);
}
}
public IPackageRepository CreatePackageRepository(PackageSource source)
IPackageRepository CreatePackageRepository(PackageSource source)
{
return packageRepositoryCache.CreateRepository(source);
return registeredPackageRepositories.CreateRepository(source);
}
public InstallPackageAction CreateInstallPackageAction()

39
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Scripting;
namespace ICSharpCode.PackageManagement
{
public static class PackageManagementServices
{
static readonly PackageManagementOptions options;
static readonly PackageManagementService packageManagementService;
static readonly PackageManagementConsoleHost consoleHost = new PackageManagementConsoleHost();
static readonly RegisteredPackageRepositories registeredPackageRepositories;
static PackageManagementServices()
{
options = new PackageManagementOptions();
registeredPackageRepositories = new RegisteredPackageRepositories(options);
packageManagementService = new PackageManagementService(options, registeredPackageRepositories);
}
public static PackageManagementOptions Options {
get { return options; }
}
public static IPackageManagementService PackageManagementService {
get { return packageManagementService; }
}
public static IPackageManagementConsoleHost ConsoleHost {
get { return consoleHost; }
}
public static IRegisteredPackageRepositories RegisteredPackageRepositories {
get { return registeredPackageRepositories; }
}
}
}

30
src/AddIns/Misc/PackageManagement/Project/Src/ViewModelLocator.cs → src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementViewModels.cs

@ -7,12 +7,13 @@ using ICSharpCode.PackageManagement.Scripting; @@ -7,12 +7,13 @@ using ICSharpCode.PackageManagement.Scripting;
namespace ICSharpCode.PackageManagement
{
public class ViewModelLocator
public class PackageManagementViewModels
{
AddPackageReferenceViewModel addPackageReferenceViewModel;
PackageManagementOptionsViewModel packageManagementOptionsViewModel;
PackageManagementConsoleViewModel packageManagementConsoleViewModel;
IPackageManagementService packageManagementService;
IRegisteredPackageRepositories registeredPackageRepositories;
public AddPackageReferenceViewModel AddPackageReferenceViewModel {
get {
@ -23,20 +24,37 @@ namespace ICSharpCode.PackageManagement @@ -23,20 +24,37 @@ namespace ICSharpCode.PackageManagement
void CreateAddPackageReferenceViewModel()
{
CreateRegisteredPackageRepositories();
CreatePackageManagementService();
addPackageReferenceViewModel = new AddPackageReferenceViewModel(packageManagementService, new PackageManagementTaskFactory());
addPackageReferenceViewModel =
new AddPackageReferenceViewModel(
packageManagementService,
registeredPackageRepositories,
new PackageManagementTaskFactory());
}
void CreatePackageManagementService()
{
if (packageManagementService == null) {
if (IsInDesignMode()) {
packageManagementService = new DesignTimePackageManagementService();
packageManagementService = new FakePackageManagementService();
} else {
packageManagementService = PackageManagementServices.PackageManagementService;
}
packageManagementService = ServiceLocator.PackageManagementService;
}
}
void CreateRegisteredPackageRepositories()
{
if (registeredPackageRepositories == null) {
if (IsInDesignMode()) {
registeredPackageRepositories = new DesignTimeRegisteredPackageRepositories();
} else {
registeredPackageRepositories = PackageManagementServices.RegisteredPackageRepositories;
}
}
}
bool IsInDesignMode()
{
return WpfDesigner.IsInDesignMode();
@ -73,10 +91,10 @@ namespace ICSharpCode.PackageManagement @@ -73,10 +91,10 @@ namespace ICSharpCode.PackageManagement
void CreatePackageManagementConsoleViewModel()
{
CreatePackageManagementService();
var consoleHost = ServiceLocator.PackageManagementConsoleHost;
var consoleHost = PackageManagementServices.ConsoleHost;
packageManagementConsoleViewModel =
new PackageManagementConsoleViewModel(
packageManagementService.Options.PackageSources,
PackageManagementServices.RegisteredPackageRepositories.PackageSources,
consoleHost);
}
}

62
src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs

@ -10,16 +10,29 @@ namespace ICSharpCode.PackageManagement @@ -10,16 +10,29 @@ namespace ICSharpCode.PackageManagement
public class PackageRepositoryCache : IPackageRepositoryCache
{
ISharpDevelopPackageRepositoryFactory factory;
RegisteredPackageSources registeredPackageSources;
IList<RecentPackageInfo> recentPackages;
IPackageRepository recentPackageRepository;
Dictionary<PackageSource, IPackageRepository> repositories =
new Dictionary<PackageSource, IPackageRepository>();
public PackageRepositoryCache(ISharpDevelopPackageRepositoryFactory factory)
public PackageRepositoryCache(
ISharpDevelopPackageRepositoryFactory factory,
RegisteredPackageSources registeredPackageSources,
IList<RecentPackageInfo> recentPackages)
{
this.factory = factory;
this.registeredPackageSources = registeredPackageSources;
this.recentPackages = recentPackages;
}
public PackageRepositoryCache()
: this(new SharpDevelopPackageRepositoryFactory())
public PackageRepositoryCache(
RegisteredPackageSources registeredPackageSources,
IList<RecentPackageInfo> recentPackages)
: this(
new SharpDevelopPackageRepositoryFactory(),
registeredPackageSources,
recentPackages)
{
}
@ -52,5 +65,48 @@ namespace ICSharpCode.PackageManagement @@ -52,5 +65,48 @@ namespace ICSharpCode.PackageManagement
{
return factory.CreateSharedRepository(pathResolver, fileSystem);
}
public IPackageRepository CreateAggregateRepository()
{
IEnumerable<IPackageRepository> allRepositories = CreateAllRepositories();
return CreateAggregateRepository(allRepositories);
}
IEnumerable<IPackageRepository> CreateAllRepositories()
{
foreach (PackageSource source in registeredPackageSources) {
yield return CreateRepository(source);
}
}
public IPackageRepository CreateAggregateRepository(IEnumerable<IPackageRepository> repositories)
{
return factory.CreateAggregateRepository(repositories);
}
public IPackageRepository RecentPackageRepository {
get {
CreateRecentPackageRepository();
return recentPackageRepository;
}
}
void CreateRecentPackageRepository()
{
if (recentPackageRepository == null) {
IPackageRepository aggregateRepository = CreateAggregateRepository();
CreateRecentPackageRepository(recentPackages, aggregateRepository);
}
}
public IPackageRepository CreateRecentPackageRepository(
IList<RecentPackageInfo> recentPackages,
IPackageRepository aggregateRepository)
{
if (recentPackageRepository == null) {
recentPackageRepository = factory.CreateRecentPackageRepository(recentPackages, aggregateRepository);
}
return recentPackageRepository;
}
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

@ -19,17 +19,18 @@ namespace ICSharpCode.PackageManagement @@ -19,17 +19,18 @@ namespace ICSharpCode.PackageManagement
IMessageReporter messageReporter;
IPackage package;
IEnumerable<PackageOperation> packageOperations = new PackageOperation[0];
IPackageRepository sourcePackageRepository;
IPackageRepository sourceRepository;
bool? hasDependencies;
public PackageViewModel(
IPackage package,
IPackageRepository sourceRepository,
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReporter)
{
this.package = package;
this.sourcePackageRepository = packageManagementService.ActivePackageRepository;
this.sourceRepository = sourceRepository;
this.packageManagementService = packageManagementService;
this.licenseAcceptanceService = licenseAcceptanceService;
this.messageReporter = messageReporter;
@ -272,7 +273,7 @@ namespace ICSharpCode.PackageManagement @@ -272,7 +273,7 @@ namespace ICSharpCode.PackageManagement
void InstallPackage()
{
InstallPackage(sourcePackageRepository, package, packageOperations);
InstallPackage(sourceRepository, package, packageOperations);
OnPropertyChanged(model => model.IsAdded);
}
@ -317,7 +318,7 @@ namespace ICSharpCode.PackageManagement @@ -317,7 +318,7 @@ namespace ICSharpCode.PackageManagement
{
try {
var action = packageManagementService.CreateUninstallPackageAction();
action.PackageRepository = sourcePackageRepository;
action.PackageRepository = sourceRepository;
action.Package = package;
action.Execute();
} catch (Exception ex) {

23
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs

@ -8,11 +8,22 @@ namespace ICSharpCode.PackageManagement @@ -8,11 +8,22 @@ namespace ICSharpCode.PackageManagement
{
public class PackageViewModelFactory : IPackageViewModelFactory
{
public PackageViewModelFactory(IPackageViewModelFactory packageViewModelFactory)
: this(
packageViewModelFactory.RegisteredPackageRepositories,
packageViewModelFactory.PackageManagementService,
packageViewModelFactory.LicenseAcceptanceService,
packageViewModelFactory.MessageReporter)
{
}
public PackageViewModelFactory(
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReporter)
{
this.RegisteredPackageRepositories = registeredPackageRepositories;
this.PackageManagementService = packageManagementService;
this.LicenseAcceptanceService = licenseAcceptanceService;
this.MessageReporter = messageReporter;
@ -21,14 +32,16 @@ namespace ICSharpCode.PackageManagement @@ -21,14 +32,16 @@ namespace ICSharpCode.PackageManagement
public virtual PackageViewModel CreatePackageViewModel(IPackage package)
{
return new PackageViewModel(
package,
PackageManagementService,
package,
RegisteredPackageRepositories.ActiveRepository,
PackageManagementService,
LicenseAcceptanceService,
MessageReporter);
}
protected IPackageManagementService PackageManagementService { get; private set; }
protected ILicenseAcceptanceService LicenseAcceptanceService { get; private set; }
protected IMessageReporter MessageReporter { get; private set; }
public IRegisteredPackageRepositories RegisteredPackageRepositories { get; private set; }
public IPackageManagementService PackageManagementService { get; private set; }
public ILicenseAcceptanceService LicenseAcceptanceService { get; private set; }
public IMessageReporter MessageReporter { get; private set; }
}
}

46
src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs

@ -15,49 +15,25 @@ namespace ICSharpCode.PackageManagement @@ -15,49 +15,25 @@ namespace ICSharpCode.PackageManagement
{
Pages pages = new Pages();
IPackageManagementService packageManagementService;
IRegisteredPackageRepositories registeredPackageRepositories;
IPackageViewModelFactory packageViewModelFactory;
ITaskFactory taskFactory;
IEnumerable<IPackage> allPackages;
ITask<PackagesForSelectedPageResult> task;
public PackagesViewModel(
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
ITaskFactory taskFactory)
: this(
packageManagementService,
new LicenseAcceptanceService(),
messageReporter,
taskFactory)
{
}
public PackagesViewModel(
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReporter,
ITaskFactory taskFactory)
: this(
packageManagementService,
new PackageViewModelFactory(packageManagementService, licenseAcceptanceService, messageReporter),
taskFactory)
{
}
public PackagesViewModel(
IPackageManagementService packageManagementService,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
{
this.packageManagementService = packageManagementService;
this.registeredPackageRepositories = registeredPackageRepositories;
this.packageViewModelFactory = packageViewModelFactory;
this.taskFactory = taskFactory;
PackageViewModels = new ObservableCollection<PackageViewModel>();
ErrorMessage = String.Empty;
CreateCommands();
CreateCommands();
}
void CreateCommands()
@ -90,8 +66,8 @@ namespace ICSharpCode.PackageManagement @@ -90,8 +66,8 @@ namespace ICSharpCode.PackageManagement
public ObservableCollection<PackageViewModel> PackageViewModels { get; set; }
public IPackageManagementService PackageManagementService {
get { return packageManagementService; }
public IRegisteredPackageRepositories RegisteredPackageRepositories {
get { return registeredPackageRepositories; }
}
public bool IsReadingPackages { get; private set; }
@ -351,14 +327,14 @@ namespace ICSharpCode.PackageManagement @@ -351,14 +327,14 @@ namespace ICSharpCode.PackageManagement
public bool ShowPackageSources { get; set; }
public IEnumerable<PackageSource> PackageSources {
get { return packageManagementService.Options.PackageSources; }
get { return registeredPackageRepositories.PackageSources; }
}
public PackageSource SelectedPackageSource {
get { return packageManagementService.ActivePackageSource; }
get { return registeredPackageRepositories.ActivePackageSource; }
set {
if (packageManagementService.ActivePackageSource != value) {
packageManagementService.ActivePackageSource = value;
if (registeredPackageRepositories.ActivePackageSource != value) {
registeredPackageRepositories.ActivePackageSource = value;
ReadPackages();
OnPropertyChanged(null);
}

22
src/AddIns/Misc/PackageManagement/Project/Src/RecentPackageRepository.cs

@ -14,11 +14,13 @@ namespace ICSharpCode.PackageManagement @@ -14,11 +14,13 @@ namespace ICSharpCode.PackageManagement
List<IPackage> packages = new List<IPackage>();
int maximumPackagesCount = DefaultMaximumPackagesCount;
IPackageManagementService packageManagementService;
IList<RecentPackageInfo> savedRecentPackages;
IPackageRepository aggregateRepository;
public RecentPackageRepository(IPackageManagementService packageManagementService)
public RecentPackageRepository(IList<RecentPackageInfo> recentPackages, IPackageRepository aggregateRepository)
{
this.packageManagementService = packageManagementService;
this.savedRecentPackages = recentPackages;
this.aggregateRepository = aggregateRepository;
}
public string Source {
@ -65,9 +67,8 @@ namespace ICSharpCode.PackageManagement @@ -65,9 +67,8 @@ namespace ICSharpCode.PackageManagement
void UpdateRecentPackagesInOptions()
{
IList<RecentPackageInfo> recentPackages = packageManagementService.Options.RecentPackages;
recentPackages.Clear();
recentPackages.AddRange(GetRecentPackagesInfo());
savedRecentPackages.Clear();
savedRecentPackages.AddRange(GetRecentPackagesInfo());
}
List<RecentPackageInfo> GetRecentPackagesInfo()
@ -105,7 +106,7 @@ namespace ICSharpCode.PackageManagement @@ -105,7 +106,7 @@ namespace ICSharpCode.PackageManagement
bool HasRecentPackages()
{
return packageManagementService.Options.RecentPackages.Count > 0;
return savedRecentPackages.Count > 0;
}
IEnumerable<IPackage> GetRecentPackages()
@ -116,14 +117,13 @@ namespace ICSharpCode.PackageManagement @@ -116,14 +117,13 @@ namespace ICSharpCode.PackageManagement
IEnumerable<IPackage> GetRecentPackagesFilteredById()
{
IPackageRepository aggregrateRepository = packageManagementService.CreateAggregatePackageRepository();
IEnumerable<string> recentPackageIds = GetRecentPackageIds();
return aggregrateRepository.FindPackages(recentPackageIds);
return aggregateRepository.FindPackages(recentPackageIds);
}
IEnumerable<string> GetRecentPackageIds()
{
foreach (RecentPackageInfo recentPackageInfo in packageManagementService.Options.RecentPackages) {
foreach (RecentPackageInfo recentPackageInfo in savedRecentPackages) {
yield return recentPackageInfo.Id;
}
}
@ -132,7 +132,7 @@ namespace ICSharpCode.PackageManagement @@ -132,7 +132,7 @@ namespace ICSharpCode.PackageManagement
{
List<IPackage> filteredRecentPackages = new List<IPackage>();
foreach (IPackage recentPackage in recentPackages) {
foreach (RecentPackageInfo savedRecentPackageInfo in packageManagementService.Options.RecentPackages) {
foreach (RecentPackageInfo savedRecentPackageInfo in savedRecentPackages) {
if (savedRecentPackageInfo.IsMatch(recentPackage)) {
filteredRecentPackages.Add(recentPackage);
}

13
src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs

@ -9,15 +9,18 @@ namespace ICSharpCode.PackageManagement @@ -9,15 +9,18 @@ namespace ICSharpCode.PackageManagement
{
public class RecentPackagesViewModel : PackagesViewModel
{
IPackageManagementService packageManagementService;
IPackageRepository recentPackageRepository;
public RecentPackagesViewModel(
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(packageManagementService, messageReporter, taskFactory)
: base(registeredPackageRepositories, packageViewModelFactory, taskFactory)
{
recentPackageRepository = packageManagementService.RecentPackageRepository;
this.packageManagementService = packageManagementService;
recentPackageRepository = registeredPackageRepositories.RecentPackageRepository;
packageManagementService.ParentPackageInstalled += ParentPackageInstalled;
packageManagementService.ParentPackageUninstalled += ParentPackageUninstalled;
}
@ -34,8 +37,8 @@ namespace ICSharpCode.PackageManagement @@ -34,8 +37,8 @@ namespace ICSharpCode.PackageManagement
protected override void OnDispose()
{
PackageManagementService.ParentPackageInstalled -= ParentPackageInstalled;
PackageManagementService.ParentPackageUninstalled -= ParentPackageUninstalled;
packageManagementService.ParentPackageInstalled -= ParentPackageInstalled;
packageManagementService.ParentPackageUninstalled -= ParentPackageUninstalled;
}
protected override IQueryable<IPackage> GetAllPackages()

84
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageRepositories.cs

@ -0,0 +1,84 @@ @@ -0,0 +1,84 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class RegisteredPackageRepositories : IRegisteredPackageRepositories
{
IPackageRepositoryCache repositoryCache;
PackageManagementOptions options;
RegisteredPackageSources registeredPackageSources;
PackageSource activePackageSource;
IPackageRepository activePackageRepository;
public RegisteredPackageRepositories(PackageManagementOptions options)
: this(new PackageRepositoryCache(options.PackageSources, options.RecentPackages), options)
{
}
public RegisteredPackageRepositories(
IPackageRepositoryCache repositoryCache,
PackageManagementOptions options)
{
this.repositoryCache = repositoryCache;
this.options = options;
registeredPackageSources = options.PackageSources;
}
public IPackageRepository RecentPackageRepository {
get { return repositoryCache.RecentPackageRepository; }
}
public IPackageRepository CreateRepository(PackageSource source)
{
return repositoryCache.CreateRepository(source);
}
public IPackageRepository CreateAggregateRepository()
{
return repositoryCache.CreateAggregateRepository();
}
public RegisteredPackageSources PackageSources {
get { return options.PackageSources; }
}
public bool HasMultiplePackageSources {
get { return registeredPackageSources.HasMultiplePackageSources; }
}
public PackageSource ActivePackageSource {
get {
activePackageSource = options.ActivePackageSource;
if (activePackageSource == null) {
activePackageSource = options.PackageSources[0];
}
return activePackageSource;
}
set {
if (activePackageSource != value) {
activePackageSource = value;
options.ActivePackageSource = value;
activePackageRepository = null;
}
}
}
public IPackageRepository ActiveRepository {
get {
if (activePackageRepository == null) {
CreateActiveRepository();
}
return activePackageRepository;
}
}
void CreateActiveRepository()
{
activePackageRepository = repositoryCache.CreateRepository(ActivePackageSource);
}
}
}

4
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleView.xaml

@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
d:DesignWidth="500">
<UserControl.Resources>
<pmd:ViewModelLocator x:Key="ViewModelLocator"/>
<pmd:PackageManagementViewModels x:Key="ViewModels"/>
<DataTemplate x:Key="PackageSourceTemplate">
<TextBlock Text="{Binding Name}"/>
@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
</UserControl.Resources>
<UserControl.DataContext>
<Binding Path="PackageManagementConsoleViewModel" Source="{StaticResource ViewModelLocator}"/>
<Binding Path="PackageManagementConsoleViewModel" Source="{StaticResource ViewModels}"/>
</UserControl.DataContext>
<Grid>

22
src/AddIns/Misc/PackageManagement/Project/Src/ServiceLocator.cs

@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Scripting;
namespace ICSharpCode.PackageManagement
{
public static class ServiceLocator
{
static readonly PackageManagementService packageManagementService = new PackageManagementService();
static readonly PackageManagementConsoleHost packageManagementConsoleHost = new PackageManagementConsoleHost();
public static IPackageManagementService PackageManagementService {
get { return packageManagementService; }
}
public static IPackageManagementConsoleHost PackageManagementConsoleHost {
get { return packageManagementConsoleHost; }
}
}
}

17
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageRepositoryFactory.cs

@ -2,15 +2,30 @@ @@ -2,15 +2,30 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class SharpDevelopPackageRepositoryFactory : PackageRepositoryFactory, ISharpDevelopPackageRepositoryFactory
{
public ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem)
public ISharedPackageRepository CreateSharedRepository(
IPackagePathResolver pathResolver,
IFileSystem fileSystem)
{
return new SharedPackageRepository(pathResolver, fileSystem);
}
public IPackageRepository CreateRecentPackageRepository(
IList<RecentPackageInfo> recentPackages,
IPackageRepository aggregateRepository)
{
return new RecentPackageRepository(recentPackages, aggregateRepository);
}
public IPackageRepository CreateAggregateRepository(IEnumerable<IPackageRepository> repositories)
{
return new AggregateRepository(repositories);
}
}
}

3
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs

@ -13,10 +13,11 @@ namespace ICSharpCode.PackageManagement @@ -13,10 +13,11 @@ namespace ICSharpCode.PackageManagement
public UpdatedPackageViewModel(
IPackage package,
IPackageRepository sourceRepository,
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReporter)
: base(package, packageManagementService, licenseAcceptanceService, messageReporter)
: base(package, sourceRepository, packageManagementService, licenseAcceptanceService, messageReporter)
{
this.packageManagementService = packageManagementService;
}

8
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs

@ -8,11 +8,8 @@ namespace ICSharpCode.PackageManagement @@ -8,11 +8,8 @@ namespace ICSharpCode.PackageManagement
{
public class UpdatedPackageViewModelFactory : PackageViewModelFactory
{
public UpdatedPackageViewModelFactory(
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReporter)
: base(packageManagementService, licenseAcceptanceService, messageReporter)
public UpdatedPackageViewModelFactory(IPackageViewModelFactory packageViewModelFactory)
: base(packageViewModelFactory)
{
}
@ -20,6 +17,7 @@ namespace ICSharpCode.PackageManagement @@ -20,6 +17,7 @@ namespace ICSharpCode.PackageManagement
{
return new UpdatedPackageViewModel(
package,
RegisteredPackageRepositories.ActiveRepository,
PackageManagementService,
LicenseAcceptanceService,
MessageReporter);

14
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackages.cs

@ -17,31 +17,29 @@ namespace ICSharpCode.PackageManagement @@ -17,31 +17,29 @@ namespace ICSharpCode.PackageManagement
IPackageRepository localRepository;
IPackageRepository sourceRepository;
public UpdatedPackages(IPackageManagementService packageManagementService)
: this(packageManagementService, null)
public UpdatedPackages(
IPackageManagementService packageManagementService,
IPackageRepository aggregateRepository)
: this(packageManagementService, aggregateRepository, null)
{
}
public UpdatedPackages(
IPackageManagementService packageManagementService,
IPackageRepository aggregateRepository,
MSBuildBasedProject project)
{
this.packageManagementService = packageManagementService;
this.sourceRepository = aggregateRepository;
this.project = project;
GetRepositories();
}
void GetRepositories()
{
GetSourceRepository();
GetLocalRepository();
}
void GetSourceRepository()
{
sourceRepository = packageManagementService.CreateAggregatePackageRepository();
}
void GetLocalRepository()
{
IProjectManager projectManager = CreateProjectManager();

18
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs

@ -17,24 +17,25 @@ namespace ICSharpCode.PackageManagement @@ -17,24 +17,25 @@ namespace ICSharpCode.PackageManagement
public UpdatedPackagesViewModel(
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: this(
packageManagementService,
messageReporter,
new LicenseAcceptanceService(),
registeredPackageRepositories,
new UpdatedPackageViewModelFactory(packageViewModelFactory),
taskFactory)
{
}
public UpdatedPackagesViewModel(
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
ILicenseAcceptanceService licenseAcceptanceService,
IRegisteredPackageRepositories registeredPackageRepositories,
UpdatedPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(
packageManagementService,
new UpdatedPackageViewModelFactory(packageManagementService, licenseAcceptanceService, messageReporter),
registeredPackageRepositories,
packageViewModelFactory,
taskFactory)
{
this.packageManagementService = packageManagementService;
@ -43,7 +44,8 @@ namespace ICSharpCode.PackageManagement @@ -43,7 +44,8 @@ namespace ICSharpCode.PackageManagement
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
{
try {
updatedPackages = new UpdatedPackages(packageManagementService);
IPackageRepository aggregateRepository = RegisteredPackageRepositories.CreateAggregateRepository();
updatedPackages = new UpdatedPackages(packageManagementService, aggregateRepository);
} catch (Exception ex) {
errorMessage = ex.Message;
}

3
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -69,6 +69,9 @@ @@ -69,6 +69,9 @@
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\Helpers\ExceptionThrowingRegisteredPackageRepositories.cs" />
<Compile Include="Src\Helpers\FakePackageViewModelFactory.cs" />
<Compile Include="Src\RegisteredPackageRepositoriesTests.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingPackageManagementService.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingPackageOperationResolver.cs" />
<Compile Include="Src\Helpers\FakeCompilerMessageView.cs" />

16
src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs

@ -17,11 +17,13 @@ namespace PackageManagement.Tests @@ -17,11 +17,13 @@ namespace PackageManagement.Tests
{
AddPackageReferenceViewModel viewModel;
FakePackageManagementService fakePackageManagementService;
FakeRegisteredPackageRepositories fakeRegisteredPackageRepositories;
FakeTaskFactory taskFactory;
void CreatePackageManagementService()
{
fakePackageManagementService = new FakePackageManagementService();
fakeRegisteredPackageRepositories = new FakeRegisteredPackageRepositories();
}
void CreateViewModel()
@ -33,7 +35,7 @@ namespace PackageManagement.Tests @@ -33,7 +35,7 @@ namespace PackageManagement.Tests
void CreateViewModel(FakePackageManagementService packageManagementService)
{
taskFactory = new FakeTaskFactory();
viewModel = new AddPackageReferenceViewModel(packageManagementService, taskFactory);
viewModel = new AddPackageReferenceViewModel(packageManagementService, fakeRegisteredPackageRepositories, taskFactory);
taskFactory.ExecuteAllFakeTasks();
}
@ -80,10 +82,10 @@ namespace PackageManagement.Tests @@ -80,10 +82,10 @@ namespace PackageManagement.Tests
CreatePackageManagementService();
var package = new FakePackage();
package.Id = "Test";
fakePackageManagementService.FakeActivePackageRepository.FakePackages.Add(package);
fakeRegisteredPackageRepositories.FakeActiveRepository.FakePackages.Add(package);
CreateViewModel(fakePackageManagementService);
List<FakePackage> expectedPackages = fakePackageManagementService.FakeActivePackageRepository.FakePackages;
List<FakePackage> expectedPackages = fakeRegisteredPackageRepositories.FakeActiveRepository.FakePackages;
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.AvailablePackagesViewModel.PackageViewModels);
}
@ -103,11 +105,11 @@ namespace PackageManagement.Tests @@ -103,11 +105,11 @@ namespace PackageManagement.Tests
Id = "Test",
Version = new Version("2.0.0.0")
};
fakePackageManagementService.FakeAggregateRepository.FakePackages.Add(newPackage);
fakeRegisteredPackageRepositories.FakeAggregateRepository.FakePackages.Add(newPackage);
CreateViewModel(fakePackageManagementService);
List<FakePackage> expectedPackages = fakePackageManagementService.FakeAggregateRepository.FakePackages;
List<FakePackage> expectedPackages = fakeRegisteredPackageRepositories.FakeAggregateRepository.FakePackages;
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.UpdatedPackagesViewModel.PackageViewModels);
}
@ -126,10 +128,10 @@ namespace PackageManagement.Tests @@ -126,10 +128,10 @@ namespace PackageManagement.Tests
CreatePackageManagementService();
var package = new FakePackage();
package.Id = "Test";
fakePackageManagementService.FakeRecentPackageRepository.FakePackages.Add(package);
fakeRegisteredPackageRepositories.FakeRecentPackageRepository.FakePackages.Add(package);
CreateViewModel(fakePackageManagementService);
List<FakePackage> expectedPackages = fakePackageManagementService.FakeRecentPackageRepository.FakePackages;
List<FakePackage> expectedPackages = fakeRegisteredPackageRepositories.FakeRecentPackageRepository.FakePackages;
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.RecentPackagesViewModel.PackageViewModels);
}

111
src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs

@ -15,31 +15,32 @@ namespace PackageManagement.Tests @@ -15,31 +15,32 @@ namespace PackageManagement.Tests
public class AvailablePackagesViewModelTests
{
AvailablePackagesViewModel viewModel;
FakePackageManagementService packageManagementService;
FakeTaskFactory taskFactory = new FakeTaskFactory();
ExceptionThrowingPackageManagementService exceptionThrowingPackageManagementService;
FakeRegisteredPackageRepositories registeredPackageRepositories;
ExceptionThrowingRegisteredPackageRepositories exceptionThrowingRegisteredPackageRepositories;
FakeTaskFactory taskFactory;
void CreateViewModel()
{
CreatePackageManagementService();
CreateViewModel(packageManagementService);
CreateRegisteredPackageRepositories();
CreateViewModel(registeredPackageRepositories);
}
void CreatePackageManagementService()
void CreateRegisteredPackageRepositories()
{
packageManagementService = new FakePackageManagementService();
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
}
void CreateViewModel(IPackageManagementService packageManagementService)
void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
{
taskFactory = new FakeTaskFactory();
var messageReporter = new FakeMessageReporter();
viewModel = new AvailablePackagesViewModel(packageManagementService, messageReporter, taskFactory);
var packageViewModelFactory = new FakePackageViewModelFactory();
viewModel = new AvailablePackagesViewModel(registeredPackageRepositories, packageViewModelFactory, taskFactory);
}
void CreateExceptionThrowingPackageManagementService()
void CreateExceptionThrowingRegisteredPackageRepositories()
{
exceptionThrowingPackageManagementService = new ExceptionThrowingPackageManagementService();
exceptionThrowingRegisteredPackageRepositories = new ExceptionThrowingRegisteredPackageRepositories();
}
void CompleteReadPackagesTask()
@ -54,9 +55,9 @@ namespace PackageManagement.Tests @@ -54,9 +55,9 @@ namespace PackageManagement.Tests
void AddOnePackageSourceToRegisteredSources()
{
packageManagementService.ClearPackageSources();
packageManagementService.AddOnePackageSource();
packageManagementService.HasMultiplePackageSources = false;
registeredPackageRepositories.ClearPackageSources();
registeredPackageRepositories.AddOnePackageSource();
registeredPackageRepositories.HasMultiplePackageSources = false;
}
void AddTwoPackageSourcesToRegisteredSources()
@ -66,13 +67,13 @@ namespace PackageManagement.Tests @@ -66,13 +67,13 @@ namespace PackageManagement.Tests
new PackageSource("http://second.com", "Second")
};
AddPackageSourcesToRegisteredSources(expectedPackageSources);
packageManagementService.HasMultiplePackageSources = true;
registeredPackageRepositories.HasMultiplePackageSources = true;
}
void AddPackageSourcesToRegisteredSources(PackageSource[] sources)
{
packageManagementService.ClearPackageSources();
packageManagementService.AddPackageSources(sources);
registeredPackageRepositories.ClearPackageSources();
registeredPackageRepositories.AddPackageSources(sources);
}
void CreateNewActiveRepositoryWithDifferentPackages()
@ -80,15 +81,15 @@ namespace PackageManagement.Tests @@ -80,15 +81,15 @@ namespace PackageManagement.Tests
var package = new FakePackage("NewRepositoryPackageId");
var newRepository = new FakePackageRepository();
newRepository.FakePackages.Add(package);
packageManagementService.FakeActivePackageRepository = newRepository;
registeredPackageRepositories.FakeActiveRepository = newRepository;
}
void SetUpTwoPackageSourcesAndViewModelHasReadPackages()
{
CreatePackageManagementService();
CreateRegisteredPackageRepositories();
AddTwoPackageSourcesToRegisteredSources();
CreateViewModel(packageManagementService);
packageManagementService.ActivePackageSource = packageManagementService.Options.PackageSources[0];
CreateViewModel(registeredPackageRepositories);
registeredPackageRepositories.ActivePackageSource = registeredPackageRepositories.PackageSources[0];
viewModel.ReadPackages();
CompleteReadPackagesTask();
CreateNewActiveRepositoryWithDifferentPackages();
@ -96,13 +97,13 @@ namespace PackageManagement.Tests @@ -96,13 +97,13 @@ namespace PackageManagement.Tests
void ChangeSelectedPackageSourceToSecondSource()
{
var secondPackageSource = packageManagementService.Options.PackageSources[1];
var secondPackageSource = registeredPackageRepositories.PackageSources[1];
viewModel.SelectedPackageSource = secondPackageSource;
}
void ChangeSelectedPackageSourceToFirstSource()
{
var firstPackageSource = packageManagementService.Options.PackageSources[0];
var firstPackageSource = registeredPackageRepositories.PackageSources[0];
viewModel.SelectedPackageSource = firstPackageSource;
}
@ -127,7 +128,7 @@ namespace PackageManagement.Tests @@ -127,7 +128,7 @@ namespace PackageManagement.Tests
package1, package2, package3
};
packageManagementService.FakeActivePackageRepository.FakePackages.AddRange(packages);
registeredPackageRepositories.FakeActiveRepository.FakePackages.AddRange(packages);
viewModel.ReadPackages();
CompleteReadPackagesTask();
@ -170,7 +171,7 @@ namespace PackageManagement.Tests @@ -170,7 +171,7 @@ namespace PackageManagement.Tests
package1, package2, package3
};
packageManagementService.FakeActivePackageRepository.FakePackages.AddRange(packages);
registeredPackageRepositories.FakeActiveRepository.FakePackages.AddRange(packages);
viewModel.ReadPackages();
CompleteReadPackagesTask();
@ -213,7 +214,7 @@ namespace PackageManagement.Tests @@ -213,7 +214,7 @@ namespace PackageManagement.Tests
package1, package2, package3, package4
};
packageManagementService.FakeActivePackageRepository.FakePackages.AddRange(packages);
registeredPackageRepositories.FakeActiveRepository.FakePackages.AddRange(packages);
viewModel.ReadPackages();
CompleteReadPackagesTask();
@ -235,9 +236,9 @@ namespace PackageManagement.Tests @@ -235,9 +236,9 @@ namespace PackageManagement.Tests
[Test]
public void ShowSources_TwoPackageSources_ReturnsTrue()
{
CreatePackageManagementService();
CreateRegisteredPackageRepositories();
AddTwoPackageSourcesToRegisteredSources();
CreateViewModel(packageManagementService);
CreateViewModel(registeredPackageRepositories);
Assert.IsTrue(viewModel.ShowPackageSources);
}
@ -245,9 +246,9 @@ namespace PackageManagement.Tests @@ -245,9 +246,9 @@ namespace PackageManagement.Tests
[Test]
public void ShowPackageSources_OnePackageSources_ReturnsFalse()
{
CreatePackageManagementService();
CreateRegisteredPackageRepositories();
AddOnePackageSourceToRegisteredSources();
CreateViewModel(packageManagementService);
CreateViewModel(registeredPackageRepositories);
Assert.IsFalse(viewModel.ShowPackageSources);
}
@ -255,11 +256,11 @@ namespace PackageManagement.Tests @@ -255,11 +256,11 @@ namespace PackageManagement.Tests
[Test]
public void PackageSources_TwoPackageSourcesInOptions_HasTwoRepositoriesInCollection()
{
CreatePackageManagementService();
CreateRegisteredPackageRepositories();
AddTwoPackageSourcesToRegisteredSources();
CreateViewModel(packageManagementService);
CreateViewModel(registeredPackageRepositories);
var expectedPackageSources = packageManagementService.Options.PackageSources;
var expectedPackageSources = registeredPackageRepositories.PackageSources;
PackageSourceCollectionAssert.AreEqual(expectedPackageSources, viewModel.PackageSources);
}
@ -267,12 +268,12 @@ namespace PackageManagement.Tests @@ -267,12 +268,12 @@ namespace PackageManagement.Tests
[Test]
public void SelectedPackageSource_TwoPackageSourcesInOptionsAndActivePackageSourceIsFirstSource_IsFirstPackageSource()
{
CreatePackageManagementService();
CreateRegisteredPackageRepositories();
AddTwoPackageSourcesToRegisteredSources();
CreateViewModel(packageManagementService);
CreateViewModel(registeredPackageRepositories);
var expectedPackageSource = packageManagementService.Options.PackageSources[0];
packageManagementService.ActivePackageSource = expectedPackageSource;
var expectedPackageSource = registeredPackageRepositories.PackageSources[0];
registeredPackageRepositories.ActivePackageSource = expectedPackageSource;
Assert.AreEqual(expectedPackageSource, viewModel.SelectedPackageSource);
}
@ -280,28 +281,28 @@ namespace PackageManagement.Tests @@ -280,28 +281,28 @@ namespace PackageManagement.Tests
[Test]
public void SelectedPackageSource_TwoPackageSourcesInOptionsAndActivePackageSourceIsSecondSource_IsSecondPackageSource()
{
CreatePackageManagementService();
CreateRegisteredPackageRepositories();
AddTwoPackageSourcesToRegisteredSources();
CreateViewModel(packageManagementService);
CreateViewModel(registeredPackageRepositories);
var expectedPackageSource = packageManagementService.Options.PackageSources[1];
packageManagementService.ActivePackageSource = expectedPackageSource;
var expectedPackageSource = registeredPackageRepositories.PackageSources[1];
registeredPackageRepositories.ActivePackageSource = expectedPackageSource;
Assert.AreEqual(expectedPackageSource, viewModel.SelectedPackageSource);
}
[Test]
public void SelectedPackageSource_Changed_PackageManagementServiceActivatePackageSourceChanged()
public void SelectedPackageSource_Changed_ActivePackageSourceChanged()
{
CreatePackageManagementService();
CreateRegisteredPackageRepositories();
AddTwoPackageSourcesToRegisteredSources();
CreateViewModel(packageManagementService);
CreateViewModel(registeredPackageRepositories);
packageManagementService.ActivePackageSource = packageManagementService.Options.PackageSources[0];
var expectedPackageSource = packageManagementService.Options.PackageSources[1];
registeredPackageRepositories.ActivePackageSource = registeredPackageRepositories.PackageSources[0];
var expectedPackageSource = registeredPackageRepositories.PackageSources[1];
viewModel.SelectedPackageSource = expectedPackageSource;
Assert.AreEqual(expectedPackageSource, packageManagementService.ActivePackageSource);
Assert.AreEqual(expectedPackageSource, registeredPackageRepositories.ActivePackageSource);
}
[Test]
@ -312,7 +313,7 @@ namespace PackageManagement.Tests @@ -312,7 +313,7 @@ namespace PackageManagement.Tests
ChangeSelectedPackageSourceToSecondSource();
CompleteReadPackagesTask();
var expectedPackages = packageManagementService.FakeActivePackageRepository.FakePackages;
var expectedPackages = registeredPackageRepositories.FakeActiveRepository.FakePackages;
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels);
}
@ -355,13 +356,13 @@ namespace PackageManagement.Tests @@ -355,13 +356,13 @@ namespace PackageManagement.Tests
[Test]
public void GetAllPackages_OnePackageInRepository_RepositoryNotCreatedByBackgroundThread()
{
CreatePackageManagementService();
CreateRegisteredPackageRepositories();
AddOnePackageSourceToRegisteredSources();
packageManagementService.FakeActivePackageRepository.FakePackages.Add(new FakePackage());
CreateViewModel(packageManagementService);
registeredPackageRepositories.FakeActiveRepository.FakePackages.Add(new FakePackage());
CreateViewModel(registeredPackageRepositories);
viewModel.ReadPackages();
packageManagementService.FakeActivePackageRepository = null;
registeredPackageRepositories.FakeActiveRepository = null;
CompleteReadPackagesTask();
Assert.AreEqual(1, viewModel.PackageViewModels.Count);
@ -370,10 +371,10 @@ namespace PackageManagement.Tests @@ -370,10 +371,10 @@ namespace PackageManagement.Tests
[Test]
public void ReadPackages_ExceptionThrownWhenAccessingActiveRepository_ErrorMessageFromExceptionNotOverriddenByReadPackagesCall()
{
CreateExceptionThrowingPackageManagementService();
exceptionThrowingPackageManagementService.ExeptionToThrowWhenActiveRepositoryAccessed =
CreateExceptionThrowingRegisteredPackageRepositories();
exceptionThrowingRegisteredPackageRepositories.ExeptionToThrowWhenActiveRepositoryAccessed =
new Exception("Test");
CreateViewModel(exceptionThrowingPackageManagementService);
CreateViewModel(exceptionThrowingRegisteredPackageRepositories);
viewModel.ReadPackages();
ApplicationException ex = Assert.Throws<ApplicationException>(() => CompleteReadPackagesTask());

11
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementService.cs

@ -14,7 +14,6 @@ namespace PackageManagement.Tests.Helpers @@ -14,7 +14,6 @@ namespace PackageManagement.Tests.Helpers
public Exception ExeptionToThrowWhenActiveProjectManagerAccessed { get; set; }
public Exception ExeptionToThrowWhenCreateInstallPackageTaskCalled { get; set; }
public Exception ExeptionToThrowWhenCreateUninstallPackageActionCalled { get; set; }
public Exception ExeptionToThrowWhenActiveRepositoryAccessed { get; set; }
public Exception ExceptionToThrowWhenCreatePackageManagerForActiveProjectCalled { get; set; }
public override IProjectManager ActiveProjectManager {
@ -26,16 +25,6 @@ namespace PackageManagement.Tests.Helpers @@ -26,16 +25,6 @@ namespace PackageManagement.Tests.Helpers
}
}
public override IPackageRepository ActivePackageRepository {
get {
if (ExeptionToThrowWhenActiveRepositoryAccessed != null) {
throw ExeptionToThrowWhenActiveRepositoryAccessed;
}
return base.ActivePackageRepository;
}
set { base.ActivePackageRepository = value; }
}
public override InstallPackageAction CreateInstallPackageAction()
{
throw ExeptionToThrowWhenCreateInstallPackageTaskCalled;

23
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingRegisteredPackageRepositories.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Design;
using NuGet;
namespace PackageManagement.Tests.Helpers
{
public class ExceptionThrowingRegisteredPackageRepositories : FakeRegisteredPackageRepositories
{
public Exception ExeptionToThrowWhenActiveRepositoryAccessed { get; set; }
public override IPackageRepository ActiveRepository {
get {
if (ExeptionToThrowWhenActiveRepositoryAccessed != null) {
throw ExeptionToThrowWhenActiveRepositoryAccessed;
}
return base.ActiveRepository;
}
}
}
}

40
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageRepositoryFactory.cs

@ -39,5 +39,45 @@ namespace PackageManagement.Tests.Helpers @@ -39,5 +39,45 @@ namespace PackageManagement.Tests.Helpers
{
return new FakeSharedPackageRepository(pathResolver, fileSystem);
}
public FakePackageRepository FakeAggregateRepository = new FakePackageRepository();
public IPackageRepository CreateAggregateRepository()
{
return FakeAggregateRepository;
}
public FakePackageRepository FakeRecentPackageRepository = new FakePackageRepository();
public IList<RecentPackageInfo> RecentPackagesPassedToCreateRecentPackageRepository;
public IPackageRepository AggregateRepositoryPassedToCreateRecentPackageRepository;
public IPackageRepository CreateRecentPackageRepository(
IList<RecentPackageInfo> recentPackages,
IPackageRepository aggregateRepository)
{
RecentPackagesPassedToCreateRecentPackageRepository = recentPackages;
AggregateRepositoryPassedToCreateRecentPackageRepository = aggregateRepository;
return FakeRecentPackageRepository;
}
public IEnumerable<IPackageRepository> RepositoriesPassedToCreateAggregateRepository;
public IPackageRepository CreateAggregateRepository(IEnumerable<IPackageRepository> repositories)
{
RepositoriesPassedToCreateAggregateRepository = repositories;
return FakeAggregateRepository;
}
public FakePackageRepository AddFakePackageRepositoryForPackageSource(string source)
{
var packageSource = new PackageSource(source);
var repository = new FakePackageRepository();
FakePackageRepositories.Add(packageSource, repository);
return repository;
}
public IPackageRepository RecentPackageRepository {
get { return FakeRecentPackageRepository; }
}
}
}

44
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageViewModelFactory.cs

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
namespace PackageManagement.Tests.Helpers
{
public class FakePackageViewModelFactory : IPackageViewModelFactory
{
public FakeRegisteredPackageRepositories FakeRegisteredPackageRepositories = new FakeRegisteredPackageRepositories();
public FakePackageManagementService FakePackageManagementService = new FakePackageManagementService();
public FakeLicenseAcceptanceService FakeLicenseAcceptanceService = new FakeLicenseAcceptanceService();
public FakeMessageReporter FakeMessageReporter = new FakeMessageReporter();
public PackageViewModel CreatePackageViewModel(IPackage package)
{
return new PackageViewModel(
package,
FakeRegisteredPackageRepositories.FakeActiveRepository,
FakePackageManagementService,
FakeLicenseAcceptanceService,
FakeMessageReporter);
}
public IRegisteredPackageRepositories RegisteredPackageRepositories {
get { return FakeRegisteredPackageRepositories; }
}
public IPackageManagementService PackageManagementService {
get { return FakePackageManagementService; }
}
public ILicenseAcceptanceService LicenseAcceptanceService {
get { return FakeLicenseAcceptanceService; }
}
public IMessageReporter MessageReporter {
get { return FakeMessageReporter; }
}
}
}

22
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/OneRegisteredPackageSourceHelper.cs

@ -33,10 +33,30 @@ namespace PackageManagement.Tests.Helpers @@ -33,10 +33,30 @@ namespace PackageManagement.Tests.Helpers
RegisteredPackageSources.Add(PackageSource);
}
public void AddOnePackageSource(string source)
{
RegisteredPackageSources.Clear();
AddPackageSource(source);
}
public void AddTwoPackageSources()
{
AddOnePackageSource();
RegisteredPackageSources.Add(new PackageSource("http://second.codeplex.com", "second"));
var packageSource = new PackageSource("http://second.codeplex.com", "second");
RegisteredPackageSources.Add(packageSource);
}
public void AddTwoPackageSources(string source1, string source2)
{
RegisteredPackageSources.Clear();
AddPackageSource(source1);
AddPackageSource(source2);
}
void AddPackageSource(string source)
{
var packageSource = new PackageSource(source);
RegisteredPackageSources.Add(packageSource);
}
}
}

5
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs

@ -21,6 +21,7 @@ namespace PackageManagement.Tests.Helpers @@ -21,6 +21,7 @@ namespace PackageManagement.Tests.Helpers
public TestablePackageViewModel(FakePackageManagementService packageManagementService)
: this(
new FakePackage(),
new FakePackageRepository(),
packageManagementService,
new FakeLicenseAcceptanceService(),
new FakeMessageReporter())
@ -29,11 +30,13 @@ namespace PackageManagement.Tests.Helpers @@ -29,11 +30,13 @@ namespace PackageManagement.Tests.Helpers
public TestablePackageViewModel(
FakePackage package,
FakePackageRepository sourceRepository,
FakePackageManagementService packageManagementService,
FakeLicenseAcceptanceService licenseAcceptanceService,
FakeMessageReporter messageReporter)
: base(
package,
sourceRepository,
packageManagementService,
licenseAcceptanceService,
messageReporter)
@ -42,7 +45,7 @@ namespace PackageManagement.Tests.Helpers @@ -42,7 +45,7 @@ namespace PackageManagement.Tests.Helpers
this.FakePackageManagementService = packageManagementService;
this.FakeLicenseAcceptanceService = licenseAcceptanceService;
this.FakeMessageReporter = messageReporter;
this.FakeSourcePackageRepository = FakePackageManagementService.FakeActivePackageRepository;
this.FakeSourcePackageRepository = sourceRepository;
}
protected override string AddingPackageMessageFormat {

19
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModel.cs

@ -13,7 +13,7 @@ namespace PackageManagement.Tests.Helpers @@ -13,7 +13,7 @@ namespace PackageManagement.Tests.Helpers
{
public class TestablePackagesViewModel : PackagesViewModel
{
public FakePackageManagementService FakePackageManagementService;
public FakeRegisteredPackageRepositories FakeRegisteredPackageRepositories;
public FakeTaskFactory FakeTaskFactory;
public List<FakePackage> FakePackages = new List<FakePackage>();
public int GetAllPackagesCallCount;
@ -21,19 +21,24 @@ namespace PackageManagement.Tests.Helpers @@ -21,19 +21,24 @@ namespace PackageManagement.Tests.Helpers
public string SearchCriteriaPassedToFilterPackagesBySearchCriteria;
public TestablePackagesViewModel()
: this(new FakePackageManagementService())
: this(new FakeRegisteredPackageRepositories())
{
}
public TestablePackagesViewModel(FakePackageManagementService packageManagementService)
: this(packageManagementService, new FakeTaskFactory())
public TestablePackagesViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
: this(registeredPackageRepositories, new FakeTaskFactory())
{
}
public TestablePackagesViewModel(FakePackageManagementService packageManagementService, FakeTaskFactory taskFactory)
: base(packageManagementService, new FakeMessageReporter(), taskFactory)
public TestablePackagesViewModel(
FakeRegisteredPackageRepositories registeredPackageRepositories,
FakeTaskFactory taskFactory)
: base(
registeredPackageRepositories,
new FakePackageViewModelFactory(),
taskFactory)
{
FakePackageManagementService = packageManagementService;
FakeRegisteredPackageRepositories = registeredPackageRepositories;
FakeTaskFactory = taskFactory;
}

5
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs

@ -28,6 +28,7 @@ namespace PackageManagement.Tests.Helpers @@ -28,6 +28,7 @@ namespace PackageManagement.Tests.Helpers
public TestableUpdatedPackageViewModel(FakePackageManagementService packageManagementService)
: this(
new FakePackage(),
new FakePackageRepository(),
packageManagementService,
new FakeLicenseAcceptanceService(),
new FakeMessageReporter())
@ -36,11 +37,13 @@ namespace PackageManagement.Tests.Helpers @@ -36,11 +37,13 @@ namespace PackageManagement.Tests.Helpers
public TestableUpdatedPackageViewModel(
FakePackage package,
FakePackageRepository sourceRepository,
FakePackageManagementService packageManagementService,
FakeLicenseAcceptanceService licenseAcceptanceService,
FakeMessageReporter messageReporter)
: base(
package,
sourceRepository,
packageManagementService,
licenseAcceptanceService,
messageReporter)
@ -49,7 +52,7 @@ namespace PackageManagement.Tests.Helpers @@ -49,7 +52,7 @@ namespace PackageManagement.Tests.Helpers
this.FakePackageManagementService = packageManagementService;
this.FakeLicenseAcceptanceService = licenseAcceptanceService;
this.FakeMessageReporter = messageReporter;
this.FakeSourcePackageRepository = FakePackageManagementService.FakeActivePackageRepository;
this.FakeSourcePackageRepository = sourceRepository;
}
protected override string AddingPackageMessageFormat {

2
src/AddIns/Misc/PackageManagement/Test/Src/InstallPackageActionTests.cs

@ -29,7 +29,7 @@ namespace PackageManagement.Tests @@ -29,7 +29,7 @@ namespace PackageManagement.Tests
{
return fakePackageManager
.FakeSourceRepository
.AddOneFakePackage(packageId);
.AddFakePackage(packageId);
}
[Test]

13
src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs

@ -15,6 +15,7 @@ namespace PackageManagement.Tests @@ -15,6 +15,7 @@ namespace PackageManagement.Tests
{
InstalledPackagesViewModel viewModel;
FakePackageManagementService packageManagementService;
FakeRegisteredPackageRepositories registeredPackageRepositories;
ExceptionThrowingPackageManagementService exceptionThrowingPackageManagementService;
FakeTaskFactory taskFactory;
@ -27,6 +28,7 @@ namespace PackageManagement.Tests @@ -27,6 +28,7 @@ namespace PackageManagement.Tests
void CreatePackageManagementService()
{
packageManagementService = new FakePackageManagementService();
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
}
void CreateExceptionThrowingPackageManagementService()
@ -36,9 +38,16 @@ namespace PackageManagement.Tests @@ -36,9 +38,16 @@ namespace PackageManagement.Tests
void CreateViewModel(FakePackageManagementService packageManagementService)
{
taskFactory = new FakeTaskFactory();
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
var messageReporter = new FakeMessageReporter();
viewModel = new InstalledPackagesViewModel(packageManagementService, messageReporter, taskFactory);
var packageViewModelFactory = new FakePackageViewModelFactory();
taskFactory = new FakeTaskFactory();
viewModel = new InstalledPackagesViewModel(
packageManagementService,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory);
}
void CompleteReadPackagesTask()

10
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs

@ -46,6 +46,13 @@ namespace PackageManagement.Tests @@ -46,6 +46,13 @@ namespace PackageManagement.Tests
}
}
RecentPackageInfo AddRecentPackageToOptions(string id, string version)
{
var recentPackage = new RecentPackageInfo(id, new Version(version));
options.RecentPackages.Add(recentPackage);
return recentPackage;
}
[Test]
public void ActivePackageSource_NoInitialPropertiesSet_ReturnsNull()
{
@ -137,8 +144,7 @@ namespace PackageManagement.Tests @@ -137,8 +144,7 @@ namespace PackageManagement.Tests
public void RecentPackages_SaveRecentPackages_DoesNotThrowInvalidOperationException()
{
CreateOptions();
var recentPackage = new RecentPackageInfo("id", new Version(1, 0));
options.RecentPackages.Add(recentPackage);
var recentPackage = AddRecentPackageToOptions("id", "1.0");
Assert.DoesNotThrow(() => SaveOptions());
}

214
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs

@ -18,8 +18,8 @@ namespace PackageManagement.Tests @@ -18,8 +18,8 @@ namespace PackageManagement.Tests
public class PackageManagementServiceTests
{
PackageManagementService packageManagementService;
FakeRegisteredPackageRepositories fakeRegisteredPackageRepositories;
OneRegisteredPackageSourceHelper packageSourcesHelper;
FakePackageRepositoryFactory fakePackageRepositoryFactory;
FakePackageManagerFactory fakePackageManagerFactory;
FakePackageManagementProjectService fakeProjectService;
TestableProject testProject;
@ -39,14 +39,15 @@ namespace PackageManagement.Tests @@ -39,14 +39,15 @@ namespace PackageManagement.Tests
void CreatePackageManagementService(PackageManagementOptions options)
{
testProject = ProjectHelper.CreateTestProject();
fakePackageRepositoryFactory = new FakePackageRepositoryFactory();
fakeRegisteredPackageRepositories = new FakeRegisteredPackageRepositories();
fakePackageManagerFactory = new FakePackageManagerFactory();
fakeProjectService = new FakePackageManagementProjectService();
fakeOutputMessagesView = new FakePackageManagementOutputMessagesView();
fakeProjectService.CurrentProject = testProject;
packageManagementService =
new PackageManagementService(options,
fakePackageRepositoryFactory,
fakeRegisteredPackageRepositories,
fakePackageManagerFactory,
fakeProjectService,
fakeOutputMessagesView);
@ -54,13 +55,13 @@ namespace PackageManagement.Tests @@ -54,13 +55,13 @@ namespace PackageManagement.Tests
FakePackage AddOneFakePackageToPackageRepositoryFactoryRepository(string id)
{
return fakePackageRepositoryFactory.FakePackageRepository.AddOneFakePackage(id);
return fakeRegisteredPackageRepositories.FakePackageRepository.AddFakePackage(id);
}
void MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame()
{
fakePackageManagerFactory.FakePackageManager.SourceRepository =
fakePackageRepositoryFactory.FakePackageRepository;
fakeRegisteredPackageRepositories.FakePackageRepository;
}
IEnumerable<PackageOperation> AddOnePackageOperationToPackageManager()
@ -74,29 +75,6 @@ namespace PackageManagement.Tests @@ -74,29 +75,6 @@ namespace PackageManagement.Tests
return operations;
}
[Test]
public void ActivePackageRepository_OneRegisteredSource_RepositoryCreatedFromRegisteredSource()
{
CreatePackageManagementService();
IPackageRepository activeRepository = packageManagementService.ActivePackageRepository;
PackageSource actualPackageSource = fakePackageRepositoryFactory.FirstPackageSourcePassedToCreateRepository;
Assert.AreEqual(packageSourcesHelper.PackageSource, actualPackageSource);
}
[Test]
public void ActivePackageRepository_CalledTwice_RepositoryCreatedOnce()
{
CreatePackageManagementService();
IPackageRepository activeRepository = packageManagementService.ActivePackageRepository;
activeRepository = packageManagementService.ActivePackageRepository;
int count = fakePackageRepositoryFactory.PackageSourcesPassedToCreateRepository.Count;
Assert.AreEqual(1, count);
}
[Test]
public void ActiveProjectManager_ProjectIsSelected_ReferencesSelectedProject()
@ -139,178 +117,6 @@ namespace PackageManagement.Tests @@ -139,178 +117,6 @@ namespace PackageManagement.Tests
Assert.IsTrue(fired);
}
[Test]
public void HasMultiplePackageSources_OnePackageSource_ReturnsFalse()
{
CreatePackageManagementService();
packageSourcesHelper.AddOnePackageSource();
bool result = packageManagementService.HasMultiplePackageSources;
Assert.IsFalse(result);
}
[Test]
public void HasMultiplePackageSources_TwoPackageSources_ReturnsTrue()
{
CreatePackageManagementService();
packageSourcesHelper.AddTwoPackageSources();
bool result = packageManagementService.HasMultiplePackageSources;
Assert.IsTrue(result);
}
[Test]
public void ActivePackageSource_TwoPackageSources_ByDefaultReturnsFirstPackageSource()
{
CreatePackageManagementService();
packageSourcesHelper.AddTwoPackageSources();
var expectedPackageSource = packageManagementService.Options.PackageSources[0];
var packageSource = packageManagementService.ActivePackageSource;
Assert.AreEqual(expectedPackageSource, packageSource);
}
[Test]
public void ActivePackageSource_ChangedToSecondRegisteredPackageSources_ReturnsSecondPackageSource()
{
CreatePackageManagementService();
packageSourcesHelper.AddTwoPackageSources();
var expectedPackageSource = packageManagementService.Options.PackageSources[1];
packageManagementService.ActivePackageSource = expectedPackageSource;
var packageSource = packageManagementService.ActivePackageSource;
Assert.AreEqual(expectedPackageSource, packageSource);
}
[Test]
public void ActivePackageRepository_ActivePackageSourceChangedToSecondRegisteredPackageSource_CreatesRepositoryUsingSecondPackageSource()
{
CreatePackageManagementService();
packageSourcesHelper.AddTwoPackageSources();
var expectedPackageSource = packageManagementService.Options.PackageSources[1];
packageManagementService.ActivePackageSource = expectedPackageSource;
IPackageRepository repository = packageManagementService.ActivePackageRepository;
var packageSource = fakePackageRepositoryFactory.FirstPackageSourcePassedToCreateRepository;
Assert.AreEqual(expectedPackageSource, packageSource);
}
[Test]
public void ActivePackageRepository_ActivePackageSourceChangedAfterActivePackageRepositoryCreated_CreatesNewRepositoryUsingActivePackageSource()
{
CreatePackageManagementService();
packageSourcesHelper.AddTwoPackageSources();
IPackageRepository initialRepository = packageManagementService.ActivePackageRepository;
fakePackageRepositoryFactory.PackageSourcesPassedToCreateRepository.Clear();
var expectedPackageSource = packageManagementService.Options.PackageSources[1];
packageManagementService.ActivePackageSource = expectedPackageSource;
IPackageRepository repository = packageManagementService.ActivePackageRepository;
var packageSource = fakePackageRepositoryFactory.FirstPackageSourcePassedToCreateRepository;
Assert.AreEqual(expectedPackageSource, packageSource);
}
[Test]
public void ActivePackageRepository_ActivePackageSourceSetToSameValueAfterActivePackageRepositoryCreated_NewRepositoryNotCreated()
{
CreatePackageManagementService();
packageSourcesHelper.AddOnePackageSource();
IPackageRepository initialRepository = packageManagementService.ActivePackageRepository;
fakePackageRepositoryFactory.PackageSourcesPassedToCreateRepository.Clear();
var expectedPackageSource = packageManagementService.Options.PackageSources[0];
packageManagementService.ActivePackageSource = expectedPackageSource;
IPackageRepository repository = packageManagementService.ActivePackageRepository;
Assert.AreEqual(0, fakePackageRepositoryFactory.PackageSourcesPassedToCreateRepository.Count);
}
[Test]
public void ActivePackageSource_ChangedToNonNullPackageSource_SavedInOptions()
{
CreatePackageManagementService();
packageManagementService.Options.ActivePackageSource = null;
var packageSource = new PackageSource("http://source-url", "Test");
packageManagementService.Options.PackageSources.Add(packageSource);
packageManagementService.ActivePackageSource = packageSource;
Assert.AreEqual(packageSource, packageManagementService.Options.ActivePackageSource);
}
[Test]
public void ActivePackageSource_ActivePackageSourceNonNullInOptionsBeforeInstanceCreate_ActivePackageSourceReadFromOptions()
{
CreatePackageSources();
var packageSource = new PackageSource("http://source-url", "Test");
packageSourcesHelper.Options.PackageSources.Add(packageSource);
packageSourcesHelper.Options.ActivePackageSource = packageSource;
CreatePackageManagementService(packageSourcesHelper.Options);
Assert.AreEqual(packageSource, packageManagementService.ActivePackageSource);
}
[Test]
public void CreateAggregatePackageRepository_TwoRegisteredPackageRepositories_ReturnsPackagesFromBothRepositories()
{
CreatePackageSources();
packageSourcesHelper.AddTwoPackageSources();
CreatePackageManagementService(packageSourcesHelper.Options);
var repository1Package = new FakePackage("One");
var repository1 = new FakePackageRepository();
repository1.FakePackages.Add(repository1Package);
fakePackageRepositoryFactory.FakePackageRepositories.Add(packageSourcesHelper.RegisteredPackageSources[0], repository1);
var repository2Package = new FakePackage("Two");
var repository2 = new FakePackageRepository();
repository2.FakePackages.Add(repository2Package);
fakePackageRepositoryFactory.FakePackageRepositories.Add(packageSourcesHelper.RegisteredPackageSources[1], repository2);
IPackageRepository repository = packageManagementService.CreateAggregatePackageRepository();
IQueryable<IPackage> packages = repository.GetPackages().OrderBy(x => x.Id);
var expectedPackages = new FakePackage[] {
repository1Package,
repository2Package
};
CollectionAssert.AreEqual(expectedPackages, packages);
}
[Test]
public void CreatePackageRepository_PackageSourceSpecified_CreatesPackageRepositoryFromPackageRepositoryFactory()
{
CreatePackageManagementService();
var repository = packageManagementService.CreatePackageRepository(new PackageSource("a"));
var expectedRepository = fakePackageRepositoryFactory.FakePackageRepository;
Assert.AreEqual(expectedRepository, repository);
}
[Test]
public void CreatePackageRepository_PackageSourceSpecified_PackageSourcePassedToPackageRepositoryFactory()
{
CreatePackageManagementService();
var source = new PackageSource("Test");
var repository = packageManagementService.CreatePackageRepository(source);
var actualSource = fakePackageRepositoryFactory.PackageSourcesPassedToCreateRepository.First();
Assert.AreEqual(source, actualSource);
}
[Test]
public void CreateProjectManager_RepositoryAndProjectSpecified_CreatesPackageManagerFromPackageManagerFactory()
{
@ -397,7 +203,7 @@ namespace PackageManagement.Tests @@ -397,7 +203,7 @@ namespace PackageManagement.Tests
packageManagementService.CreatePackageManagerForActiveProject();
var expectedRepository = packageManagementService.ActivePackageRepository;
var expectedRepository = fakeRegisteredPackageRepositories.ActiveRepository;
var actualRepository = fakePackageManagerFactory.PackageRepositoryPassedToCreatePackageManager;
Assert.AreEqual(expectedRepository, actualRepository);
@ -439,7 +245,7 @@ namespace PackageManagement.Tests @@ -439,7 +245,7 @@ namespace PackageManagement.Tests
ISharpDevelopPackageManager packageManager =
packageManagementService.CreatePackageManager(packageSource, testProject);
var actualPackageSource = fakePackageRepositoryFactory.FirstPackageSourcePassedToCreateRepository;
var actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
Assert.AreEqual(packageSource, actualPackageSource);
}
@ -454,7 +260,7 @@ namespace PackageManagement.Tests @@ -454,7 +260,7 @@ namespace PackageManagement.Tests
packageManagementService.CreatePackageManager(packageSource, testProject);
var actualRepository = fakePackageManagerFactory.PackageRepositoryPassedToCreatePackageManager;
var expectedRepository = fakePackageRepositoryFactory.FakePackageRepository;
var expectedRepository = fakeRegisteredPackageRepositories.FakePackageRepository;
Assert.AreEqual(expectedRepository, actualRepository);
}
@ -500,7 +306,7 @@ namespace PackageManagement.Tests @@ -500,7 +306,7 @@ namespace PackageManagement.Tests
var package = new FakePackage("Test");
packageManagementService.OnParentPackageInstalled(package);
var recentPackages = packageManagementService.RecentPackageRepository.GetPackages();
var recentPackages = fakeRegisteredPackageRepositories.FakeRecentPackageRepository.PackagesAdded;
var expectedPackages = new FakePackage[] {
package

230
src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs

@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.IO.Packaging;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -16,14 +18,52 @@ namespace PackageManagement.Tests @@ -16,14 +18,52 @@ namespace PackageManagement.Tests
PackageRepositoryCache cache;
FakePackageRepositoryFactory fakePackageRepositoryFactory;
PackageSource nuGetPackageSource;
OneRegisteredPackageSourceHelper packageSourcesHelper;
RecentPackageInfo[] recentPackagesPassedToCreateRecentPackageRepository;
FakePackageRepository fakeAggregateRepositoryPassedToCreateRecentPackageRepository;
void CreateCache()
{
CreatePackageSources();
CreateCacheUsingPackageSources();
}
void CreatePackageSources()
{
packageSourcesHelper = new OneRegisteredPackageSourceHelper();
}
void CreateCacheUsingPackageSources()
{
nuGetPackageSource = new PackageSource("http://nuget.org", "NuGet");
fakePackageRepositoryFactory = new FakePackageRepositoryFactory();
cache = new PackageRepositoryCache(fakePackageRepositoryFactory);
var packageSources = packageSourcesHelper.Options.PackageSources;
var recentPackages = packageSourcesHelper.Options.RecentPackages;
cache = new PackageRepositoryCache(fakePackageRepositoryFactory, packageSources, recentPackages);
}
FakePackageRepository AddFakePackageRepositoryForPackageSource(string source)
{
return fakePackageRepositoryFactory.AddFakePackageRepositoryForPackageSource(source);
}
IPackageRepository CreateRecentPackageRepositoryPassingAggregateRepository()
{
recentPackagesPassedToCreateRecentPackageRepository = new RecentPackageInfo[0];
fakeAggregateRepositoryPassedToCreateRecentPackageRepository = new FakePackageRepository();
return cache.CreateRecentPackageRepository(
recentPackagesPassedToCreateRecentPackageRepository,
fakeAggregateRepositoryPassedToCreateRecentPackageRepository);
}
RecentPackageInfo AddOneRecentPackage()
{
var recentPackage = new RecentPackageInfo("Id", new Version("1.0"));
packageSourcesHelper.Options.RecentPackages.Add(recentPackage);
return recentPackage;
}
[Test]
public void CreateRepository_CacheCastToISharpDevelopPackageRepositoryFactory_CreatesPackageRepositoryUsingPackageRepositoryFactoryPassedInConstructor()
{
@ -87,5 +127,191 @@ namespace PackageManagement.Tests @@ -87,5 +127,191 @@ namespace PackageManagement.Tests
Assert.AreEqual(fileSystem, repository.FileSystemPassedToConstructor);
}
[Test]
public void CreateAggregatePackageRepository_TwoRegisteredPackageRepositories_ReturnsAggregateRepositoryFromFactory()
{
CreatePackageSources();
packageSourcesHelper.AddTwoPackageSources("Source1", "Source2");
CreateCacheUsingPackageSources();
var aggregateRepository = cache.CreateAggregateRepository();
var expectedRepository = fakePackageRepositoryFactory.FakeAggregateRepository;
Assert.AreEqual(expectedRepository, aggregateRepository);
}
[Test]
public void CreateAggregatePackageRepository_TwoRegisteredPackageRepositories_AllRegisteredRepositoriesUsedToCreateAggregateRepositoryFromFactory()
{
CreatePackageSources();
packageSourcesHelper.AddTwoPackageSources("Source1", "Source2");
CreateCacheUsingPackageSources();
var repository1 = AddFakePackageRepositoryForPackageSource("Source1");
var repository2 = AddFakePackageRepositoryForPackageSource("Source2");
var expectedRepositories = new FakePackageRepository[] {
repository1,
repository2
};
cache.CreateAggregateRepository();
var repositoriesUsedToCreateAggregateRepository =
fakePackageRepositoryFactory.RepositoriesPassedToCreateAggregateRepository;
var actualRepositoriesAsList = new List<IPackageRepository>(repositoriesUsedToCreateAggregateRepository);
var actualRepositories = actualRepositoriesAsList.ToArray();
CollectionAssert.AreEqual(expectedRepositories, actualRepositories);
}
[Test]
public void CreateAggregatePackageRepository_OnePackageRepositoryPassed_ReturnsAggregateRepositoryFromFactory()
{
CreateCache();
var repositories = new FakePackageRepository[] {
new FakePackageRepository()
};
var aggregateRepository = cache.CreateAggregateRepository(repositories);
var expectedRepository = fakePackageRepositoryFactory.FakeAggregateRepository;
Assert.AreEqual(expectedRepository, aggregateRepository);
}
[Test]
public void CreateAggregatePackageRepository_OnePackageRepositoryPassed_RepositoryUsedToCreateAggregateRepository()
{
CreateCache();
var repositories = new FakePackageRepository[] {
new FakePackageRepository()
};
cache.CreateAggregateRepository(repositories);
var repositoriesUsedToCreateAggregateRepository =
fakePackageRepositoryFactory.RepositoriesPassedToCreateAggregateRepository;
Assert.AreEqual(repositories, repositoriesUsedToCreateAggregateRepository);
}
[Test]
public void RecentPackageRepository_NoRecentPackages_ReturnsRecentRepositoryCreatedByFactory()
{
CreateCache();
var repository = cache.RecentPackageRepository;
var expectedRepository = fakePackageRepositoryFactory.FakeRecentPackageRepository;
Assert.AreEqual(expectedRepository, repository);
}
[Test]
public void RecentPackageRepository_NoRecentPackages_CreatedWithAggregateRepository()
{
CreateCache();
var repository = cache.RecentPackageRepository;
var expectedRepository = fakePackageRepositoryFactory.FakeAggregateRepository;
var actualRepository = fakePackageRepositoryFactory.AggregateRepositoryPassedToCreateRecentPackageRepository;
Assert.AreEqual(expectedRepository, actualRepository);
}
[Test]
public void RecentPackageRepository_OneRecentPackage_RecentPackageUsedToCreateRecentPackageRepository()
{
CreateCache();
var recentPackage = AddOneRecentPackage();
var repository = cache.RecentPackageRepository;
var actualRecentPackages = fakePackageRepositoryFactory.RecentPackagesPassedToCreateRecentPackageRepository;
var expectedRecentPackages = new RecentPackageInfo[] {
recentPackage
};
Assert.AreEqual(expectedRecentPackages, actualRecentPackages);
}
[Test]
public void RecentPackageRepository_OnePackageSource_OneRepositoryCreatedForPackageSourceAndUsedToCreateAggregateRepository()
{
CreatePackageSources();
packageSourcesHelper.AddOnePackageSource("Source1");
CreateCacheUsingPackageSources();
var repository = AddFakePackageRepositoryForPackageSource("Source1");
var expectedRepositories = new FakePackageRepository[] {
repository
};
var recentRepository = cache.RecentPackageRepository;
var repositoriesUsedToCreateAggregateRepository =
fakePackageRepositoryFactory.RepositoriesPassedToCreateAggregateRepository;
var actualRepositoriesAsList = new List<IPackageRepository>(repositoriesUsedToCreateAggregateRepository);
var actualRepositories = actualRepositoriesAsList.ToArray();
CollectionAssert.AreEqual(expectedRepositories, actualRepositories);
}
[Test]
public void RecentPackageRepository_PropertyAccessedTwice_AggregateRepositoryCreatedOnce()
{
CreateCache();
var repository = cache.RecentPackageRepository;
fakePackageRepositoryFactory.RepositoriesPassedToCreateAggregateRepository = null;
repository = cache.RecentPackageRepository;
Assert.IsNull(fakePackageRepositoryFactory.RepositoriesPassedToCreateAggregateRepository);
}
[Test]
public void CreateRecentPackageRepository_AggregateRepositoryPassedAndNoRecentPackagesPassed_UsesFactoryToCreateRepository()
{
CreateCache();
var repository = CreateRecentPackageRepositoryPassingAggregateRepository();
var expectedRepository = fakePackageRepositoryFactory.FakeRecentPackageRepository;
Assert.AreEqual(expectedRepository, repository);
}
[Test]
public void CreateRecentPackageRepository_AggregateRepositoryPassedAndNoRecentPackagesPassed_AggregateIsUsedToCreateRepository()
{
CreateCache();
CreateRecentPackageRepositoryPassingAggregateRepository();
var actualRepository = fakePackageRepositoryFactory.AggregateRepositoryPassedToCreateRecentPackageRepository;
Assert.AreEqual(fakeAggregateRepositoryPassedToCreateRecentPackageRepository, actualRepository);
}
[Test]
public void CreateRecentPackageRepository_AggregateRepositoryPassedAndNoRecentPackagesPassed_RecentPackagesUsedToCreateRepository()
{
CreateCache();
CreateRecentPackageRepositoryPassingAggregateRepository();
var recentPackages = fakePackageRepositoryFactory.RecentPackagesPassedToCreateRecentPackageRepository;
Assert.AreEqual(recentPackagesPassedToCreateRecentPackageRepository, recentPackages);
}
[Test]
public void CreateRecentPackageRepository_MethodCalledTwice_RecentPackageRepositoryCreatedOnce()
{
CreateCache();
CreateRecentPackageRepositoryPassingAggregateRepository();
fakePackageRepositoryFactory.AggregateRepositoryPassedToCreateRecentPackageRepository = null;
CreateRecentPackageRepositoryPassingAggregateRepository();
Assert.IsNull(fakePackageRepositoryFactory.AggregateRepositoryPassedToCreateRecentPackageRepository);
}
}
}

2
src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs

@ -40,7 +40,7 @@ namespace PackageManagement.Tests @@ -40,7 +40,7 @@ namespace PackageManagement.Tests
viewModel = new TestablePackageViewModel(packageManagementService);
package = viewModel.FakePackage;
this.packageManagementService = packageManagementService;
sourcePackageRepository = packageManagementService.FakeActivePackageRepository;
sourcePackageRepository = viewModel.FakeSourcePackageRepository;
licenseAcceptanceService = viewModel.FakeLicenseAcceptanceService;
messageReporter = viewModel.FakeMessageReporter;
fakeInstallPackageTask = packageManagementService.ActionToReturnFromCreateInstallPackageAction;

16
src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs

@ -19,24 +19,24 @@ namespace PackageManagement.Tests @@ -19,24 +19,24 @@ namespace PackageManagement.Tests
{
TestablePackagesViewModel viewModel;
FakeTaskFactory taskFactory;
FakePackageManagementService packageManagementService;
FakeRegisteredPackageRepositories registeredPackageRepositories;
void CreateViewModel(FakePackageManagementService packageManagementService)
void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
{
viewModel = new TestablePackagesViewModel(packageManagementService);
this.packageManagementService = packageManagementService;
viewModel = new TestablePackagesViewModel(registeredPackageRepositories);
this.registeredPackageRepositories = registeredPackageRepositories;
taskFactory = viewModel.FakeTaskFactory;
}
void CreateViewModel()
{
CreatePackageManagementService();
CreateViewModel(packageManagementService);
CreateRegisteredRepositoriesService();
CreateViewModel(registeredPackageRepositories);
}
void CreatePackageManagementService()
void CreateRegisteredRepositoriesService()
{
packageManagementService = new FakePackageManagementService();
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
}
void CompleteReadPackagesTask()

28
src/AddIns/Misc/PackageManagement/Test/Src/RecentPackageRepositoryTests.cs

@ -17,26 +17,24 @@ namespace PackageManagement.Tests @@ -17,26 +17,24 @@ namespace PackageManagement.Tests
public class RecentPackageRepositoryTests
{
RecentPackageRepository repository;
PackageManagementOptions options;
FakePackageRepository aggregateRepository;
FakePackageManagementService packageManagementService;
List<RecentPackageInfo> recentPackages;
void CreateRepository()
{
CreatePackageManagementService();
CreateRepository(packageManagementService);
CreateRecentPackages();
CreateRepository(recentPackages);
}
void CreatePackageManagementService()
void CreateRecentPackages()
{
packageManagementService = new FakePackageManagementService();
options = packageManagementService.Options;
aggregateRepository = packageManagementService.FakeAggregateRepository;
recentPackages = new List<RecentPackageInfo>();
aggregateRepository = new FakePackageRepository();
}
void CreateRepository(IPackageManagementService packageManagementService)
void CreateRepository(IList<RecentPackageInfo> recentPackages)
{
repository = new RecentPackageRepository(packageManagementService);
repository = new RecentPackageRepository(recentPackages, aggregateRepository);
}
FakePackage AddOnePackageToRepository(string id)
@ -62,11 +60,11 @@ namespace PackageManagement.Tests @@ -62,11 +60,11 @@ namespace PackageManagement.Tests
FakePackage CreateRepositoryWithOneRecentPackageSavedInOptions()
{
CreatePackageManagementService();
CreateRecentPackages();
var package = new FakePackage("Test");
aggregateRepository.FakePackages.Add(package);
options.RecentPackages.Add(new RecentPackageInfo(package));
CreateRepository(packageManagementService);
recentPackages.Add(new RecentPackageInfo(package));
CreateRepository(recentPackages);
return package;
}
@ -141,8 +139,6 @@ namespace PackageManagement.Tests @@ -141,8 +139,6 @@ namespace PackageManagement.Tests
CreateRepository();
var package = AddOnePackageToRepository("Test");
var recentPackages = options.RecentPackages;
var expectedPackages = new RecentPackageInfo[] {
new RecentPackageInfo(package)
};
@ -157,8 +153,6 @@ namespace PackageManagement.Tests @@ -157,8 +153,6 @@ namespace PackageManagement.Tests
var package1 = AddOnePackageToRepository("Test1");
var package2 = AddOnePackageToRepository("Test2");
var recentPackages = options.RecentPackages;
var expectedPackages = new RecentPackageInfo[] {
new RecentPackageInfo(package2),
new RecentPackageInfo(package1)

12
src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs

@ -14,6 +14,7 @@ namespace PackageManagement.Tests @@ -14,6 +14,7 @@ namespace PackageManagement.Tests
{
RecentPackagesViewModel viewModel;
FakePackageManagementService packageManagementService;
FakeRegisteredPackageRepositories registeredPackageRepositories;
FakeTaskFactory taskFactory;
void CreateViewModel()
@ -29,9 +30,14 @@ namespace PackageManagement.Tests @@ -29,9 +30,14 @@ namespace PackageManagement.Tests
void CreateViewModel(FakePackageManagementService packageManagementService)
{
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
taskFactory = new FakeTaskFactory();
var messageReporter = new FakeMessageReporter();
viewModel = new RecentPackagesViewModel(packageManagementService, messageReporter, taskFactory);
var packageViewModelFactory = new FakePackageViewModelFactory();
viewModel = new RecentPackagesViewModel(
packageManagementService,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory);
}
void CompleteReadPackagesTask()
@ -47,7 +53,7 @@ namespace PackageManagement.Tests @@ -47,7 +53,7 @@ namespace PackageManagement.Tests
FakePackage AddPackageToRecentPackageRepository()
{
var package = new FakePackage("Test");
FakePackageRepository repository = packageManagementService.FakeRecentPackageRepository;
FakePackageRepository repository = registeredPackageRepositories.FakeRecentPackageRepository;
repository.FakePackages.Add(package);
return package;
}

252
src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageRepositoriesTests.cs

@ -0,0 +1,252 @@ @@ -0,0 +1,252 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests
{
[TestFixture]
public class RegisteredPackageRepositoriesTests
{
RegisteredPackageRepositories registeredRepositories;
OneRegisteredPackageSourceHelper packageSourcesHelper;
FakePackageRepositoryFactory fakeRepositoryCache;
void CreateRegisteredPackageRepositories()
{
CreatePackageSourcesHelper();
CreateRegisteredPackageRepositoriesWithExistingPackageSourcesHelper();
}
void CreatePackageSourcesHelper()
{
packageSourcesHelper = new OneRegisteredPackageSourceHelper();
}
void CreateRegisteredPackageRepositoriesWithExistingPackageSourcesHelper()
{
fakeRepositoryCache = new FakePackageRepositoryFactory();
registeredRepositories = new RegisteredPackageRepositories(fakeRepositoryCache, packageSourcesHelper.Options);
}
[Test]
public void RecentPackageRepository_PropertyAccessed_ReturnsRecentPackageRepositoryFromCache()
{
CreateRegisteredPackageRepositories();
var recentRepository = registeredRepositories.RecentPackageRepository;
var expectedRepository = fakeRepositoryCache.FakeRecentPackageRepository;
Assert.AreEqual(expectedRepository, recentRepository);
}
[Test]
public void CreateRepository_PackageSourceSpecified_CreatesRepositoryFromCache()
{
CreateRegisteredPackageRepositories();
var repository = registeredRepositories.CreateRepository(new PackageSource("a"));
var expectedRepository = fakeRepositoryCache.FakePackageRepository;
Assert.AreEqual(expectedRepository, repository);
}
[Test]
public void CreateRepository_PackageSourceSpecified_PackageSourcePassedToCache()
{
CreateRegisteredPackageRepositories();
var source = new PackageSource("Test");
var repository = registeredRepositories.CreateRepository(source);
var actualSource = fakeRepositoryCache.FirstPackageSourcePassedToCreateRepository;
Assert.AreEqual(source, actualSource);
}
[Test]
public void CreateAggregateRepository_MethodCalled_ReturnsAggregateRepositoryCreatedFromCache()
{
CreateRegisteredPackageRepositories();
var repository = registeredRepositories.CreateAggregateRepository();
var expectedRepository = fakeRepositoryCache.FakeAggregateRepository;
Assert.AreEqual(expectedRepository, repository);
}
[Test]
public void HasMultiplePackageSources_OnePackageSource_ReturnsFalse()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddOnePackageSource();
bool result = registeredRepositories.HasMultiplePackageSources;
Assert.IsFalse(result);
}
[Test]
public void HasMultiplePackageSources_TwoPackageSources_ReturnsTrue()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddTwoPackageSources();
bool result = registeredRepositories.HasMultiplePackageSources;
Assert.IsTrue(result);
}
[Test]
public void ActivePackageSource_TwoPackageSources_ByDefaultReturnsFirstPackageSource()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddTwoPackageSources();
var expectedPackageSource = packageSourcesHelper.RegisteredPackageSources[0];
var packageSource = registeredRepositories.ActivePackageSource;
Assert.AreEqual(expectedPackageSource, packageSource);
}
[Test]
public void ActivePackageSource_ChangedToSecondRegisteredPackageSources_ReturnsSecondPackageSource()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddTwoPackageSources();
var expectedPackageSource = packageSourcesHelper.RegisteredPackageSources[1];
registeredRepositories.ActivePackageSource = expectedPackageSource;
var packageSource = registeredRepositories.ActivePackageSource;
Assert.AreEqual(expectedPackageSource, packageSource);
}
[Test]
public void ActivePackageSource_ChangedToNonNullPackageSource_SavedInOptions()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.Options.ActivePackageSource = null;
var packageSource = new PackageSource("http://source-url", "Test");
packageSourcesHelper.Options.PackageSources.Add(packageSource);
registeredRepositories.ActivePackageSource = packageSource;
var actualPackageSource = packageSourcesHelper.Options.ActivePackageSource;
Assert.AreEqual(packageSource, actualPackageSource);
}
[Test]
public void ActivePackageSource_ActivePackageSourceNonNullInOptionsBeforeInstanceCreated_ActivePackageSourceReadFromOptions()
{
CreatePackageSourcesHelper();
var packageSource = new PackageSource("http://source-url", "Test");
packageSourcesHelper.Options.PackageSources.Add(packageSource);
packageSourcesHelper.Options.ActivePackageSource = packageSource;
CreateRegisteredPackageRepositoriesWithExistingPackageSourcesHelper();
var actualPackageSource = registeredRepositories.ActivePackageSource;
Assert.AreEqual(packageSource, actualPackageSource);
}
[Test]
public void ActiveRepository_OneRegisteredSource_RepositoryCreatedFromRegisteredSource()
{
CreateRegisteredPackageRepositories();
IPackageRepository activeRepository = registeredRepositories.ActiveRepository;
var actualPackageSource = fakeRepositoryCache.FirstPackageSourcePassedToCreateRepository;
var expectedPackageSource = packageSourcesHelper.PackageSource;
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
[Test]
public void ActiveRepository_CalledTwice_RepositoryCreatedOnce()
{
CreateRegisteredPackageRepositories();
IPackageRepository activeRepository = registeredRepositories.ActiveRepository;
activeRepository = registeredRepositories.ActiveRepository;
int count = fakeRepositoryCache.PackageSourcesPassedToCreateRepository.Count;
Assert.AreEqual(1, count);
}
[Test]
public void ActiveRepository_OneRegisteredSource_ReturnsPackageCreatedFromCache()
{
CreateRegisteredPackageRepositories();
IPackageRepository activeRepository = registeredRepositories.ActiveRepository;
IPackageRepository expectedRepository = fakeRepositoryCache.FakePackageRepository;
Assert.AreEqual(expectedRepository, activeRepository);
}
[Test]
public void ActivePackageRepository_ActivePackageSourceChangedToSecondRegisteredPackageSource_CreatesRepositoryUsingSecondPackageSource()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddTwoPackageSources();
var expectedPackageSource = packageSourcesHelper.Options.PackageSources[1];
registeredRepositories.ActivePackageSource = expectedPackageSource;
IPackageRepository repository = registeredRepositories.ActiveRepository;
var packageSource = fakeRepositoryCache.FirstPackageSourcePassedToCreateRepository;
Assert.AreEqual(expectedPackageSource, packageSource);
}
[Test]
public void ActiveRepository_ActivePackageSourceChangedAfterActivePackageRepositoryCreated_CreatesNewRepositoryUsingActivePackageSource()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddTwoPackageSources();
IPackageRepository initialRepository = registeredRepositories.ActiveRepository;
fakeRepositoryCache.PackageSourcesPassedToCreateRepository.Clear();
var expectedPackageSource = packageSourcesHelper.Options.PackageSources[1];
registeredRepositories.ActivePackageSource = expectedPackageSource;
IPackageRepository repository = registeredRepositories.ActiveRepository;
var packageSource = fakeRepositoryCache.FirstPackageSourcePassedToCreateRepository;
Assert.AreEqual(expectedPackageSource, packageSource);
}
[Test]
public void ActiveRepository_ActivePackageSourceSetToSameValueAfterActivePackageRepositoryCreated_NewRepositoryNotCreated()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddOnePackageSource();
IPackageRepository initialRepository = registeredRepositories.ActiveRepository;
fakeRepositoryCache.PackageSourcesPassedToCreateRepository.Clear();
var expectedPackageSource = packageSourcesHelper.Options.PackageSources[0];
registeredRepositories.ActivePackageSource = expectedPackageSource;
IPackageRepository repository = registeredRepositories.ActiveRepository;
int count = fakeRepositoryCache.PackageSourcesPassedToCreateRepository.Count;
Assert.AreEqual(0, count);
}
[Test]
public void PackageSources_OnePackageSourceInOptions_ReturnsOnePackageSource()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddOnePackageSource();
var packageSources = registeredRepositories.PackageSources;
var expectedPackageSources = packageSourcesHelper.Options.PackageSources;
Assert.AreEqual(expectedPackageSources, packageSources);
}
}
}

2
src/AddIns/Misc/PackageManagement/Test/Src/UninstallPackageActionTests.cs

@ -30,7 +30,7 @@ namespace PackageManagement.Tests @@ -30,7 +30,7 @@ namespace PackageManagement.Tests
{
return fakePackageManager
.FakeSourceRepository
.AddOneFakePackage(packageId);
.AddFakePackage(packageId);
}
[Test]

13
src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackagesViewModelTests.cs

@ -15,6 +15,7 @@ namespace PackageManagement.Tests @@ -15,6 +15,7 @@ namespace PackageManagement.Tests
UpdatedPackagesViewModel viewModel;
FakePackageManagementService packageManagementService;
FakeTaskFactory taskFactory;
FakeRegisteredPackageRepositories registeredPackageRepositories;
ExceptionThrowingPackageManagementService exceptionThrowingPackageManagementService;
void CreateViewModel()
@ -31,8 +32,14 @@ namespace PackageManagement.Tests @@ -31,8 +32,14 @@ namespace PackageManagement.Tests
void CreateViewModel(FakePackageManagementService packageManagementService)
{
taskFactory = new FakeTaskFactory();
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
var packageViewModelFactory = new FakePackageViewModelFactory();
var messageReporter = new FakeMessageReporter();
viewModel = new UpdatedPackagesViewModel(packageManagementService, messageReporter, taskFactory);
viewModel = new UpdatedPackagesViewModel(
packageManagementService,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory);
}
void CreateExceptionThrowingPackageManagementService()
@ -54,7 +61,7 @@ namespace PackageManagement.Tests @@ -54,7 +61,7 @@ namespace PackageManagement.Tests
FakePackage AddPackageToAggregateRepository(string version)
{
return packageManagementService.AddFakePackageWithVersionToAggregrateRepository(version);
return registeredPackageRepositories.AddFakePackageWithVersionToAggregrateRepository(version);
}
[Test]
@ -101,7 +108,7 @@ namespace PackageManagement.Tests @@ -101,7 +108,7 @@ namespace PackageManagement.Tests
viewModel.ReadPackages();
packageManagementService.FakeAggregateRepository = null;
registeredPackageRepositories.FakeAggregateRepository = null;
packageManagementService.FakeActiveProjectManager.LocalRepository = null;
CompleteReadPackagesTask();

Loading…
Cancel
Save