Browse Source

Show package sources drop down in updated packages tab.

Allow user to choose which package source when looking for updated packages.
pull/33/head
Matt Ward 13 years ago
parent
commit
199c8059b4
  1. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeRegisteredPackageRepositories.cs
  2. 6
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesView.xaml
  3. 7
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
  4. 4
      src/AddIns/Misc/PackageManagement/Test/Src/ManagePackagesViewModelTests.cs
  5. 80
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackagesViewModelTests.cs

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

@ -70,9 +70,11 @@ namespace ICSharpCode.PackageManagement.Design
PackageSources.AddRange(sources); PackageSources.AddRange(sources);
} }
public FakePackage AddFakePackageWithVersionToAggregrateRepository(string version) public FakePackage AddFakePackageWithVersionToActiveRepository(string version)
{ {
return AddFakePackageWithVersionToAggregrateRepository("Test", version); var package = FakePackage.CreatePackageWithVersion("Test", version);
FakeActiveRepository.FakePackages.Add(package);
return package;
} }
public FakePackage AddFakePackageWithVersionToAggregrateRepository(string id, string version) public FakePackage AddFakePackageWithVersionToAggregrateRepository(string id, string version)

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

@ -310,7 +310,7 @@
<RowDefinition /> <RowDefinition />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid <Grid
Visibility="{Binding Path=IsSearchable, Converter={StaticResource BoolToVisibility}}"> Visibility="{Binding Path=ShowPackageSources, Converter={StaticResource BoolToVisibility}}">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition /> <ColumnDefinition />
<ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/>
@ -330,6 +330,7 @@
<TextBox <TextBox
Grid.Row="1" Grid.Row="1"
Grid.Column="0" Grid.Column="0"
Visibility="{Binding Path=IsSearchable, Converter={StaticResource BoolToVisibility}}"
Text="{Binding Path=SearchTerms, UpdateSourceTrigger=PropertyChanged}"> Text="{Binding Path=SearchTerms, UpdateSourceTrigger=PropertyChanged}">
<TextBox.InputBindings> <TextBox.InputBindings>
<KeyBinding <KeyBinding
@ -340,7 +341,8 @@
<TextBlock <TextBlock
Grid.Row="1" Grid.Row="1"
Grid.Column="1" Grid.Column="1"
Margin="4"> Margin="4"
Visibility="{Binding Path=IsSearchable, Converter={StaticResource BoolToVisibility}}">
<Hyperlink <Hyperlink
TextDecorations="{x:Null}" TextDecorations="{x:Null}"
Command="{Binding Path=SearchCommand}"> Command="{Binding Path=SearchCommand}">

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

@ -26,14 +26,15 @@ namespace ICSharpCode.PackageManagement
taskFactory) taskFactory)
{ {
this.selectedProjects = new PackageManagementSelectedProjects(solution); this.selectedProjects = new PackageManagementSelectedProjects(solution);
ShowPackageSources = registeredPackageRepositories.HasMultiplePackageSources;
} }
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts() protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
{ {
try { try {
IPackageRepository aggregateRepository = RegisteredPackageRepositories.CreateAggregateRepository(); IPackageRepository repository = RegisteredPackageRepositories.ActiveRepository;
IQueryable<IPackage> installedPackages = GetInstalledPackages(aggregateRepository); IQueryable<IPackage> installedPackages = GetInstalledPackages(repository);
updatedPackages = new UpdatedPackages(installedPackages, aggregateRepository); updatedPackages = new UpdatedPackages(installedPackages, repository);
} catch (Exception ex) { } catch (Exception ex) {
errorMessage = ex.Message; errorMessage = ex.Message;
} }

4
src/AddIns/Misc/PackageManagement/Test/Src/ManagePackagesViewModelTests.cs

@ -175,11 +175,11 @@ namespace PackageManagement.Tests
Id = "Test", Id = "Test",
Version = new SemanticVersion("2.0.0.0") Version = new SemanticVersion("2.0.0.0")
}; };
fakeRegisteredPackageRepositories.FakeAggregateRepository.FakePackages.Add(newPackage); fakeRegisteredPackageRepositories.FakeActiveRepository.FakePackages.Add(newPackage);
CreateViewModel(fakeSolution); CreateViewModel(fakeSolution);
List<FakePackage> expectedPackages = fakeRegisteredPackageRepositories.FakeAggregateRepository.FakePackages; List<FakePackage> expectedPackages = fakeRegisteredPackageRepositories.FakeActiveRepository.FakePackages;
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.UpdatedPackagesViewModel.PackageViewModels); PackageCollectionAssert.AreEqual(expectedPackages, viewModel.UpdatedPackagesViewModel.PackageViewModels);
} }

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

@ -4,6 +4,7 @@
using System; using System;
using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design; using ICSharpCode.PackageManagement.Design;
using NuGet;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
@ -36,9 +37,14 @@ namespace PackageManagement.Tests
} }
void CreateViewModel(FakePackageManagementSolution solution) void CreateViewModel(FakePackageManagementSolution solution)
{
CreateRegisteredPackageRepositories();
CreateViewModel(solution, registeredPackageRepositories);
}
void CreateViewModel(FakePackageManagementSolution solution, FakeRegisteredPackageRepositories registeredPackageRepositories)
{ {
taskFactory = new FakeTaskFactory(); taskFactory = new FakeTaskFactory();
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
var packageViewModelFactory = new FakePackageViewModelFactory(); var packageViewModelFactory = new FakePackageViewModelFactory();
var updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory); var updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory);
viewModel = new UpdatedPackagesViewModel( viewModel = new UpdatedPackagesViewModel(
@ -48,6 +54,17 @@ namespace PackageManagement.Tests
taskFactory); taskFactory);
} }
void CreateRegisteredPackageRepositories()
{
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
}
void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
{
CreateSolution();
CreateViewModel(solution, registeredPackageRepositories);
}
void CreateExceptionThrowingSolution() void CreateExceptionThrowingSolution()
{ {
exceptionThrowingSolution = new ExceptionThrowingPackageManagementSolution(); exceptionThrowingSolution = new ExceptionThrowingPackageManagementSolution();
@ -66,9 +83,9 @@ namespace PackageManagement.Tests
return package; return package;
} }
FakePackage AddPackageToAggregateRepository(string version) FakePackage AddPackageToActiveRepository(string version)
{ {
return registeredPackageRepositories.AddFakePackageWithVersionToAggregrateRepository(version); return registeredPackageRepositories.AddFakePackageWithVersionToActiveRepository(version);
} }
FakePackage AddPackageToSolution(string version) FakePackage AddPackageToSolution(string version)
@ -78,12 +95,35 @@ namespace PackageManagement.Tests
return package; return package;
} }
void AddOnePackageSourceToRegisteredSources()
{
registeredPackageRepositories.ClearPackageSources();
registeredPackageRepositories.AddOnePackageSource();
registeredPackageRepositories.HasMultiplePackageSources = false;
}
void AddTwoPackageSourcesToRegisteredSources()
{
var expectedPackageSources = new PackageSource[] {
new PackageSource("http://first.com", "First"),
new PackageSource("http://second.com", "Second")
};
AddPackageSourcesToRegisteredSources(expectedPackageSources);
registeredPackageRepositories.HasMultiplePackageSources = true;
}
void AddPackageSourcesToRegisteredSources(PackageSource[] sources)
{
registeredPackageRepositories.ClearPackageSources();
registeredPackageRepositories.AddPackageSources(sources);
}
[Test] [Test]
public void ReadPackages_OneNewerPackageVersionAvailable_NewerPackageVersionDisplayed() public void ReadPackages_OneNewerPackageVersionAvailable_NewerPackageVersionDisplayed()
{ {
CreateViewModel(); CreateViewModel();
AddPackageToLocalRepository("1.0.0.0"); AddPackageToLocalRepository("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0"); FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages(); viewModel.ReadPackages();
CompleteReadPackagesTask(); CompleteReadPackagesTask();
@ -100,8 +140,8 @@ namespace PackageManagement.Tests
{ {
CreateViewModel(); CreateViewModel();
AddPackageToLocalRepository("1.0.0.0"); AddPackageToLocalRepository("1.0.0.0");
AddPackageToAggregateRepository("1.0.0.0"); AddPackageToActiveRepository("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0"); FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages(); viewModel.ReadPackages();
CompleteReadPackagesTask(); CompleteReadPackagesTask();
@ -118,7 +158,7 @@ namespace PackageManagement.Tests
{ {
CreateViewModel(); CreateViewModel();
AddPackageToLocalRepository("1.0.0.0"); AddPackageToLocalRepository("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0"); FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages(); viewModel.ReadPackages();
@ -148,7 +188,7 @@ namespace PackageManagement.Tests
NoProjectsSelected(); NoProjectsSelected();
CreateViewModel(solution); CreateViewModel(solution);
AddPackageToSolution("1.0.0.0"); AddPackageToSolution("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0"); FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages(); viewModel.ReadPackages();
CompleteReadPackagesTask(); CompleteReadPackagesTask();
@ -167,7 +207,7 @@ namespace PackageManagement.Tests
NoProjectsSelected(); NoProjectsSelected();
CreateViewModel(solution); CreateViewModel(solution);
AddPackageToSolution("1.0.0.0"); AddPackageToSolution("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0"); FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages(); viewModel.ReadPackages();
CompleteReadPackagesTask(); CompleteReadPackagesTask();
@ -192,12 +232,32 @@ namespace PackageManagement.Tests
CreateViewModel(); CreateViewModel();
AddPackageToLocalRepository("1.0.0"); AddPackageToLocalRepository("1.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0-alpha"); FakePackage newerPackage = AddPackageToActiveRepository("1.1.0-alpha");
viewModel.ReadPackages(); viewModel.ReadPackages();
CompleteReadPackagesTask(); CompleteReadPackagesTask();
Assert.AreEqual(0, viewModel.PackageViewModels.Count); Assert.AreEqual(0, viewModel.PackageViewModels.Count);
} }
[Test]
public void ShowSources_TwoPackageSources_ReturnsTrue()
{
CreateRegisteredPackageRepositories();
AddTwoPackageSourcesToRegisteredSources();
CreateViewModel(registeredPackageRepositories);
Assert.IsTrue(viewModel.ShowPackageSources);
}
[Test]
public void ShowPackageSources_OnePackageSources_ReturnsFalse()
{
CreateRegisteredPackageRepositories();
AddOnePackageSourceToRegisteredSources();
CreateViewModel(registeredPackageRepositories);
Assert.IsFalse(viewModel.ShowPackageSources);
}
} }
} }

Loading…
Cancel
Save