1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using ICSharpCode.PackageManagement.Design;
6
using ICSharpCode.PackageManagement.Scripting;
9
using PackageManagement.Tests.Helpers;
11
namespace PackageManagement.Tests.Scripting
14
public class PackageInitializationScriptsTests
16
PackageInitializationScripts scripts;
17
FakePackageScriptFactory fakeScriptFactory;
18
FakeSolutionPackageRepository fakeSolutionPackageRepository;
19
FakePackageScriptSession fakeSession;
20
FakePackageScriptFactoryWithPredefinedPackageScripts fakeScriptFactoryWithPredefinedPackageScripts;
24
fakeScriptFactory = new FakePackageScriptFactory();
25
CreateScripts(fakeScriptFactory);
28
void CreateScripts(IPackageScriptFactory scriptFactory)
30
fakeSolutionPackageRepository = new FakeSolutionPackageRepository();
31
fakeSession = new FakePackageScriptSession();
32
scripts = new PackageInitializationScripts(fakeSolutionPackageRepository, scriptFactory);
35
FakePackage AddPackageToRepository(string packageId)
37
var package = new FakePackage(packageId);
38
fakeSolutionPackageRepository.FakePackages.Add(package);
42
void CreateScriptsUsingScriptFactoryWithPredefinedScripts()
44
fakeScriptFactoryWithPredefinedPackageScripts = new FakePackageScriptFactoryWithPredefinedPackageScripts();
45
CreateScripts(fakeScriptFactoryWithPredefinedPackageScripts);
48
void CreateScriptsWithTwoPackagesInRepositoryAndLastPackageScriptFileExistsButNotFirst()
50
CreateScriptsUsingScriptFactoryWithPredefinedScripts();
51
AddPackageToRepository("A");
52
AddPackageToRepository("B");
54
var scriptForPackageA = fakeScriptFactoryWithPredefinedPackageScripts.AddFakeInitializationScript();
55
scriptForPackageA.ExistsReturnValue = false;
57
var scriptForPackageB = fakeScriptFactoryWithPredefinedPackageScripts.AddFakeInitializationScript();
58
scriptForPackageB.ExistsReturnValue = true;
62
public void Run_OnePackageInRepository_OnePackageScriptIsRun()
65
AddPackageToRepository("Test");
66
scripts.Run(fakeSession);
68
IPackageScriptSession session = fakeScriptFactory.FirstPackageInitializeScriptCreated.SessionPassedToRun;
69
FakePackageScriptSession expectedSession = fakeSession;
71
Assert.AreEqual(expectedSession, session);
75
public void Run_OnePackageInRepository_PackageInitScriptCreatedForPackage()
78
AddPackageToRepository("Test");
79
string expectedDirectory = @"d:\projects\myproject\packages\Test.1.0";
80
fakeSolutionPackageRepository.InstallPathToReturn = expectedDirectory;
82
scripts.Run(fakeSession);
84
string actualDirectory = fakeScriptFactory.FirstPackageInstallDirectoryPassed;
86
Assert.AreEqual(expectedDirectory, actualDirectory);
90
public void Run_OnePackageInRepository_PackageUsedToDetermineInstallPath()
93
FakePackage package = AddPackageToRepository("Test");
94
scripts.Run(fakeSession);
96
IPackage actualPackage = fakeSolutionPackageRepository.PackagePassedToGetInstallPath;
98
Assert.AreEqual(package, actualPackage);
102
public void Run_TwoPackagesInRepository_SecondScriptIsRun()
105
AddPackageToRepository("A");
106
AddPackageToRepository("B");
107
scripts.Run(fakeSession);
109
IPackageScriptSession session = fakeScriptFactory.FakePackageInitializeScriptsCreated[1].SessionPassedToRun;
110
FakePackageScriptSession expectedSession = fakeSession;
112
Assert.AreEqual(expectedSession, session);
116
public void Any_OnePackageInRepositoryAndScriptFileExists_ReturnsTrue()
119
AddPackageToRepository("A");
120
fakeScriptFactory.ScriptFileExistsReturnValue = true;
122
bool result = scripts.Any();
124
Assert.IsTrue(result);
128
public void Any_OnePackageInRepositoryAndScriptFileDoesNotExist_ReturnsFalse()
131
AddPackageToRepository("A");
132
fakeScriptFactory.ScriptFileExistsReturnValue = false;
134
bool result = scripts.Any();
136
Assert.IsFalse(result);
140
public void Any_TwoPackagesInRepositoryAndLastPackageScriptFileExistsButNotFirst_ReturnsTrue()
142
CreateScriptsWithTwoPackagesInRepositoryAndLastPackageScriptFileExistsButNotFirst();
144
bool result = scripts.Any();
146
Assert.IsTrue(result);
150
public void Run_TwoPackagesInRepositoryAndLastPackageScriptFileExistsButNotFirst_FirstScriptNotRun()
152
CreateScriptsWithTwoPackagesInRepositoryAndLastPackageScriptFileExistsButNotFirst();
153
FakePackageScript firstScript = fakeScriptFactoryWithPredefinedPackageScripts.FakeInitializeScripts[0];
154
scripts.Run(fakeSession);
156
bool run = firstScript.IsRun;
162
public void Run_OnePackageInRepository_PackageScriptSetsPackageInSession()
165
FakePackage expectedPackage = AddPackageToRepository("Test");
166
scripts.Run(fakeSession);
168
var package = fakeScriptFactory.FirstPackageInitializeScriptCreated.Package;
170
Assert.AreEqual(expectedPackage, package);