Browse Source

AddInSetupTests for AddIn uninstallation. Added skeletons of test classes for the view models.

pull/32/head
Andreas Weizel 13 years ago
parent
commit
5f38f57c05
  1. 4
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/AddInManager2.Tests.csproj
  2. 92
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/AddInSetupTests.cs
  3. 28
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/AvailableAddInsViewModelTests.cs
  4. 51
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeAddInManagerServices.cs
  5. 37
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/InstalledAddInsViewModelTests.cs
  6. 28
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/UpdatedAddInsViewModelTests.cs

4
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/AddInManager2.Tests.csproj

@ -69,7 +69,9 @@ @@ -69,7 +69,9 @@
<Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="AddInSetupTests.cs" />
<Compile Include="AvailableAddInsViewModelTests.cs" />
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Fakes\FakeAddInManagerServices.cs" />
<Compile Include="Fakes\FakeAddInSetup.cs" />
<Compile Include="Fakes\FakeAddInTree.cs" />
<Compile Include="Fakes\FakeCorePackageRepository.cs" />
@ -80,7 +82,9 @@ @@ -80,7 +82,9 @@
<Compile Include="Fakes\FakePackageRepositories.cs" />
<Compile Include="Fakes\FakeAddInManagerSettings.cs" />
<Compile Include="Fakes\FakeSDAddInManagement.cs" />
<Compile Include="InstalledAddInsViewModelTests.cs" />
<Compile Include="PackageRepositoriesTests.cs" />
<Compile Include="UpdatedAddInsViewModelTests.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="TestResources" />

92
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/AddInSetupTests.cs

@ -603,5 +603,97 @@ namespace ICSharpCode.AddInManager2.Tests @@ -603,5 +603,97 @@ namespace ICSharpCode.AddInManager2.Tests
Assert.That(addInUninstalledEventReceived, Is.False, "AddInUninstalled event sent with correct AddIn");
Assert.That(nuGetPackageUninstalled, Is.False, "Downloaded NuGet package should be uninstalled.");
}
[Test, Description("External AddIn must be uninstalled. Pending uninstallation must be cancellable.")]
public void UninstallValidAddInFromManifestAndCancel()
{
CreateAddIns();
// Prepare all (fake) services needed for AddInSetup and its instance, itself
PrepareAddInSetup();
// Prepare event handlers
bool addInUninstalledEventReceived = false;
_events.AddInUninstalled += delegate(object sender, AddInInstallationEventArgs e)
{
if (e.AddIn.Manifest.PrimaryIdentity == _addIn1.Manifest.PrimaryIdentity)
{
addInUninstalledEventReceived = true;
}
};
// Simulate an installed external AddIn
_sdAddInManagement.TempInstallDirectory = "";
_sdAddInManagement.UserInstallDirectory = "";
_sdAddInManagement.RegisteredAddIns.Add(_addIn1);
// Remove the AddIn
_addInSetup.UninstallAddIn(_addIn1);
Assert.That(_sdAddInManagement.RemovedExternalAddIns, Contains.Item(_addIn1), "AddIn must have been removed from external AddIns list.");
Assert.That(_sdAddInManagement.AddInsMarkedForRemoval, Contains.Item(_addIn1.Manifest.PrimaryIdentity), "AddIn must have been marked for removal on next startup.");
Assert.That(addInUninstalledEventReceived, "AddInUninstalled event sent with correct AddIn");
// Cancel the uninstallation
_addInSetup.CancelUninstallation(_addIn1);
// Check if uninstallation has been reverted
Assert.That(_sdAddInManagement.AddInsMarkedForRemoval.Contains(_addIn1.Manifest.PrimaryIdentity), Is.False, "AddIn must not be marked for removal any more.");
}
[Test, Description("AddIn installed from a NuGet package must be uninstalled.")]
public void UninstallValidNuGetAddIn()
{
CreateAddIns();
// Create a fake package
FakePackage fakePackage = new FakePackage()
{
Id = _addIn1.Manifest.PrimaryIdentity,
Version = new SemanticVersion(_addIn1.Version)
};
// Prepare all (fake) services needed for AddInSetup and its instance, itself
PrepareAddInSetup();
// Prepare event handlers
bool addInUninstalledEventReceived = false;
_events.AddInUninstalled += delegate(object sender, AddInInstallationEventArgs e)
{
if (e.AddIn.Manifest.PrimaryIdentity == _addIn1.Manifest.PrimaryIdentity)
{
addInUninstalledEventReceived = true;
}
};
// Simulate an installed AddIn
_sdAddInManagement.TempInstallDirectory = "";
_sdAddInManagement.UserInstallDirectory = "";
_sdAddInManagement.RegisteredAddIns.Add(_addIn1);
// Simulate the installed NuGet package in local repository
FakeCorePackageRepository localRepository = new FakeCorePackageRepository();
_nuGet.FakeCorePackageManager.LocalRepository = localRepository;
localRepository.ReturnedPackages = (new IPackage[] { fakePackage }).AsQueryable();
bool nuGetPackageUninstalled = false;
_nuGet.FakeCorePackageManager.UninstallPackageCallback = delegate(IPackage package, bool forceRemove, bool removeDependencies)
{
if ((package == fakePackage) && forceRemove && !removeDependencies)
{
nuGetPackageUninstalled = true;
}
};
// Remove the AddIn
_addInSetup.UninstallAddIn(_addIn1);
Assert.That(addInUninstalledEventReceived, "AddInUninstalled event sent with correct AddIn");
// Simulate removing unreferenced NuGet packages
_addInSetup.RemoveUnreferencedNuGetPackages();
Assert.That(nuGetPackageUninstalled, Is.True, "NuGet package must be removed after restart.");
}
}
}

28
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/AvailableAddInsViewModelTests.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
// 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.AddInManager2.Tests
{
public class AvailableAddInsViewModelTests
{
FakeAddInManagerServices _services;
public AvailableAddInsViewModelTests()
{
}
[SetUp]
public void SetUp()
{
_services = new FakeAddInManagerServices();
_services.Events = new AddInManagerEvents();
_services.Setup = new FakeAddInSetup();
_services.Settings = new FakeAddInManagerSettings();
_services.SDAddInManagement = new FakeSDAddInManagement();
_services.Repositories = new FakePackageRepositories();
_services.NuGet = new FakeNuGetPackageManager();
}
}
}

51
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeAddInManagerServices.cs

@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
// 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.AddInManager2.Model;
namespace ICSharpCode.AddInManager2.Tests.Fakes
{
public class FakeAddInManagerServices : IAddInManagerServices
{
public FakeAddInManagerServices()
{
}
public IAddInManagerEvents Events
{
get;
set
}
public IPackageRepositories Repositories
{
get;
set
}
public IAddInSetup Setup
{
get;
set
}
public INuGetPackageManager NuGet
{
get;
set
}
public IAddInManagerSettings Settings
{
get;
set
}
public ISDAddInManagement SDAddInManagement
{
get;
set
}
}
}

37
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/InstalledAddInsViewModelTests.cs

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
// 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.AddInManager2.Model;
using ICSharpCode.AddInManager2.Tests.Fakes;
using NUnit.Framework;
namespace ICSharpCode.AddInManager2.Tests
{
public class InstalledAddInsViewModelTests
{
FakeAddInManagerServices _services;
public InstalledAddInsViewModelTests()
{
}
[SetUp]
public void SetUp()
{
_services = new FakeAddInManagerServices();
_services.Events = new AddInManagerEvents();
_services.Setup = new FakeAddInSetup();
_services.Settings = new FakeAddInManagerSettings();
_services.SDAddInManagement = new FakeSDAddInManagement();
_services.Repositories = new FakePackageRepositories();
_services.NuGet = new FakeNuGetPackageManager();
}
[Test]
public void ShowInstalledAddIns()
{
}
}
}

28
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/UpdatedAddInsViewModelTests.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
// 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.AddInManager2.Tests
{
public class UpdatedAddInsViewModelTests
{
FakeAddInManagerServices _services;
public UpdatedAddInsViewModelTests()
{
}
[SetUp]
public void SetUp()
{
_services = new FakeAddInManagerServices();
_services.Events = new AddInManagerEvents();
_services.Setup = new FakeAddInSetup();
_services.Settings = new FakeAddInManagerSettings();
_services.SDAddInManagement = new FakeSDAddInManagement();
_services.Repositories = new FakePackageRepositories();
_services.NuGet = new FakeNuGetPackageManager();
}
}
}
Loading…
Cancel
Save