From 725c65c30aaffd0f729ccd7a3fe6e8635bfa87d4 Mon Sep 17 00:00:00 2001 From: Andreas Weizel Date: Sat, 6 Apr 2013 01:03:45 +0200 Subject: [PATCH] Added another UpdatedAddInsViewModel test checking support for prereleases (failing at the moment). --- .../UpdatedAddInsViewModelTests.cs | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/UpdatedAddInsViewModelTests.cs b/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/UpdatedAddInsViewModelTests.cs index f3a518e634..2e00cef32b 100644 --- a/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/UpdatedAddInsViewModelTests.cs +++ b/src/AddIns/Misc/AddInManager2/AddInManager2.Tests/UpdatedAddInsViewModelTests.cs @@ -170,6 +170,113 @@ namespace ICSharpCode.AddInManager2.Tests Assert.That(viewModel.AddInPackages[0].IsExternallyReferenced, Is.False, "1st AddIn must not be 'externally referenced'"); } + [Test] + public void ShowUpdatablePreReleaseAddIns() + { + CreateAddIns(); + _addIn1.Enabled = true; + + // Package to be shown in repository + FakePackage fakePackage1_old = new FakePackage() + { + Id = _addIn1.Manifest.PrimaryIdentity, + Version = new SemanticVersion(_addIn1.Version), + Tags = SharpDevelopAddInTag + }; + FakePackage fakePackage1_new = new FakePackage() + { + Id = _addIn1_new.Manifest.PrimaryIdentity, + Version = new SemanticVersion(_addIn1_new.Version), + Tags = SharpDevelopAddInTag, + Published = new DateTimeOffset(DateTime.UtcNow) + }; + FakePackage fakePackage2_old = new FakePackage() + { + Id = _addIn2.Manifest.PrimaryIdentity, + Version = new SemanticVersion(_addIn2.Version), + Tags = SharpDevelopAddInTag + }; + FakePackage fakePackage2_new = new FakePackage() + { + Id = _addIn2_new.Manifest.PrimaryIdentity, + Version = new SemanticVersion(_addIn2_new.Version, "12345"), + Tags = SharpDevelopAddInTag, + Published = new DateTimeOffset(DateTime.UtcNow) + }; + + _addIn1.Properties.Set(ManagedAddIn.NuGetPackageIDManifestAttribute, fakePackage1_old.Id); + _addIn1.Properties.Set(ManagedAddIn.NuGetPackageVersionManifestAttribute, fakePackage1_old.Version.ToString()); + _addIn2.Properties.Set(ManagedAddIn.NuGetPackageIDManifestAttribute, fakePackage2_old.Id); + _addIn2.Properties.Set(ManagedAddIn.NuGetPackageVersionManifestAttribute, fakePackage2_old.Version.ToString()); + + // Setting allows to show pre-releases + _services.FakeSettings.ShowPrereleases = true; + + // List of NuGet repositories + List registeredPackageSources = new List(); + registeredPackageSources.Add(new PackageSource("", "Test Repository")); + _services.FakeRepositories.RegisteredPackageSources = registeredPackageSources; + + List registeredPackageRepositories = new List(); + FakeCorePackageRepository remoteRepository = new FakeCorePackageRepository(); + remoteRepository.Source = registeredPackageSources[0].Source; + remoteRepository.ReturnedPackages = (new IPackage[] { fakePackage1_new, fakePackage2_new }).AsQueryable(); + registeredPackageRepositories.Add(remoteRepository); + _services.FakeRepositories.RegisteredPackageRepositories = registeredPackageRepositories; + + // PackageRepository service should return remoteRepository instance + _services.FakeRepositories.GetRepositoryFromSourceCallback = delegate(PackageSource packageSource) + { + return remoteRepository; + }; + + FakeCorePackageRepository localRepository = new FakeCorePackageRepository(); + _services.FakeNuGet.FakeCorePackageManager.LocalRepository = localRepository; + localRepository.ReturnedPackages = (new IPackage[] { fakePackage1_old, fakePackage2_old }).AsQueryable(); + + // Simulate list of AddIns + _services.FakeSDAddInManagement.RegisteredAddIns.Add(_addIn1); + _services.FakeSDAddInManagement.RegisteredAddIns.Add(_addIn2); + + // Simulation of resolving AddIns <-> NuGet packages + _services.FakeSetup.GetAddInForNuGetPackageCallback = delegate(IPackage package, bool withAddInsMarkedForInstallation) + { + if (package.Id == _addIn1.Properties[ManagedAddIn.NuGetPackageIDManifestAttribute]) + { + return _addIn1; + } + else if (package.Id == _addIn2.Properties[ManagedAddIn.NuGetPackageIDManifestAttribute]) + { + return _addIn2; + } + + return null; + }; + + var viewModel = new UpdatedAddInsViewModel(_services); + viewModel.ReadPackagesAndWaitForUpdate(); + + Assert.That(viewModel.AddInPackages.Count, Is.EqualTo(2), "AddIn list must contain 2 items."); + + AddInPackageViewModelBase firstAddIn = viewModel.AddInPackages[0]; + Assert.That(firstAddIn.Id, Is.EqualTo(_addIn1_new.Manifest.PrimaryIdentity), "Primary identity of 1st AddIn"); + Assert.That(firstAddIn.Name, Is.EqualTo(_addIn1_new.Manifest.PrimaryIdentity), "Name of 1st AddIn"); + Assert.That(firstAddIn.Version, Is.EqualTo(_addIn1_new.Version), "Version of 1st AddIn"); + Assert.That(firstAddIn.IsInstalled, Is.True, "1st AddIn must be 'installed''"); + Assert.That(firstAddIn.IsOffline, Is.False, "1st AddIn must not be 'offline'"); + Assert.That(firstAddIn.IsEnabled, Is.True, "1st AddIn must be 'enabled'"); + Assert.That(firstAddIn.IsUpdate, Is.True, "1st AddIn must be 'update'"); + Assert.That(firstAddIn.IsAdded, Is.False, "1st AddIn must not be 'added'"); + Assert.That(firstAddIn.IsRemoved, Is.False, "1st AddIn must not be 'removed'"); + Assert.That(firstAddIn.HasNuGetConnection, Is.False, "1st AddIn must not have 'NuGet connection'"); + Assert.That(viewModel.AddInPackages[0].IsExternallyReferenced, Is.False, "1st AddIn must not be 'externally referenced'"); + + AddInPackageViewModelBase secondAddIn = viewModel.AddInPackages[1]; + Assert.That(secondAddIn.Id, Is.EqualTo(_addIn2_new.Manifest.PrimaryIdentity), "Primary identity of 1st AddIn"); + Assert.That(secondAddIn.Name, Is.EqualTo(_addIn2_new.Manifest.PrimaryIdentity), "Name of 2nd AddIn"); + Assert.That(secondAddIn.Version, Is.EqualTo(_addIn2_new.Version), "Version of 1st AddIn"); + } + [Test] public void ShowUpdatableAddInsOnPendingUpdate() {