Browse Source

Added first AddInSetup unit tests.

pull/32/head
Andreas Weizel 13 years ago
parent
commit
7d3ccae4e9
  1. 25
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/AddInManager2.Tests.csproj
  2. 260
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/AddInSetupTests.cs
  3. 1
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeSDAddInManagement.cs
  4. 2
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test.addin
  5. BIN
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test.sdaddin
  6. 13
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_2.addin
  7. BIN
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_2.sdaddin
  8. 13
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_2_New.addin
  9. BIN
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_2_New.sdaddin
  10. 13
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_New.addin
  11. BIN
      src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_New.sdaddin

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

@ -112,7 +112,30 @@ @@ -112,7 +112,30 @@
<Link>SharpDevelop.exe</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Resource Include="TestResources\AddInManager2Test.addin" />
<None Include="TestResources\AddInManager2Test.addin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestResources\AddInManager2Test.sdaddin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestResources\AddInManager2Test_2.addin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestResources\AddInManager2Test_2.sdaddin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestResources\AddInManager2Test_2_New.addin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestResources\AddInManager2Test_2_New.sdaddin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestResources\AddInManager2Test_New.addin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestResources\AddInManager2Test_New.sdaddin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

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

@ -23,6 +23,11 @@ namespace ICSharpCode.AddInManager2.Tests @@ -23,6 +23,11 @@ namespace ICSharpCode.AddInManager2.Tests
FakeSDAddInManagement _sdAddInManagement;
AddInSetup _addInSetup;
AddIn _addIn1;
AddIn _addIn1_new;
AddIn _addIn2;
AddIn _addIn2_new;
public AddInSetupTests()
{
}
@ -35,33 +40,268 @@ namespace ICSharpCode.AddInManager2.Tests @@ -35,33 +40,268 @@ namespace ICSharpCode.AddInManager2.Tests
_addInSetup = new AddInSetup(_events, _nuGet, _sdAddInManagement);
}
private AddIn CreateAddIn()
private void CreateAddIns()
{
// Create AddIn object from an *.addin file available in this assembly's resources
// Create AddIn objects from *.addin files available in this assembly's output directory
FakeAddInTree _addInTree = new FakeAddInTree();
Stream resourceStream =
Assembly.GetExecutingAssembly().GetManifestResourceStream("ICSharpCode.AddInManager2.Tests.TestResources.AddInManager2Test.addin");
using (StreamReader streamReader = new StreamReader(resourceStream))
using (StreamReader streamReader = new StreamReader(@"TestResources\AddInManager2Test.addin"))
{
_addIn1 = AddIn.Load(_addInTree, streamReader);
}
using (StreamReader streamReader = new StreamReader(@"TestResources\AddInManager2Test_New.addin"))
{
_addIn1_new = AddIn.Load(_addInTree, streamReader);
}
using (StreamReader streamReader = new StreamReader(@"TestResources\AddInManager2Test_2.addin"))
{
_addIn2 = AddIn.Load(_addInTree, streamReader);
}
using (StreamReader streamReader = new StreamReader(@"TestResources\AddInManager2Test_2_New.addin"))
{
_addIn2_new = AddIn.Load(_addInTree, streamReader);
}
}
[Test, Description("")]
public void InstallValidAddInFromManifest()
{
CreateAddIns();
// Prepare all (fake) services needed for AddInSetup and its instance, itself
PrepareAddInSetup();
// Install the AddIn from *.sdaddin package
_sdAddInManagement.AddInToLoad = _addIn1;
AddIn installedAddIn = _addInSetup.InstallAddIn(@"TestResources\AddInManager2Test.addin");
// The AddIn must have been added to AddInTree
Assert.That(installedAddIn, Is.Not.Null, "InstallAddIn() returns valid AddIn object");
Assert.That(_sdAddInManagement.RegisteredAddIns, Contains.Item(_addIn1), "AddIn object added to AddInTree");
Assert.That(_sdAddInManagement.AddedExternalAddIns, Contains.Item(_addIn1), "AddIn object added as external");
// Look if we find a ManagedAddIn object for the new AddIn
ManagedAddIn foundAddIn = null;
foreach (var managedAddIn in _addInSetup.AddInsWithMarkedForInstallation)
{
return AddIn.Load(_addInTree, streamReader);
if (managedAddIn.AddIn.Manifest.PrimaryIdentity == _addIn1.Manifest.PrimaryIdentity)
{
// Found!
foundAddIn = managedAddIn;
break;
}
}
Assert.That(foundAddIn, Is.Not.Null, "ManagedAddIn found in AddInsWithMarkedForInstallation");
Assert.That(foundAddIn.IsTemporary, Is.True, "ManagedAddIn is temporary");
Assert.That(foundAddIn.IsUpdate, Is.False, "ManagedAddIn is not an update");
Assert.That(foundAddIn.InstallationSource, Is.EqualTo(AddInInstallationSource.Offline), "ManagedAddIn's installation source is 'offline'");
}
[Test, Description("")]
public void InstallValidAddInFromOfflinePackage()
{
CreateAddIns();
// Prepare all (fake) services needed for AddInSetup and its instance, itself
PrepareAddInSetup();
// Install the AddIn from manifest
_sdAddInManagement.AddInToLoad = _addIn1;
AddIn installedAddIn = _addInSetup.InstallAddIn(@"TestResources\AddInManager2Test.sdaddin");
// The AddIn must have been added to AddInTree
Assert.That(installedAddIn, Is.Not.Null, "InstallAddIn() returns valid AddIn object");
Assert.That(_sdAddInManagement.RegisteredAddIns, Contains.Item(_addIn1), "AddIn object added to AddInTree");
// Look if we find a ManagedAddIn object for the new AddIn
ManagedAddIn foundAddIn = null;
foreach (var managedAddIn in _addInSetup.AddInsWithMarkedForInstallation)
{
if (managedAddIn.AddIn.Manifest.PrimaryIdentity == _addIn1.Manifest.PrimaryIdentity)
{
// Found!
foundAddIn = managedAddIn;
break;
}
}
Assert.That(foundAddIn, Is.Not.Null, "ManagedAddIn found in AddInsWithMarkedForInstallation");
Assert.That(foundAddIn.IsTemporary, Is.True, "ManagedAddIn is temporary");
Assert.That(foundAddIn.IsUpdate, Is.False, "ManagedAddIn is not an update");
Assert.That(foundAddIn.InstallationSource, Is.EqualTo(AddInInstallationSource.Offline), "ManagedAddIn's installation source is 'offline'");
}
[Test, Description("")]
public void InstallValidAddIn()
public void UpdateValidAddInFromOfflinePackage()
{
AddIn addIn = CreateAddIn();
CreateAddIns();
// Prepare all (fake) services needed for AddInSetup and its instance, itself
PrepareAddInSetup();
// This AddIn is already installed
_sdAddInManagement.RegisteredAddIns.Add(_addIn1);
// Install the new version of AddIn from manifest
_sdAddInManagement.AddInToLoad = _addIn1_new;
AddIn installedAddIn = _addInSetup.InstallAddIn(@"TestResources\AddInManager2Test_New.sdaddin");
// Test updated AddIn in AddInTree
Assert.That(installedAddIn, Is.Not.Null, "InstallAddIn() returns valid AddIn object");
Assert.That(_sdAddInManagement.RegisteredAddIns, Contains.Item(_addIn1), "Old AddIn object still in AddInTree");
Assert.That(_sdAddInManagement.RegisteredAddIns.Contains(_addIn1_new), Is.Not.True,
"New AddIn object not in AddInTree");
// Look if we find a ManagedAddIn object for the new AddIn
ManagedAddIn foundAddIn = null;
foreach (var managedAddIn in _addInSetup.AddInsWithMarkedForInstallation)
{
if (managedAddIn.AddIn.Manifest.PrimaryIdentity == _addIn1_new.Manifest.PrimaryIdentity)
{
// Found!
foundAddIn = managedAddIn;
break;
}
}
Assert.That(foundAddIn, Is.Not.Null, "ManagedAddIn found in AddInsWithMarkedForInstallation");
Assert.That(foundAddIn.AddIn.Version, Is.EqualTo(_addIn1_new.Version), "ManagedAddIn must have new version");
Assert.That(foundAddIn.OldVersion, Is.EqualTo(_addIn1.Version), "ManagedAddIn must know installed (old) version");
Assert.That(foundAddIn.IsTemporary, Is.True, "ManagedAddIn is temporary");
Assert.That(foundAddIn.IsUpdate, Is.True, "ManagedAddIn is an update");
Assert.That(foundAddIn.InstallationSource, Is.EqualTo(AddInInstallationSource.Offline), "ManagedAddIn's installation source is 'offline'");
}
[Test, Description("")]
public void InstallValidAddInFromIncompletelyInstalledNuGetPackage()
{
CreateAddIns();
// Create a fake package
FakePackage package = new FakePackage()
{
Id = _addIn1.Name,
Version = new SemanticVersion(_addIn1.Version)
};
// Prepare all (fake) services needed for AddInSetup and its instance, itself
PrepareAddInSetup();
// Install the AddIn from an extracted NuGet package
_sdAddInManagement.AddInToLoad = _addIn1;
AddIn installedAddIn = _addInSetup.InstallAddIn(package, "TestResources");
// The AddIn must have been added to AddInTree
Assert.That(installedAddIn, Is.Not.Null, "InstallAddIn() returns valid AddIn object");
Assert.That(_sdAddInManagement.RegisteredAddIns, Contains.Item(_addIn1), "AddIn object added to AddInTree");
// Look if we find a ManagedAddIn object for the new AddIn
ManagedAddIn foundAddIn = null;
foreach (var managedAddIn in _addInSetup.AddInsWithMarkedForInstallation)
{
if (managedAddIn.AddIn.Manifest.PrimaryIdentity == _addIn1.Manifest.PrimaryIdentity)
{
// Found!
foundAddIn = managedAddIn;
break;
}
}
Assert.That(foundAddIn, Is.Not.Null, "ManagedAddIn found in AddInsWithMarkedForInstallation");
Assert.That(foundAddIn.IsTemporary, Is.True, "ManagedAddIn is temporary");
Assert.That(foundAddIn.IsUpdate, Is.False, "ManagedAddIn is not an update");
Assert.That(foundAddIn.InstallationSource, Is.EqualTo(AddInInstallationSource.NuGetRepository), "ManagedAddIn's installation source is 'NuGet'");
}
[Test, Description("")]
public void InstallValidAddInFromDownloadedNuGetPackage()
{
CreateAddIns();
// Create a fake package
FakePackage package = new FakePackage()
{
Id = addIn.Name,
Version = new SemanticVersion(addIn.Version)
Id = _addIn1.Name,
Version = new SemanticVersion(_addIn1.Version)
};
// Prepare all (fake) services needed for AddInSetup and its instance, itself
PrepareAddInSetup();
// Simulate download by NuGet Core PackageManager
_sdAddInManagement.AddInToLoad = _addIn1;
_events.OnAddInPackageDownloaded(new PackageOperationEventArgs(package, null, "TestResources"));
// The AddIn must have been added to AddInTree
Assert.That(_sdAddInManagement.RegisteredAddIns, Contains.Item(_addIn1), "AddIn object added to AddInTree");
// Look if we find a ManagedAddIn object for the new AddIn
ManagedAddIn foundAddIn = null;
foreach (var managedAddIn in _addInSetup.AddInsWithMarkedForInstallation)
{
if (managedAddIn.AddIn.Manifest.PrimaryIdentity == _addIn1.Manifest.PrimaryIdentity)
{
// Found!
foundAddIn = managedAddIn;
break;
}
}
Assert.That(foundAddIn, Is.Not.Null, "ManagedAddIn found in AddInsWithMarkedForInstallation");
Assert.That(foundAddIn.IsTemporary, Is.True, "ManagedAddIn is temporary");
Assert.That(foundAddIn.IsUpdate, Is.False, "ManagedAddIn is not an update");
Assert.That(foundAddIn.InstallationSource, Is.EqualTo(AddInInstallationSource.NuGetRepository), "ManagedAddIn's installation source is 'NuGet'");
}
[Test, Description("")]
public void UpdateValidAddInFromDownloadedNuGetPackage()
{
CreateAddIns();
// Create a fake package
FakePackage package = new FakePackage()
{
Id = _addIn1.Name,
Version = new SemanticVersion(_addIn1_new.Version)
};
// Prepare all (fake) services needed for AddInSetup and its instance, itself
PrepareAddInSetup();
// This AddIn is already installed
_sdAddInManagement.RegisteredAddIns.Add(_addIn1);
// Simulate download of new version by NuGet Core PackageManager
_sdAddInManagement.AddInToLoad = _addIn1_new;
_events.OnAddInPackageDownloaded(new PackageOperationEventArgs(package, null, "TestResources"));
// Test updated AddIn in AddInTree
Assert.That(_sdAddInManagement.RegisteredAddIns, Contains.Item(_addIn1), "Old AddIn object still in AddInTree");
Assert.That(_sdAddInManagement.RegisteredAddIns.Contains(_addIn1_new), Is.Not.True,
"New AddIn object not in AddInTree");
// Look if we find a ManagedAddIn object for the new AddIn
ManagedAddIn foundAddIn = null;
foreach (var managedAddIn in _addInSetup.AddInsWithMarkedForInstallation)
{
if (managedAddIn.AddIn.Manifest.PrimaryIdentity == _addIn1_new.Manifest.PrimaryIdentity)
{
// Found!
foundAddIn = managedAddIn;
break;
}
}
Assert.That(foundAddIn, Is.Not.Null, "ManagedAddIn found in AddInsWithMarkedForInstallation");
Assert.That(foundAddIn.AddIn.Version, Is.EqualTo(_addIn1_new.Version), "ManagedAddIn must have new version");
Assert.That(foundAddIn.OldVersion, Is.EqualTo(_addIn1.Version), "ManagedAddIn must know installed (old) version");
Assert.That(foundAddIn.IsTemporary, Is.True, "ManagedAddIn is temporary");
Assert.That(foundAddIn.IsUpdate, Is.True, "ManagedAddIn is an update");
Assert.That(foundAddIn.InstallationSource, Is.EqualTo(AddInInstallationSource.NuGetRepository), "ManagedAddIn's installation source is 'NuGet'");
}
}
}

1
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/Fakes/FakeSDAddInManagement.cs

@ -150,6 +150,7 @@ namespace ICSharpCode.AddInManager2.Tests.Fakes @@ -150,6 +150,7 @@ namespace ICSharpCode.AddInManager2.Tests.Fakes
if (addIns != null)
{
_addedExternalAddIns.AddRange(addIns);
_registeredAddIns.AddRange(addIns);
}
}
}

2
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test.addin

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
description="Allows to test the AddIn that allows installing and updating SharpDevelop AddIns.">
<Manifest>
<Identity name="ICSharpCode.AddInManager2Test" version="@ICSharpCode.AddInManager2Test.dll" />
<Identity name="ICSharpCode.AddInManager2Test" version="1.0.0.0" />
</Manifest>
<Runtime>

BIN
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test.sdaddin

Binary file not shown.

13
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_2.addin

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
<AddIn name="AddInManager Test 2"
author ="Andreas Weizel"
description="Allows to test the AddIn that allows installing and updating SharpDevelop AddIns.">
<Manifest>
<Identity name="ICSharpCode.AddInManager2Test_2" version="1.0.0.0" />
</Manifest>
<Runtime>
<Import assembly="ICSharpCode.AddInManager2Test_2.dll"/>
<Import assembly="ICSharpCode.AddInManager2.dll"/>
</Runtime>
</AddIn>

BIN
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_2.sdaddin

Binary file not shown.

13
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_2_New.addin

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
<AddIn name="AddInManager Test 2"
author ="Andreas Weizel"
description="Allows to test the AddIn that allows installing and updating SharpDevelop AddIns.">
<Manifest>
<Identity name="ICSharpCode.AddInManager2Test_2" version="1.1.0.0" />
</Manifest>
<Runtime>
<Import assembly="ICSharpCode.AddInManager2Test_2.dll"/>
<Import assembly="ICSharpCode.AddInManager2.dll"/>
</Runtime>
</AddIn>

BIN
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_2_New.sdaddin

Binary file not shown.

13
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_New.addin

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
<AddIn name="AddInManager Test"
author ="Andreas Weizel"
description="Allows to test the AddIn that allows installing and updating SharpDevelop AddIns.">
<Manifest>
<Identity name="ICSharpCode.AddInManager2Test" version="1.1.0.0" />
</Manifest>
<Runtime>
<Import assembly="ICSharpCode.AddInManager2Test.dll"/>
<Import assembly="ICSharpCode.AddInManager2.dll"/>
</Runtime>
</AddIn>

BIN
src/AddIns/Misc/AddInManager2/AddInManager2.Tests/TestResources/AddInManager2Test_New.sdaddin

Binary file not shown.
Loading…
Cancel
Save