Browse Source

Support pre-release NuGet packages in dialog.

pull/44/head
Matt Ward 13 years ago
parent
commit
1f1620234d
  1. 35
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs
  2. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  3. 8
      src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs
  4. 7
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  5. 5
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSelectedProject.cs
  6. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelFactory.cs
  7. 12
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelParent.cs
  8. 3
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackageViewModel.cs
  9. 3
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackageViewModelFactory.cs
  10. 17
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  11. 3
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs
  12. 13
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesView.xaml
  13. 20
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  14. 3
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
  15. 3
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
  16. 11
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackages.cs
  17. 3
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
  18. 67
      src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs
  19. 3
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageViewModelFactory.cs
  20. 11
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableInstalledPackageViewModel.cs
  21. 9
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs
  22. 7
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
  23. 6
      src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackageViewModelTests.cs
  24. 14
      src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs
  25. 125
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
  26. 64
      src/AddIns/Misc/PackageManagement/Test/Src/PackagesViewModelTests.cs
  27. 5
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs
  28. 28
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackagesTests.cs
  29. 38
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackagesViewModelTests.cs

35
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs

@ -19,7 +19,6 @@ namespace PackageManagement.Cmdlets.Tests @@ -19,7 +19,6 @@ namespace PackageManagement.Cmdlets.Tests
TestableInstallPackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementProject fakeProject;
FakeInstallPackageAction fakeInstallPackageAction;
void CreateCmdletWithoutActiveProject()
{
@ -27,9 +26,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -27,9 +26,8 @@ namespace PackageManagement.Cmdlets.Tests
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeProject = fakeConsoleHost.FakeProject;
fakeInstallPackageAction = fakeProject.FakeInstallPackageAction;
}
void CreateCmdletWithActivePackageSourceAndProject()
{
CreateCmdletWithoutActiveProject();
@ -90,8 +88,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -90,8 +88,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualPackageId = fakeInstallPackageAction.PackageId;
string actualPackageId = fakeProject.LastInstallPackageCreated.PackageId;
Assert.AreEqual("Test", actualPackageId);
}
@ -104,8 +101,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -104,8 +101,7 @@ namespace PackageManagement.Cmdlets.Tests
EnableIgnoreDependenciesParameter();
RunCmdlet();
bool result = fakeInstallPackageAction.IgnoreDependencies;
bool result = fakeProject.LastInstallPackageCreated.IgnoreDependencies;
Assert.IsTrue(result);
}
@ -117,8 +113,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -117,8 +113,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakeInstallPackageAction.IgnoreDependencies;
bool result = fakeProject.LastInstallPackageCreated.IgnoreDependencies;
Assert.IsFalse(result);
}
@ -131,8 +126,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -131,8 +126,7 @@ namespace PackageManagement.Cmdlets.Tests
EnablePrereleaseParameter();
RunCmdlet();
bool result = fakeInstallPackageAction.AllowPrereleaseVersions;
bool result = fakeProject.LastInstallPackageCreated.AllowPrereleaseVersions;
Assert.IsTrue(result);
}
@ -144,8 +138,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -144,8 +138,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakeInstallPackageAction.AllowPrereleaseVersions;
bool result = fakeProject.LastInstallPackageCreated.AllowPrereleaseVersions;
Assert.IsFalse(result);
}
@ -158,8 +151,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -158,8 +151,8 @@ namespace PackageManagement.Cmdlets.Tests
SetSourceParameter("http://sharpdevelop.net/packages");
RunCmdlet();
var expected = "http://sharpdevelop.net/packages";
var actual = fakeConsoleHost.PackageSourcePassedToGetProject;
string expected = "http://sharpdevelop.net/packages";
string actual = fakeConsoleHost.PackageSourcePassedToGetProject;
Assert.AreEqual(expected, actual);
}
@ -174,8 +167,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -174,8 +167,7 @@ namespace PackageManagement.Cmdlets.Tests
SetVersionParameter(version);
RunCmdlet();
SemanticVersion actualVersion = fakeInstallPackageAction.PackageVersion;
SemanticVersion actualVersion = fakeProject.LastInstallPackageCreated.PackageVersion;
Assert.AreEqual(version, actualVersion);
}
@ -187,8 +179,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -187,8 +179,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualVersion = fakeInstallPackageAction.PackageVersion;
SemanticVersion actualVersion = fakeProject.LastInstallPackageCreated.PackageVersion;
Assert.IsNull(actualVersion);
}
@ -230,8 +221,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -230,8 +221,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakeInstallPackageAction.IsExecuteCalled;
bool result = fakeProject.LastInstallPackageCreated.IsExecuteCalled;
Assert.IsTrue(result);
}
@ -244,8 +234,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -244,8 +234,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
IPackageScriptRunner scriptRunner = fakeInstallPackageAction.PackageScriptRunner;
IPackageScriptRunner scriptRunner = fakeProject.LastInstallPackageCreated.PackageScriptRunner;
Assert.AreEqual(cmdlet, scriptRunner);
}
}

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

@ -155,6 +155,7 @@ @@ -155,6 +155,7 @@
<Compile Include="Src\FileConflictViewModel.cs" />
<Compile Include="Src\IClassKindUpdater.cs" />
<Compile Include="Src\IDocumentNamespaceCreator.cs" />
<Compile Include="Src\IPackageViewModelParent.cs" />
<Compile Include="Src\IUpdatePackagesAction.cs" />
<Compile Include="Src\IPackageExtensions.cs" />
<Compile Include="Src\IPackageAction.cs" />

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

@ -22,6 +22,7 @@ namespace ICSharpCode.PackageManagement @@ -22,6 +22,7 @@ namespace ICSharpCode.PackageManagement
{
IsSearchable = true;
ShowPackageSources = true;
ShowPrerelease = true;
}
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
@ -38,6 +39,9 @@ namespace ICSharpCode.PackageManagement @@ -38,6 +39,9 @@ namespace ICSharpCode.PackageManagement
if (repository == null) {
throw new ApplicationException(errorMessage);
}
if (IncludePrerelease) {
return repository.GetPackages();
}
return repository.GetPackages().Where(package => package.IsLatestVersion);
}
@ -51,6 +55,10 @@ namespace ICSharpCode.PackageManagement @@ -51,6 +55,10 @@ namespace ICSharpCode.PackageManagement
protected override IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults(IQueryable<IPackage> allPackages)
{
if (IncludePrerelease) {
return base.GetFilteredPackagesBeforePagingResults(allPackages)
.DistinctLast(PackageEqualityComparer.Id);
}
return base.GetFilteredPackagesBeforePagingResults(allPackages)
.Where(package => package.IsReleaseVersion())
.DistinctLast(PackageEqualityComparer.Id);

7
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -26,7 +26,7 @@ namespace ICSharpCode.PackageManagement.Design
this.Name = name;
}
public FakeInstallPackageAction FakeInstallPackageAction;
private FakeInstallPackageAction FakeInstallPackageAction;
public FakeUninstallPackageAction FakeUninstallPackageAction;
public FakeUpdatePackageAction FirstFakeUpdatePackageActionCreated {
@ -136,9 +136,12 @@ namespace ICSharpCode.PackageManagement.Design @@ -136,9 +136,12 @@ namespace ICSharpCode.PackageManagement.Design
IsUpdatePackageCalled = true;
}
public FakeInstallPackageAction LastInstallPackageCreated;
public virtual InstallPackageAction CreateInstallPackageAction()
{
return FakeInstallPackageAction;
LastInstallPackageCreated = new FakeInstallPackageAction(this);
return LastInstallPackageCreated;
}
public virtual UninstallPackageAction CreateUninstallPackageAction()

5
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSelectedProject.cs

@ -42,11 +42,6 @@ namespace ICSharpCode.PackageManagement.Design @@ -42,11 +42,6 @@ namespace ICSharpCode.PackageManagement.Design
return String.Format("Name: {0}, IsSelected: {1}, IsEnabled: {2}", Name, IsSelected, IsEnabled);
}
public FakeInstallPackageAction FakeInstallPackageAction {
get { return FakeProject.FakeInstallPackageAction; }
set { FakeProject.FakeInstallPackageAction = value; }
}
public IPackageManagementProject Project {
get { return FakeProject; }
}

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

@ -9,7 +9,7 @@ namespace ICSharpCode.PackageManagement @@ -9,7 +9,7 @@ namespace ICSharpCode.PackageManagement
{
public interface IPackageViewModelFactory
{
PackageViewModel CreatePackageViewModel(IPackageFromRepository package);
PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package);
IPackageManagementSolution Solution { get; }
PackageManagementSelectedProjects SelectedProjects { get; }

12
src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelParent.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// 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;
namespace ICSharpCode.PackageManagement
{
public interface IPackageViewModelParent
{
bool IncludePrerelease { get; }
}
}

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

@ -10,12 +10,13 @@ namespace ICSharpCode.PackageManagement @@ -10,12 +10,13 @@ namespace ICSharpCode.PackageManagement
public class InstalledPackageViewModel : PackageViewModel
{
public InstalledPackageViewModel(
IPackageViewModelParent parent,
IPackageFromRepository package,
SelectedProjectsForInstalledPackages selectedProjects,
IPackageManagementEvents packageManagementEvents,
IPackageActionRunner actionRunner,
ILogger logger)
: base(package, selectedProjects, packageManagementEvents, actionRunner, logger)
: base(parent, package, selectedProjects, packageManagementEvents, actionRunner, logger)
{
}

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

@ -15,9 +15,10 @@ namespace ICSharpCode.PackageManagement @@ -15,9 +15,10 @@ namespace ICSharpCode.PackageManagement
selectedProjectsForInstalledPackages = new SelectedProjectsForInstalledPackages(Solution);
}
public override PackageViewModel CreatePackageViewModel(IPackageFromRepository package)
public override PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package)
{
return new InstalledPackageViewModel(
parent,
package,
selectedProjectsForInstalledPackages,
PackageManagementEvents,

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

@ -22,14 +22,17 @@ namespace ICSharpCode.PackageManagement @@ -22,14 +22,17 @@ namespace ICSharpCode.PackageManagement
IEnumerable<PackageOperation> packageOperations = new PackageOperation[0];
PackageViewModelOperationLogger logger;
IPackageActionRunner actionRunner;
IPackageViewModelParent parent;
public PackageViewModel(
IPackageViewModelParent parent,
IPackageFromRepository package,
PackageManagementSelectedProjects selectedProjects,
IPackageManagementEvents packageManagementEvents,
IPackageActionRunner actionRunner,
ILogger logger)
{
this.parent = parent;
this.package = package;
this.selectedProjects = selectedProjects;
this.packageManagementEvents = packageManagementEvents;
@ -39,6 +42,11 @@ namespace ICSharpCode.PackageManagement @@ -39,6 +42,11 @@ namespace ICSharpCode.PackageManagement
CreateCommands();
}
public IPackageViewModelParent GetParent()
{
return parent;
}
protected virtual PackageViewModelOperationLogger CreateLogger(ILogger logger)
{
return new PackageViewModelOperationLogger(logger, package);
@ -170,7 +178,8 @@ namespace ICSharpCode.PackageManagement @@ -170,7 +178,8 @@ namespace ICSharpCode.PackageManagement
{
IPackageManagementProject project = GetSingleProjectSelected();
project.Logger = logger;
var installAction = project.CreateInstallPackageAction();
InstallPackageAction installAction = project.CreateInstallPackageAction();
installAction.AllowPrereleaseVersions = parent.IncludePrerelease;
packageOperations = project.GetInstallPackageOperations(package, installAction);
}
@ -243,6 +252,7 @@ namespace ICSharpCode.PackageManagement @@ -243,6 +252,7 @@ namespace ICSharpCode.PackageManagement
{
IPackageManagementProject project = GetSingleProjectSelected();
ProcessPackageOperationsAction action = CreateInstallPackageAction(project);
action.AllowPrereleaseVersions = parent.IncludePrerelease;
action.Package = package;
action.Operations = packageOperations;
actionRunner.Run(action);
@ -355,6 +365,7 @@ namespace ICSharpCode.PackageManagement @@ -355,6 +365,7 @@ namespace ICSharpCode.PackageManagement
foreach (IPackageManagementSelectedProject selectedProject in selectedProjects) {
if (selectedProject.IsSelected) {
ProcessPackageAction action = CreateInstallPackageAction(selectedProject);
action.AllowPrereleaseVersions = parent.IncludePrerelease;
actions.Add(action);
}
}
@ -410,7 +421,9 @@ namespace ICSharpCode.PackageManagement @@ -410,7 +421,9 @@ namespace ICSharpCode.PackageManagement
{
IPackageManagementProject project = selectedProject.Project;
project.Logger = logger;
IEnumerable<PackageOperation> operations = project.GetInstallPackageOperations(package, project.CreateInstallPackageAction());
InstallPackageAction installAction = project.CreateInstallPackageAction();
installAction.AllowPrereleaseVersions = parent.IncludePrerelease;
IEnumerable<PackageOperation> operations = project.GetInstallPackageOperations(package, installAction);
return GetPackagesRequiringLicenseAcceptance(operations);
}

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

@ -29,9 +29,10 @@ namespace ICSharpCode.PackageManagement @@ -29,9 +29,10 @@ namespace ICSharpCode.PackageManagement
this.Logger = new PackageManagementLogger(packageManagementEvents);
}
public virtual PackageViewModel CreatePackageViewModel(IPackageFromRepository package)
public virtual PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package)
{
return new PackageViewModel(
parent,
package,
SelectedProjects,
PackageManagementEvents,

13
src/AddIns/Misc/PackageManagement/Project/Src/PackagesView.xaml

@ -319,6 +319,8 @@ @@ -319,6 +319,8 @@
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ComboBox
Grid.Row="0"
@ -353,12 +355,19 @@ @@ -353,12 +355,19 @@
Width="16"/>
</Hyperlink>
</TextBlock>
<Button
<CheckBox
Grid.Row="2"
Grid.ColumnSpan="2"
Margin="2"
Content="Include Prerelease"
Visibility="{Binding Path=ShowPrerelease, Converter={StaticResource BoolToVisibility}}"
IsChecked="{Binding Path=IncludePrerelease}"/>
<Button
Grid.Row="3"
Grid.Column="1"
Visibility="{Binding Path=IsUpdateAllPackagesEnabled, Converter={StaticResource BoolToVisibility}}"
Content="Update All"
Command="{Binding UpdateAllPackagesCommand}"/>
Command="{Binding Path=UpdateAllPackagesCommand}"/>
</Grid>
<ContentControl
Grid.Row="1"

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

@ -13,7 +13,7 @@ using NuGet; @@ -13,7 +13,7 @@ using NuGet;
namespace ICSharpCode.PackageManagement
{
public abstract class PackagesViewModel : ViewModelBase<PackagesViewModel>, IDisposable
public abstract class PackagesViewModel : ViewModelBase<PackagesViewModel>, IDisposable, IPackageViewModelParent
{
Pages pages = new Pages();
@ -22,7 +22,8 @@ namespace ICSharpCode.PackageManagement @@ -22,7 +22,8 @@ namespace ICSharpCode.PackageManagement
ITaskFactory taskFactory;
IEnumerable<IPackage> allPackages;
ITask<PackagesForSelectedPageResult> task;
bool includePrerelease;
public PackagesViewModel(
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
@ -267,7 +268,7 @@ namespace ICSharpCode.PackageManagement @@ -267,7 +268,7 @@ namespace ICSharpCode.PackageManagement
{
var repository = registeredPackageRepositories.ActiveRepository;
var packageFromRepository = new PackageFromRepository(package, repository);
return packageViewModelFactory.CreatePackageViewModel(packageFromRepository);
return packageViewModelFactory.CreatePackageViewModel(this, packageFromRepository);
}
public int SelectedPageNumber {
@ -404,5 +405,18 @@ namespace ICSharpCode.PackageManagement @@ -404,5 +405,18 @@ namespace ICSharpCode.PackageManagement
protected IPackageActionRunner ActionRunner {
get { return packageViewModelFactory.PackageActionRunner; }
}
public bool IncludePrerelease {
get { return includePrerelease; }
set {
if (includePrerelease != value) {
includePrerelease = value;
ReadPackages();
OnPropertyChanged(null);
}
}
}
public bool ShowPrerelease { get; set; }
}
}

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

@ -9,12 +9,13 @@ namespace ICSharpCode.PackageManagement @@ -9,12 +9,13 @@ namespace ICSharpCode.PackageManagement
public class UpdatedPackageViewModel : PackageViewModel
{
public UpdatedPackageViewModel(
IPackageViewModelParent parent,
IPackageFromRepository package,
SelectedProjectsForUpdatedPackages selectedProjects,
IPackageManagementEvents packageManagementEvents,
IPackageActionRunner actionRunner,
ILogger logger)
: base(package, selectedProjects, packageManagementEvents, actionRunner, logger)
: base(parent, package, selectedProjects, packageManagementEvents, actionRunner, logger)
{
}

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

@ -16,9 +16,10 @@ namespace ICSharpCode.PackageManagement @@ -16,9 +16,10 @@ namespace ICSharpCode.PackageManagement
selectedProjectsForUpdatedPackages = new SelectedProjectsForUpdatedPackages(Solution);
}
public override PackageViewModel CreatePackageViewModel(IPackageFromRepository package)
public override PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package)
{
return new UpdatedPackageViewModel(
parent,
package,
selectedProjectsForUpdatedPackages,
PackageManagementEvents,

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

@ -34,12 +34,12 @@ namespace ICSharpCode.PackageManagement @@ -34,12 +34,12 @@ namespace ICSharpCode.PackageManagement
public string SearchTerms { get; set; }
public IEnumerable<IPackage> GetUpdatedPackages()
public IEnumerable<IPackage> GetUpdatedPackages(bool includePrerelease = false)
{
IQueryable<IPackage> localPackages = installedPackages;
localPackages = FilterPackages(localPackages);
IEnumerable<IPackage> distinctLocalPackages = DistinctPackages(localPackages);
return GetUpdatedPackages(sourceRepository, distinctLocalPackages);
return GetUpdatedPackages(sourceRepository, distinctLocalPackages, includePrerelease);
}
IQueryable<IPackage> GetInstalledPackages()
@ -65,9 +65,12 @@ namespace ICSharpCode.PackageManagement @@ -65,9 +65,12 @@ namespace ICSharpCode.PackageManagement
return packages;
}
IEnumerable<IPackage> GetUpdatedPackages(IPackageRepository sourceRepository, IEnumerable<IPackage> localPackages)
IEnumerable<IPackage> GetUpdatedPackages(
IPackageRepository sourceRepository,
IEnumerable<IPackage> localPackages,
bool includePrelease)
{
return sourceRepository.GetUpdates(localPackages, false, false);
return sourceRepository.GetUpdates(localPackages, includePrelease, false);
}
}
}

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

@ -35,6 +35,7 @@ namespace ICSharpCode.PackageManagement @@ -35,6 +35,7 @@ namespace ICSharpCode.PackageManagement
ShowPackageSources = true;
ShowUpdateAllPackages = true;
ShowPrerelease = true;
}
void PackagesUpdated(object sender, EventArgs e)
@ -78,7 +79,7 @@ namespace ICSharpCode.PackageManagement @@ -78,7 +79,7 @@ namespace ICSharpCode.PackageManagement
IQueryable<IPackage> GetUpdatedPackages()
{
return updatedPackages.GetUpdatedPackages().AsQueryable();
return updatedPackages.GetUpdatedPackages(IncludePrerelease).AsQueryable();
}
protected override void TryUpdatingAllPackages()

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

@ -419,7 +419,6 @@ namespace PackageManagement.Tests @@ -419,7 +419,6 @@ namespace PackageManagement.Tests
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels);
}
[Test]
public void GetPackagesFromPackageSource_RepositoryHasThreePackagesWithSameIdButDifferentVersions_LatestPackageVersionOnlyRequestedFromPackageSource()
{
@ -473,5 +472,71 @@ namespace PackageManagement.Tests @@ -473,5 +472,71 @@ namespace PackageManagement.Tests
Assert.IsFalse(enabled);
}
[Test]
public void ShowPrerelease_ByDefault_ReturnsTrue()
{
CreateViewModel();
bool show = viewModel.ShowPrerelease;
Assert.IsTrue(show);
}
[Test]
public void ReadPackages_RepositoryHasPrereleasePackageAndIncludePrereleaseIsTrue_HasPrereleasePackageInList()
{
CreateViewModel();
viewModel.IncludePrerelease = true;
var prereleasePackage = new FakePackage("Test", "1.1.0-alpha") { IsLatestVersion = false };
var expectedPackages = new FakePackage[] { prereleasePackage };
registeredPackageRepositories.FakeActiveRepository.FakePackages.AddRange(expectedPackages);
viewModel.ReadPackages();
CompleteReadPackagesTask();
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels);
}
[Test]
public void ReadPackages_RepositoryHasThreePrereleasePackagesWithSameIdButDifferentVersionsAndIncludePrereleaseIsTrue_HasLatestPreleasePackageVersionOnly()
{
CreateViewModel();
viewModel.IncludePrerelease = true;
var package1 = new FakePackage("Test", "0.1.0.0-alpha") { IsLatestVersion = false };
var package2 = new FakePackage("Test", "0.2.0.0-alpha") { IsLatestVersion = false };
var package3 = new FakePackage("Test", "0.3.0.0-alpha") { IsLatestVersion = false };
var packages = new FakePackage[] {
package1, package2, package3
};
registeredPackageRepositories.FakeActiveRepository.FakePackages.AddRange(packages);
viewModel.ReadPackages();
CompleteReadPackagesTask();
var expectedPackages = new FakePackage[] {
package3
};
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels);
}
[Test]
public void PackageViewModels_GetParentOfPackageViewModel_ReturnsAvailablePackagesViewModel()
{
CreateViewModel();
var package1 = new FakePackage("Test", "0.1.0.0");
var package2 = new FakePackage("Test", "0.2.0.0");
var packages = new FakePackage[] {
package1, package2
};
registeredPackageRepositories.FakeActiveRepository.FakePackages.AddRange(packages);
viewModel.ReadPackages();
CompleteReadPackagesTask();
PackageViewModel childViewModel = viewModel.PackageViewModels.First();
IPackageViewModelParent parent = childViewModel.GetParent();
Assert.AreEqual(viewModel, parent);
}
}
}

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

@ -16,10 +16,11 @@ namespace PackageManagement.Tests.Helpers @@ -16,10 +16,11 @@ namespace PackageManagement.Tests.Helpers
public FakeLogger FakeLogger = new FakeLogger();
public FakePackageActionRunner FakeActionRunner = new FakePackageActionRunner();
public PackageViewModel CreatePackageViewModel(IPackageFromRepository package)
public PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package)
{
SelectedProjects = new PackageManagementSelectedProjects(FakeSolution);
return new PackageViewModel(
parent,
package,
SelectedProjects,
FakePackageManagementEvents,

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

@ -19,13 +19,16 @@ namespace PackageManagement.Tests.Helpers @@ -19,13 +19,16 @@ namespace PackageManagement.Tests.Helpers
public ILogger LoggerUsedWhenCreatingPackageResolver;
public FakePackageActionRunner FakeActionRunner;
public TestableInstalledPackageViewModel()
: this(new FakePackageManagementSolution())
public TestableInstalledPackageViewModel(IPackageViewModelParent parent)
: this(parent, new FakePackageManagementSolution())
{
}
public TestableInstalledPackageViewModel(FakePackageManagementSolution solution)
public TestableInstalledPackageViewModel(
IPackageViewModelParent parent,
FakePackageManagementSolution solution)
: this(
parent,
new FakePackage(),
new SelectedProjectsForInstalledPackages(solution),
new FakePackageManagementEvents(),
@ -37,12 +40,14 @@ namespace PackageManagement.Tests.Helpers @@ -37,12 +40,14 @@ namespace PackageManagement.Tests.Helpers
}
public TestableInstalledPackageViewModel(
IPackageViewModelParent parent,
FakePackage package,
SelectedProjectsForInstalledPackages selectedProjects,
FakePackageManagementEvents packageManagementEvents,
FakePackageActionRunner actionRunner,
FakeLogger logger)
: base(
parent,
package,
selectedProjects,
packageManagementEvents,

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

@ -16,8 +16,11 @@ namespace PackageManagement.Tests.Helpers @@ -16,8 +16,11 @@ namespace PackageManagement.Tests.Helpers
public FakeLogger FakeLogger;
public FakePackageActionRunner FakeActionRunner;
public TestablePackageViewModel(FakePackageManagementSolution solution)
public TestablePackageViewModel(
IPackageViewModelParent parent,
FakePackageManagementSolution solution)
: this(
parent,
new FakePackage("Test"),
new PackageManagementSelectedProjects(solution),
new FakePackageManagementEvents(),
@ -28,12 +31,14 @@ namespace PackageManagement.Tests.Helpers @@ -28,12 +31,14 @@ namespace PackageManagement.Tests.Helpers
}
public TestablePackageViewModel(
IPackageViewModelParent parent,
FakePackage package,
PackageManagementSelectedProjects selectedProjects,
FakePackageManagementEvents packageManagementEvents,
FakePackageActionRunner actionRunner,
FakeLogger logger)
: base(
parent,
package,
selectedProjects,
packageManagementEvents,
@ -72,7 +77,7 @@ namespace PackageManagement.Tests.Helpers @@ -72,7 +77,7 @@ namespace PackageManagement.Tests.Helpers
public PackageOperation AddOneFakeUninstallPackageOperation()
{
var package = new FakePackage("PackageToUninstall");
var package = new FakePackage("PackageToUninstall");
var operation = new FakePackageOperation(package, PackageAction.Uninstall);
FakeSolution.FakeProjectToReturnFromGetProject.FakeInstallOperations.Add(operation);
return operation;

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

@ -18,8 +18,11 @@ namespace PackageManagement.Tests.Helpers @@ -18,8 +18,11 @@ namespace PackageManagement.Tests.Helpers
public ILogger LoggerUsedWhenCreatingPackageResolver;
public FakePackageActionRunner FakeActionRunner;
public TestableUpdatedPackageViewModel(FakePackageManagementSolution solution)
public TestableUpdatedPackageViewModel(
IPackageViewModelParent parent,
FakePackageManagementSolution solution)
: this(
parent,
new FakePackage(),
new SelectedProjectsForUpdatedPackages(solution),
new FakePackageManagementEvents(),
@ -30,12 +33,14 @@ namespace PackageManagement.Tests.Helpers @@ -30,12 +33,14 @@ namespace PackageManagement.Tests.Helpers
}
public TestableUpdatedPackageViewModel(
IPackageViewModelParent parent,
FakePackage package,
SelectedProjectsForUpdatedPackages selectedProjects,
FakePackageManagementEvents packageManagementEvents,
FakePackageActionRunner actionRunner,
FakeLogger logger)
: base(
parent,
package,
selectedProjects,
packageManagementEvents,

6
src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackageViewModelTests.cs

@ -8,6 +8,7 @@ using ICSharpCode.PackageManagement.Design; @@ -8,6 +8,7 @@ using ICSharpCode.PackageManagement.Design;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests
{
@ -24,7 +25,8 @@ namespace PackageManagement.Tests @@ -24,7 +25,8 @@ namespace PackageManagement.Tests
void CreateViewModel()
{
viewModel = new TestableInstalledPackageViewModel();
IPackageViewModelParent parent = MockRepository.GenerateStub<IPackageViewModelParent>();
viewModel = new TestableInstalledPackageViewModel(parent);
fakeSolution = viewModel.FakeSolution;
fakeActionRunner = viewModel.FakeActionRunner;
fakePackage = viewModel.FakePackage;
@ -135,7 +137,7 @@ namespace PackageManagement.Tests @@ -135,7 +137,7 @@ namespace PackageManagement.Tests
GetPackageActionsForSelectedProjects();
var action = packageActions[0] as InstallPackageAction;
InstallPackageAction expectedAction = FirstSelectedProject.FakeProject.FakeInstallPackageAction;
InstallPackageAction expectedAction = FirstSelectedProject.FakeProject.LastInstallPackageCreated;
Assert.AreEqual(expectedAction, action);
}

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

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -224,5 +225,18 @@ namespace PackageManagement.Tests @@ -224,5 +225,18 @@ namespace PackageManagement.Tests
Assert.AreEqual(0, viewModel.PackageViewModels.Count);
}
[Test]
public void PackageViewModels_ChildViewModelParent_IsInstalledPackagesViewModel()
{
CreateViewModel();
FakePackage package = AddPackageToProjectLocalRepository();
viewModel.ReadPackages();
CompleteReadPackagesTask();
PackageViewModel childViewModel = viewModel.PackageViewModels.First();
IPackageViewModelParent parent = childViewModel.GetParent();
Assert.AreEqual(viewModel, parent);
}
}
}

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

@ -10,6 +10,7 @@ using ICSharpCode.PackageManagement.Scripting; @@ -10,6 +10,7 @@ using ICSharpCode.PackageManagement.Scripting;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests
{
@ -22,11 +23,11 @@ namespace PackageManagement.Tests @@ -22,11 +23,11 @@ namespace PackageManagement.Tests
FakePackageManagementEvents fakePackageManagementEvents;
ExceptionThrowingPackageManagementSolution exceptionThrowingSolution;
ExceptionThrowingPackageManagementProject exceptionThrowingProject;
FakeInstallPackageAction fakeInstallPackageAction;
FakeUninstallPackageAction fakeUninstallPackageAction;
FakeLogger fakeLogger;
FakePackageActionRunner fakeActionRunner;
List<FakeSelectedProject> fakeSelectedProjects;
IPackageViewModelParent viewModelParent;
void CreateFakeSolution()
{
@ -56,12 +57,12 @@ namespace PackageManagement.Tests @@ -56,12 +57,12 @@ namespace PackageManagement.Tests
void CreateViewModel(FakePackageManagementSolution solution)
{
viewModel = new TestablePackageViewModel(solution);
viewModelParent = MockRepository.GenerateStub<IPackageViewModelParent>();
viewModel = new TestablePackageViewModel(viewModelParent, solution);
fakePackage = viewModel.FakePackage;
this.fakeSolution = solution;
fakePackageManagementEvents = viewModel.FakePackageManagementEvents;
fakeLogger = viewModel.FakeLogger;
fakeInstallPackageAction = solution.FakeProjectToReturnFromGetProject.FakeInstallPackageAction;
fakeUninstallPackageAction = solution.FakeProjectToReturnFromGetProject.FakeUninstallPackageAction;
fakeActionRunner = viewModel.FakeActionRunner;
}
@ -147,6 +148,11 @@ namespace PackageManagement.Tests @@ -147,6 +148,11 @@ namespace PackageManagement.Tests
get { return fakeSelectedProjects[1]; }
}
void ParentAllowsPrereleasePackages()
{
viewModelParent.Stub(parent => parent.IncludePrerelease).Return(true);
}
[Test]
public void AddPackageCommand_CommandExecuted_InstallsPackage()
{
@ -154,8 +160,9 @@ namespace PackageManagement.Tests @@ -154,8 +160,9 @@ namespace PackageManagement.Tests
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
viewModel.AddPackageCommand.Execute(null);
Assert.AreEqual(fakePackage, fakeInstallPackageAction.Package);
IPackage package = fakeSolution.FakeProjectToReturnFromGetProject.LastInstallPackageCreated.Package;
Assert.AreEqual(fakePackage, package);
}
[Test]
@ -178,8 +185,8 @@ namespace PackageManagement.Tests @@ -178,8 +185,8 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
IPackageAction actionExecuted = fakeActionRunner.ActionPassedToRun;
Assert.AreEqual(fakeInstallPackageAction, actionExecuted);
IPackageAction action = fakeSolution.FakeProjectToReturnFromGetProject.LastInstallPackageCreated;
Assert.AreEqual(action, actionExecuted);
}
[Test]
@ -193,7 +200,8 @@ namespace PackageManagement.Tests @@ -193,7 +200,8 @@ namespace PackageManagement.Tests
new PackageOperation(fakePackage, PackageAction.Install)
};
CollectionAssert.AreEqual(expectedOperations, fakeInstallPackageAction.Operations);
FakeInstallPackageAction action = fakeSolution.FakeProjectToReturnFromGetProject.LastInstallPackageCreated;
CollectionAssert.AreEqual(expectedOperations, action.Operations);
}
[Test]
@ -215,7 +223,8 @@ namespace PackageManagement.Tests @@ -215,7 +223,8 @@ namespace PackageManagement.Tests
CreateViewModel();
IPackage packagePassedToInstallPackageWhenPropertyNameChanged = null;
viewModel.PropertyChanged += (sender, e) => {
packagePassedToInstallPackageWhenPropertyNameChanged = fakeInstallPackageAction.Package;
packagePassedToInstallPackageWhenPropertyNameChanged =
fakeSolution.FakeProjectToReturnFromGetProject.LastInstallPackageCreated.Package;
};
viewModel.AddPackage();
@ -481,7 +490,8 @@ namespace PackageManagement.Tests @@ -481,7 +490,8 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
Assert.IsFalse(fakeInstallPackageAction.IsExecuteCalled);
FakeInstallPackageAction action = fakeSolution.FakeProjectToReturnFromGetProject.LastInstallPackageCreated;
Assert.IsFalse(action.IsExecuteCalled);
}
[Test]
@ -732,6 +742,21 @@ namespace PackageManagement.Tests @@ -732,6 +742,21 @@ namespace PackageManagement.Tests
Assert.IsFalse(result);
}
[Test]
public void AddPackage_ParentHasIncludePrereleaseSetToTrueWhenInstalling_PrereleaseVersionsAllowedWhenCheckingForPackageOperations()
{
CreateViewModel();
ParentAllowsPrereleasePackages();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
viewModel.AddPackage();
bool result = fakeSolution
.FakeProjectToReturnFromGetProject
.AllowPrereleaseVersionsPassedToGetInstallPackageOperations;
Assert.IsTrue(result);
}
[Test]
public void RemovePackage_PackageRemovedSuccessfully_PackageIsRemoved()
{
@ -898,18 +923,48 @@ namespace PackageManagement.Tests @@ -898,18 +923,48 @@ namespace PackageManagement.Tests
CreateTwoFakeSelectedProjects();
FakeSelectedProject project = fakeSelectedProjects[1];
project.IsSelected = true;
InstallPackageAction expectedAction = project.FakeInstallPackageAction;
viewModel.ManagePackagesForSelectedProjects(fakeSelectedProjects);
List<IPackageAction> actions = fakeActionRunner.GetActionsRunInOneCallAsList();
InstallPackageAction action = actions[0] as InstallPackageAction;
InstallPackageAction expectedAction = project.FakeProject.LastInstallPackageCreated;
Assert.AreEqual(1, actions.Count);
Assert.AreEqual(fakePackage, action.Package);
Assert.AreEqual(expectedAction, action);
}
[Test]
public void ManagePackagesForSelectedProjects_ParentAllowsPrereleasePackagesAndOneProjectIsSelected_OneProjectIsInstalledAllowingPrereleasePackages()
{
CreateViewModel();
CreateTwoFakeSelectedProjects();
ParentAllowsPrereleasePackages();
FakeSelectedProject project = fakeSelectedProjects[1];
project.IsSelected = true;
viewModel.ManagePackagesForSelectedProjects(fakeSelectedProjects);
List<IPackageAction> actions = fakeActionRunner.GetActionsRunInOneCallAsList();
InstallPackageAction action = actions[0] as InstallPackageAction;
Assert.IsTrue(action.AllowPrereleaseVersions);
}
[Test]
public void ManagePackagesForSelectedProjects_ParentDoesNotAllowPrereleasePackagesAndOneProjectIsSelected_OneProjectIsInstalledNotAllowingPrereleasePackages()
{
CreateViewModel();
CreateTwoFakeSelectedProjects();
FakeSelectedProject project = fakeSelectedProjects[1];
project.IsSelected = true;
viewModel.ManagePackagesForSelectedProjects(fakeSelectedProjects);
List<IPackageAction> actions = fakeActionRunner.GetActionsRunInOneCallAsList();
InstallPackageAction action = actions[0] as InstallPackageAction;
Assert.IsFalse(action.AllowPrereleaseVersions);
}
[Test]
public void ManagePackagesForSelectedProjects_FirstProjectIsSelectedAndPackageOperationRequiresLicenseAcceptance_UserPromptedToAcceptLicenses()
{
@ -986,6 +1041,25 @@ namespace PackageManagement.Tests @@ -986,6 +1041,25 @@ namespace PackageManagement.Tests
Assert.IsFalse(allowed);
}
[Test]
public void ManagePackagesForSelectedProjects_ParentAllowsPrereleasesAndFirstProjectIsSelectedAndPackageOperationRequiresLicenseAcceptance_PrereleaseVersionsAreAllowedInPackageOperations()
{
CreateViewModel();
CreateTwoFakeSelectedProjects();
FakeSelectedProject selectedProject = fakeSelectedProjects[0];
selectedProject.IsSelected = true;
FakePackageOperation operation = selectedProject.AddFakeInstallPackageOperation();
operation.FakePackage.RequireLicenseAcceptance = true;
fakePackageManagementEvents.OnAcceptLicensesReturnValue = false;
ParentAllowsPrereleasePackages();
viewModel.ManagePackagesForSelectedProjects(fakeSelectedProjects);
bool allowed = selectedProject.FakeProject.AllowPrereleaseVersionsPassedToGetInstallPackageOperations;
Assert.IsTrue(allowed);
}
[Test]
public void ManagePackagesForSelectedProjects_FirstProjectIsSelectedAndTwoPackageOperationsRequireLicenseAcceptance_UserPromptedToAcceptLicensesForTwoPackages()
{
@ -1110,7 +1184,7 @@ namespace PackageManagement.Tests @@ -1110,7 +1184,7 @@ namespace PackageManagement.Tests
viewModel.ManagePackagesForSelectedProjects(fakeSelectedProjects);
InstallPackageAction expectedAction = FirstFakeSelectedProject.FakeInstallPackageAction;
InstallPackageAction expectedAction = FirstFakeSelectedProject.FakeProject.LastInstallPackageCreated;
List<IPackageAction> actions = fakeActionRunner.GetActionsRunInOneCallAsList();
InstallPackageAction action = actions[0] as InstallPackageAction;
@ -1269,5 +1343,30 @@ namespace PackageManagement.Tests @@ -1269,5 +1343,30 @@ namespace PackageManagement.Tests
Assert.AreEqual("Expected description", summary);
}
[Test]
public void AddPackage_ParentAllowsPrereleasePackages_PackageIsInstalledAllowingPrereleasePackages()
{
CreateViewModel();
ParentAllowsPrereleasePackages();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
viewModel.AddPackage();
var action = fakeActionRunner.ActionPassedToRun as InstallPackageAction;
Assert.IsTrue(action.AllowPrereleaseVersions);
}
[Test]
public void AddPackage_ParentDoesNotAllowPrereleasePackages_PackageIsInstalledNotAllowingPrereleasePackages()
{
CreateViewModel();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
viewModel.AddPackage();
var action = fakeActionRunner.ActionPassedToRun as InstallPackageAction;
Assert.IsFalse(action.AllowPrereleaseVersions);
}
}
}

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

@ -1297,5 +1297,69 @@ namespace PackageManagement.Tests @@ -1297,5 +1297,69 @@ namespace PackageManagement.Tests
Assert.IsFalse(viewModel.IsDisposed);
}
[Test]
public void IncludePrerelease_ChangedToTrue_PackagesAreReadAgain()
{
CreateViewModel();
viewModel.IncludePrerelease = false;
viewModel.AddSixFakePackages();
viewModel.ReadPackages();
CompleteReadPackagesTask();
ClearReadPackagesTasks();
viewModel.IncludePrerelease = true;
Assert.IsTrue(viewModel.IsReadingPackages);
}
[Test]
public void IncludePrerelease_ChangedToFalse_PackagesAreReadAgain()
{
CreateViewModel();
viewModel.IncludePrerelease = true;
viewModel.AddSixFakePackages();
viewModel.ReadPackages();
CompleteReadPackagesTask();
ClearReadPackagesTasks();
viewModel.IncludePrerelease = false;
Assert.IsTrue(viewModel.IsReadingPackages);
}
[Test]
public void IncludePrerelease_ChangedToTrue_PropertyChangedEventIsFired()
{
CreateViewModel();
viewModel.IncludePrerelease = false;
viewModel.AddSixFakePackages();
viewModel.ReadPackages();
CompleteReadPackagesTask();
ClearReadPackagesTasks();
PropertyChangedEventArgs propertyChangedEvent = null;
viewModel.PropertyChanged += (sender, e) => propertyChangedEvent = e;
viewModel.IncludePrerelease = true;
Assert.IsNull(propertyChangedEvent.PropertyName);
}
[Test]
public void IncludePrerelease_SetToTrueWhenAlreadyTrue_PropertyChangedEventIsNotFired()
{
CreateViewModel();
viewModel.IncludePrerelease = true;
viewModel.AddSixFakePackages();
viewModel.ReadPackages();
CompleteReadPackagesTask();
ClearReadPackagesTasks();
bool fired = false;
viewModel.PropertyChanged += (sender, e) => fired = true;
viewModel.IncludePrerelease = true;
Assert.IsFalse(fired);
}
}
}

5
src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs

@ -9,6 +9,7 @@ using ICSharpCode.PackageManagement.Scripting; @@ -9,6 +9,7 @@ using ICSharpCode.PackageManagement.Scripting;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests
{
@ -20,6 +21,7 @@ namespace PackageManagement.Tests @@ -20,6 +21,7 @@ namespace PackageManagement.Tests
FakePackageManagementProject fakeProject;
FakePackageActionRunner fakeActionRunner;
FakePackageManagementEvents fakePackageManagementEvents;
IPackageViewModelParent viewModelParent;
void CreateViewModel()
{
@ -29,7 +31,8 @@ namespace PackageManagement.Tests @@ -29,7 +31,8 @@ namespace PackageManagement.Tests
void CreateViewModel(FakePackageManagementSolution fakeSolution)
{
viewModel = new TestableUpdatedPackageViewModel(fakeSolution);
viewModelParent = MockRepository.GenerateStub<IPackageViewModelParent>();
viewModel = new TestableUpdatedPackageViewModel(viewModelParent, fakeSolution);
fakeProject = fakeSolution.FakeProjectToReturnFromGetProject;
fakeActionRunner = viewModel.FakeActionRunner;
fakePackageManagementEvents = viewModel.FakePackageManagementEvents;

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

@ -21,6 +21,7 @@ namespace PackageManagement.Tests @@ -21,6 +21,7 @@ namespace PackageManagement.Tests
List<IPackage> installedPackages;
List<IPackage> sourceRepositoryPackages;
List<IPackage> packagesUsedWhenCheckingForUpdates;
bool includePreleaseUsedWhenCheckingForUpdates;
[SetUp]
public void Init()
@ -44,7 +45,10 @@ namespace PackageManagement.Tests @@ -44,7 +45,10 @@ namespace PackageManagement.Tests
Arg<bool>.Is.Anything,
Arg<IEnumerable<FrameworkName>>.Is.Anything,
Arg<IEnumerable<IVersionSpec>>.Is.Anything))
.WhenCalled(call => packagesUsedWhenCheckingForUpdates.AddRange(call.Arguments[0] as IEnumerable<IPackage>))
.WhenCalled(call => {
includePreleaseUsedWhenCheckingForUpdates = (bool)call.Arguments[1];
packagesUsedWhenCheckingForUpdates.AddRange(call.Arguments[0] as IEnumerable<IPackage>);
})
.Return(sourceRepositoryPackages.AsQueryable());
updatedPackages = new UpdatedPackages(installedPackages.AsQueryable(), sourceRepository);
@ -125,5 +129,27 @@ namespace PackageManagement.Tests @@ -125,5 +129,27 @@ namespace PackageManagement.Tests
PackageCollectionAssert.AreEqual(expectedPackages, packagesUsedWhenCheckingForUpdates);
}
[Test]
public void GetUpdatedPackages_AllowPrereleaseIsTrue_PrereleasePackagesAllowedForUpdates()
{
AddInstalledPackage("Test", "1.0");
CreateUpdatedPackages();
updatedPackages.GetUpdatedPackages(includePrerelease: true);
Assert.IsTrue(includePreleaseUsedWhenCheckingForUpdates);
}
[Test]
public void GetUpdatedPackages_AllowPrereleaseIsFalse_PrereleasePackagesNotAllowedForUpdates()
{
AddInstalledPackage("Test", "1.0");
CreateUpdatedPackages();
updatedPackages.GetUpdatedPackages(includePrerelease: false);
Assert.IsFalse(includePreleaseUsedWhenCheckingForUpdates);
}
}
}

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

@ -342,6 +342,20 @@ namespace PackageManagement.Tests @@ -342,6 +342,20 @@ namespace PackageManagement.Tests
Assert.AreEqual(0, viewModel.PackageViewModels.Count);
}
[Test]
public void ReadPackages_PrereleasePackageVersionAvailableAndIncludePrereleaseIsTrue_UpdateFound()
{
CreateViewModel();
viewModel.IncludePrerelease = true;
AddPackageToLocalRepository("Test", "1.0.0");
FakePackage newerPackage = AddPackageToActiveRepository("Test", "1.1.0-alpha");
var expectedPackages = new FakePackage[] { newerPackage };
viewModel.ReadPackages();
CompleteReadPackagesTask();
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels);
}
[Test]
public void ShowSources_TwoPackageSources_ReturnsTrue()
{
@ -715,5 +729,29 @@ namespace PackageManagement.Tests @@ -715,5 +729,29 @@ namespace PackageManagement.Tests
Assert.AreEqual(0, viewModel.PackageViewModels.Count);
}
[Test]
public void ShowPrerelease_ByDefault_ReturnsTrue()
{
CreateViewModel();
bool show = viewModel.ShowPrerelease;
Assert.IsTrue(show);
}
[Test]
public void PackageViewModels_ChildPackageViewModelParent_IsUpdatedPackagesViewModel()
{
CreateViewModel();
AddPackageToLocalRepository("Test", "1.0.0.0");
FakePackage newerPackage = AddPackageToActiveRepository("Test", "1.1.0.0");
viewModel.ReadPackages();
CompleteReadPackagesTask();
PackageViewModel childViewModel = viewModel.PackageViewModels.First();
IPackageViewModelParent parent = childViewModel.GetParent();
Assert.AreEqual(viewModel, parent);
}
}
}

Loading…
Cancel
Save