@ -17,6 +17,8 @@ namespace ICSharpCode.AddInManager2.Tests
@@ -17,6 +17,8 @@ namespace ICSharpCode.AddInManager2.Tests
{
public class InstalledAddInsViewModelTests
{
private const string SharpDevelopAddInTag = " sharpdevelopaddin " ;
FakeAddInManagerServices _ services ;
AddIn _ addIn1 ;
@ -109,5 +111,257 @@ namespace ICSharpCode.AddInManager2.Tests
@@ -109,5 +111,257 @@ namespace ICSharpCode.AddInManager2.Tests
Assert . That ( viewModel . AddInPackages [ 0 ] . IsExternallyReferenced , Is . True , "1st AddIn must be 'externally referenced'" ) ;
Assert . That ( viewModel . AddInPackages [ 1 ] . IsExternallyReferenced , Is . False , "2nd AddIn must not be 'externally referenced'" ) ;
}
[Test]
public void ShowOfflineAddInsMarkedForUninstallation ( )
{
CreateAddIns ( ) ;
_ addIn1 . Enabled = true ;
_ addIn1 . Action = AddInAction . Uninstall ;
// Empty list of NuGet repositories
_ services . FakeRepositories . RegisteredPackageSources = new List < PackageSource > ( ) ;
_ services . FakeRepositories . RegisteredPackageRepositories = new List < IPackageRepository > ( ) ;
FakeCorePackageRepository localRepository = new FakeCorePackageRepository ( ) ;
_ services . FakeNuGet . FakeCorePackageManager . LocalRepository = localRepository ;
localRepository . ReturnedPackages = ( new IPackage [ ] { } ) . AsQueryable ( ) ;
// Simulate list of AddIns
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn1 ) ;
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn2 ) ;
var viewModel = new InstalledAddInsViewModel ( _ 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 . Manifest . PrimaryIdentity ) , "Primary identity of 1st AddIn" ) ;
Assert . That ( firstAddIn . Name , Is . EqualTo ( _ addIn1 . Name ) , "Name of 1st AddIn" ) ;
Assert . That ( firstAddIn . Version , Is . EqualTo ( _ addIn1 . Version ) , "Version of 1st AddIn" ) ;
Assert . That ( firstAddIn . IsInstalled , Is . True , "1st AddIn must be 'installed''" ) ;
Assert . That ( firstAddIn . IsOffline , Is . True , "1st AddIn must be 'offline'" ) ;
Assert . That ( firstAddIn . IsEnabled , Is . True , "1st AddIn must be 'enabled'" ) ;
Assert . That ( firstAddIn . IsUpdate , Is . False , "1st AddIn must not be 'update'" ) ;
Assert . That ( firstAddIn . IsAdded , Is . False , "1st AddIn must not be 'added'" ) ;
Assert . That ( firstAddIn . IsRemoved , Is . True , "1st AddIn must be 'removed'" ) ;
Assert . That ( firstAddIn . HasNuGetConnection , Is . False , "1st AddIn must not have 'NuGet connection'" ) ;
// Check 'externally referenced' status of both AddIns
// (simulating that IsAddInManifestIinExternalPath() returns true for 1st AddIn and false for 2nd)
_ services . FakeSDAddInManagement . IsAddInManifestInExternalPathCallback = ( addIn ) = > addIn = = _ addIn1 ;
Assert . That ( viewModel . AddInPackages [ 0 ] . IsExternallyReferenced , Is . True , "1st AddIn must be 'externally referenced'" ) ;
Assert . That ( viewModel . AddInPackages [ 1 ] . IsExternallyReferenced , Is . False , "2nd AddIn must not be 'externally referenced'" ) ;
}
[Test]
public void ShowInstalledNuGetAddIns ( )
{
CreateAddIns ( ) ;
_ addIn1 . Enabled = true ;
// Create a fake package
FakePackage fakePackage = new FakePackage ( )
{
Id = _ addIn1 . Manifest . PrimaryIdentity ,
Version = new SemanticVersion ( _ addIn1 . Version ) ,
Tags = SharpDevelopAddInTag
} ;
_ addIn1 . Properties . Set ( ManagedAddIn . NuGetPackageIDManifestAttribute , fakePackage . Id ) ;
_ addIn1 . Properties . Set ( ManagedAddIn . NuGetPackageVersionManifestAttribute , fakePackage . Version . ToString ( ) ) ;
// Empty list of NuGet repositories
_ services . FakeRepositories . RegisteredPackageSources = new List < PackageSource > ( ) ;
_ services . FakeRepositories . RegisteredPackageRepositories = new List < IPackageRepository > ( ) ;
FakeCorePackageRepository localRepository = new FakeCorePackageRepository ( ) ;
_ services . FakeNuGet . FakeCorePackageManager . LocalRepository = localRepository ;
localRepository . ReturnedPackages = ( new IPackage [ ] { fakePackage } ) . AsQueryable ( ) ;
// Simulate list of AddIns
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn1 ) ;
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn2 ) ;
var viewModel = new InstalledAddInsViewModel ( _ 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 . Manifest . PrimaryIdentity ) , "Primary identity of 1st AddIn" ) ;
Assert . That ( firstAddIn . Name , Is . EqualTo ( _ addIn1 . Name ) , "Name of 1st AddIn" ) ;
Assert . That ( firstAddIn . Version , Is . EqualTo ( _ addIn1 . Version ) , "Version of 1st AddIn" ) ;
Assert . That ( firstAddIn . IsInstalled , Is . True , "1st AddIn must be 'installed''" ) ;
Assert . That ( firstAddIn . IsOffline , Is . True , "1st AddIn must be 'offline'" ) ;
Assert . That ( firstAddIn . IsEnabled , Is . True , "1st AddIn must be 'enabled'" ) ;
Assert . That ( firstAddIn . IsUpdate , Is . False , "1st AddIn must not 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 . True , "1st AddIn must have 'NuGet connection'" ) ;
}
[Test]
public void ShowNuGetAddInMarkedForInstallation ( )
{
CreateAddIns ( ) ;
_ addIn1 . Enabled = true ;
// Create a fake package
FakePackage fakePackage = new FakePackage ( )
{
Id = _ addIn1 . Manifest . PrimaryIdentity ,
Version = new SemanticVersion ( _ addIn1 . Version ) ,
Tags = SharpDevelopAddInTag
} ;
_ addIn1 . Properties . Set ( ManagedAddIn . NuGetPackageIDManifestAttribute , fakePackage . Id ) ;
_ addIn1 . Properties . Set ( ManagedAddIn . NuGetPackageVersionManifestAttribute , fakePackage . Version . ToString ( ) ) ;
// Empty list of NuGet repositories
_ services . FakeRepositories . RegisteredPackageSources = new List < PackageSource > ( ) ;
_ services . FakeRepositories . RegisteredPackageRepositories = new List < IPackageRepository > ( ) ;
FakeCorePackageRepository localRepository = new FakeCorePackageRepository ( ) ;
_ services . FakeNuGet . FakeCorePackageManager . LocalRepository = localRepository ;
localRepository . ReturnedPackages = ( new IPackage [ ] { fakePackage } ) . AsQueryable ( ) ;
// Simulate list of AddIns
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn1 ) ;
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn2 ) ;
// Simulate marked AddIn (usually set up by AddInSetup service)
_ services . FakeSetup . AddInsMarkedForInstallList . Add (
new ManagedAddIn ( _ addIn1 )
{
IsTemporary = true ,
InstallationSource = AddInInstallationSource . NuGetRepository
}
) ;
var viewModel = new InstalledAddInsViewModel ( _ 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 . Manifest . PrimaryIdentity ) , "Primary identity of 1st AddIn" ) ;
Assert . That ( firstAddIn . Name , Is . EqualTo ( _ addIn1 . Name ) , "Name of 1st AddIn" ) ;
Assert . That ( firstAddIn . Version , Is . EqualTo ( _ addIn1 . Version ) , "Version of 1st AddIn must be the one of the update" ) ;
Assert . That ( firstAddIn . IsInstalled , Is . True , "1st AddIn must be 'installed''" ) ;
Assert . That ( firstAddIn . IsOffline , Is . True , "1st AddIn must be 'offline'" ) ;
Assert . That ( firstAddIn . IsEnabled , Is . True , "1st AddIn must be 'enabled'" ) ;
Assert . That ( firstAddIn . IsUpdate , Is . False , "1st AddIn must not be 'update'" ) ;
Assert . That ( firstAddIn . IsAdded , Is . True , "1st AddIn must be 'added'" ) ; ;
Assert . That ( firstAddIn . IsRemoved , Is . False , "1st AddIn must not be 'removed'" ) ;
Assert . That ( firstAddIn . HasNuGetConnection , Is . True , "1st AddIn must have 'NuGet connection'" ) ;
}
[Test]
public void ShowNuGetAddInMarkedForUpdate ( )
{
CreateAddIns ( ) ;
_ addIn1 . Enabled = true ;
_ addIn1_new . Enabled = true ;
// Create a fake package
FakePackage fakePackage = new FakePackage ( )
{
Id = _ addIn1 . Manifest . PrimaryIdentity ,
Version = new SemanticVersion ( _ addIn1 . Version ) ,
Tags = SharpDevelopAddInTag
} ;
FakePackage fakePackage_new = new FakePackage ( )
{
Id = _ addIn1 . Manifest . PrimaryIdentity ,
Version = new SemanticVersion ( _ addIn1_new . Version ) ,
Tags = SharpDevelopAddInTag
} ;
_ addIn1 . Properties . Set ( ManagedAddIn . NuGetPackageIDManifestAttribute , fakePackage . Id ) ;
_ addIn1 . Properties . Set ( ManagedAddIn . NuGetPackageVersionManifestAttribute , fakePackage . Version . ToString ( ) ) ;
_ addIn1_new . Properties . Set ( ManagedAddIn . NuGetPackageIDManifestAttribute , fakePackage_new . Id ) ;
_ addIn1_new . Properties . Set ( ManagedAddIn . NuGetPackageVersionManifestAttribute , fakePackage_new . Version . ToString ( ) ) ;
// Empty list of NuGet repositories
_ services . FakeRepositories . RegisteredPackageSources = new List < PackageSource > ( ) ;
_ services . FakeRepositories . RegisteredPackageRepositories = new List < IPackageRepository > ( ) ;
FakeCorePackageRepository localRepository = new FakeCorePackageRepository ( ) ;
_ services . FakeNuGet . FakeCorePackageManager . LocalRepository = localRepository ;
localRepository . ReturnedPackages = ( new IPackage [ ] { fakePackage } ) . AsQueryable ( ) ;
// Simulate list of AddIns
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn1 ) ;
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn2 ) ;
// Simulate marked AddIn (usually set up by AddInSetup service)
_ services . FakeSetup . AddInsMarkedForInstallList . Add (
new ManagedAddIn ( _ addIn1_new )
{
IsUpdate = true ,
OldVersion = _ addIn1 . Version ,
InstallationSource = AddInInstallationSource . NuGetRepository ,
IsTemporary = true
}
) ;
var viewModel = new InstalledAddInsViewModel ( _ 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 . Manifest . PrimaryIdentity ) , "Primary identity of 1st AddIn" ) ;
Assert . That ( firstAddIn . Name , Is . EqualTo ( _ addIn1 . Name ) , "Name of 1st AddIn" ) ;
Assert . That ( firstAddIn . Version , Is . EqualTo ( _ addIn1_new . Version ) , "Version of 1st AddIn must be the one of the update" ) ;
Assert . That ( firstAddIn . IsInstalled , Is . True , "1st AddIn must be 'installed''" ) ;
Assert . That ( firstAddIn . IsOffline , Is . True , "1st AddIn must 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 . True , "1st AddIn must be 'added'" ) ;
Assert . That ( firstAddIn . IsRemoved , Is . False , "1st AddIn must not be 'removed'" ) ;
Assert . That ( firstAddIn . HasNuGetConnection , Is . True , "1st AddIn must have 'NuGet connection'" ) ;
}
[Test]
public void ShowNuGetAddInMarkedForUninstallation ( )
{
CreateAddIns ( ) ;
_ addIn1 . Enabled = true ;
_ addIn1 . Action = AddInAction . Uninstall ;
// Create a fake package
FakePackage fakePackage = new FakePackage ( )
{
Id = _ addIn1 . Manifest . PrimaryIdentity ,
Version = new SemanticVersion ( _ addIn1 . Version ) ,
Tags = SharpDevelopAddInTag
} ;
_ addIn1 . Properties . Set ( ManagedAddIn . NuGetPackageIDManifestAttribute , fakePackage . Id ) ;
_ addIn1 . Properties . Set ( ManagedAddIn . NuGetPackageVersionManifestAttribute , fakePackage . Version . ToString ( ) ) ;
// Empty list of NuGet repositories
_ services . FakeRepositories . RegisteredPackageSources = new List < PackageSource > ( ) ;
_ services . FakeRepositories . RegisteredPackageRepositories = new List < IPackageRepository > ( ) ;
FakeCorePackageRepository localRepository = new FakeCorePackageRepository ( ) ;
_ services . FakeNuGet . FakeCorePackageManager . LocalRepository = localRepository ;
localRepository . ReturnedPackages = ( new IPackage [ ] { fakePackage } ) . AsQueryable ( ) ;
// Simulate list of AddIns
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn1 ) ;
_ services . FakeSDAddInManagement . RegisteredAddIns . Add ( _ addIn2 ) ;
var viewModel = new InstalledAddInsViewModel ( _ 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 . Manifest . PrimaryIdentity ) , "Primary identity of 1st AddIn" ) ;
Assert . That ( firstAddIn . Name , Is . EqualTo ( _ addIn1 . Name ) , "Name of 1st AddIn" ) ;
Assert . That ( firstAddIn . Version , Is . EqualTo ( _ addIn1 . Version ) , "Version of 1st AddIn must be the one of the update" ) ;
Assert . That ( firstAddIn . IsInstalled , Is . True , "1st AddIn must be 'installed''" ) ;
Assert . That ( firstAddIn . IsOffline , Is . True , "1st AddIn must be 'offline'" ) ;
Assert . That ( firstAddIn . IsEnabled , Is . True , "1st AddIn must be 'enabled'" ) ;
Assert . That ( firstAddIn . IsUpdate , Is . False , "1st AddIn must not be 'update'" ) ;
Assert . That ( firstAddIn . IsAdded , Is . False , "1st AddIn must not be 'added'" ) ; ;
Assert . That ( firstAddIn . IsRemoved , Is . True , "1st AddIn must be 'removed'" ) ;
Assert . That ( firstAddIn . HasNuGetConnection , Is . True , "1st AddIn must have 'NuGet connection'" ) ;
}
}
}