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 @@
<Link>SharpDevelop.exe</Link> <Link>SharpDevelop.exe</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </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> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project> </Project>

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

@ -23,6 +23,11 @@ namespace ICSharpCode.AddInManager2.Tests
FakeSDAddInManagement _sdAddInManagement; FakeSDAddInManagement _sdAddInManagement;
AddInSetup _addInSetup; AddInSetup _addInSetup;
AddIn _addIn1;
AddIn _addIn1_new;
AddIn _addIn2;
AddIn _addIn2_new;
public AddInSetupTests() public AddInSetupTests()
{ {
} }
@ -35,33 +40,268 @@ namespace ICSharpCode.AddInManager2.Tests
_addInSetup = new AddInSetup(_events, _nuGet, _sdAddInManagement); _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(); FakeAddInTree _addInTree = new FakeAddInTree();
Stream resourceStream =
Assembly.GetExecutingAssembly().GetManifestResourceStream("ICSharpCode.AddInManager2.Tests.TestResources.AddInManager2Test.addin"); using (StreamReader streamReader = new StreamReader(@"TestResources\AddInManager2Test.addin"))
using (StreamReader streamReader = new StreamReader(resourceStream)) {
_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("")] [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 // Create a fake package
FakePackage package = new FakePackage() FakePackage package = new FakePackage()
{ {
Id = addIn.Name, Id = _addIn1.Name,
Version = new SemanticVersion(addIn.Version) Version = new SemanticVersion(_addIn1.Version)
}; };
// Prepare all (fake) services needed for AddInSetup and its instance, itself
PrepareAddInSetup(); 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
if (addIns != null) if (addIns != null)
{ {
_addedExternalAddIns.AddRange(addIns); _addedExternalAddIns.AddRange(addIns);
_registeredAddIns.AddRange(addIns);
} }
} }
} }

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

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