public UpdatePackageAction CreateUpdatePackageAction()
        {
            var action = new FakeUpdatePackageAction(this);

            FakeUpdatePackageActionsCreated.Add(action);
            return(action);
        }
		void CreateViewModel()
		{
			viewModel = new TestableUpdatedPackageViewModel();
			fakeSolution = viewModel.FakeSolution;
			fakeProject = fakeSolution.FakeActiveProject;
			updatePackageAction = fakeProject.FakeUpdatePackageAction;
			fakeActionRunner = viewModel.FakeActionRunner;
		}
		void CreateCmdletWithoutActiveProject()
		{
			cmdlet = new TestableUpdatePackageCmdlet();
			fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
			fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
			fakeProject = fakeConsoleHost.FakeProject;
			fakeUpdatePackageAction = fakeProject.FakeUpdatePackageAction;
		}
		public FakePackageManagementProject()
		{
			FakeInstallPackageAction = new FakeInstallPackageAction(this);
			FakeUninstallPackageAction = new FakeUninstallPackageAction(this);
			FakeUpdatePackageAction = new FakeUpdatePackageAction(this);
			
			Name = "Test";
		}
		FakeUpdatePackageAction CreateFakeUpdateAction()
		{
			fakeUpdateAction = new FakeUpdatePackageAction(project);
			return fakeUpdateAction;
		}
		FakeUpdatePackageAction CreateUpdateActionWhenUpdatingPackageInAllProjects(string packageId)
		{
			var action = new FakeUpdatePackageAction(fakeProject);
			action.PackageId = packageId;
			fakeUpdateActionsFactory.FakeUpdatePackageInAllProjects.FakeActions.Add(action);
			return action;
		}
		void CreateUpdateActionWhenUpdatingAllPackagesInProject(string packageId)
		{
			var action = new FakeUpdatePackageAction(fakeProject);
			action.PackageId = packageId;
			fakeUpdateActionsFactory.FakeUpdateAllPackagesInProject.FakeActions.Add(action);
		}
		public UpdatePackageAction CreateUpdatePackageAction()
		{
			var action = new FakeUpdatePackageAction(this);
			FakeUpdatePackageActionsCreated.Add(action);
			return action;
		}
		FakePackage UpdatePackageWithNoPackageOperations(bool updateDependencies, bool allowPrereleaseVersions)
		{
			FakePackage package = CreateFakePackage();
			var updateAction = new FakeUpdatePackageAction();
			updateAction.Operations = new List<PackageOperation>();
			updateAction.UpdateDependencies = updateDependencies;
			updateAction.AllowPrereleaseVersions = allowPrereleaseVersions;
			packageManager.UpdatePackage(package, updateAction);
			return package;			
		}
		FakePackage UpdatePackageWithPackageOperations(PackageOperation operation)
		{
			var operations = new PackageOperation[] {
				operation
			};
			FakePackage package = CreateFakePackage();
			var updateAction = new FakeUpdatePackageAction();
			updateAction.Operations = operations;
			updateAction.UpdateDependencies = true;
			packageManager.UpdatePackage(package, updateAction);
			return package;
		}
		FakePackage UpdatePackageWithNoPackageOperations()
		{
			FakePackage package = CreateFakePackage();
			var updateAction = new FakeUpdatePackageAction();
			updateAction.Operations = new List<PackageOperation>();
			updateAction.UpdateDependencies = true;
			packageManager.UpdatePackage(package, updateAction);
			return package;
		}
		public void UpdatePackage_OldPackageReferenceIsRemovedOnUpdatingButAnotherProjectStillReferencesThePackage_OldPackageIsNotUninstalled()
		{
			CreatePackageManager();
			var fakeProjectManager = MockRepository.GenerateStub<ISharpDevelopProjectManager>();
			packageManager.ProjectManager = fakeProjectManager;
			FakePackage installedPackage = fakeSolutionSharedRepository.AddFakePackageWithVersion("MyPackage-Core", "1.0");
			FakePackage updatedPackage = fakeFeedSourceRepository.AddFakePackageWithVersion("MyPackage", "1.1");
			var eventArgs = new PackageOperationEventArgs(installedPackage, null, null);
			RaisePackageRemovedEventWhenPackageReferenceUpdated(fakeProjectManager, updatedPackage, eventArgs);
			var updateAction = new FakeUpdatePackageAction {
				Operations = new List<PackageOperation>(),
				UpdateDependencies = false
			};
			fakeSolutionSharedRepository.PackageIdsReferences.Add("MyPackage-Core");
			
			packageManager.UpdatePackage(updatedPackage, updateAction);
			
			Assert.IsTrue(fakeSolutionSharedRepository.FakePackages.Contains(installedPackage));
		}
		public void UpdatePackage_TwoOldPackageReferencesAreRemovedOnUpdating_BothOldPackagesAreUninstalled()
		{
			CreatePackageManager();
			var fakeProjectManager = MockRepository.GenerateStub<ISharpDevelopProjectManager>();
			packageManager.ProjectManager = fakeProjectManager;
			FakePackage installedPackage1 = fakeSolutionSharedRepository.AddFakePackageWithVersion("MyPackage-Core", "1.0");
			FakePackage installedPackage2 = fakeSolutionSharedRepository.AddFakePackageWithVersion("MyPackage", "1.0");
			FakePackage updatedPackage = fakeFeedSourceRepository.AddFakePackageWithVersion("MyPackage", "1.1");
			var eventArgs1 = new PackageOperationEventArgs(installedPackage1, null, null);
			var eventArgs2 = new PackageOperationEventArgs(installedPackage2, null, null);
			RaisePackageRemovedEventWhenPackageReferenceUpdated(fakeProjectManager, updatedPackage, eventArgs1, eventArgs2);
			var updateAction = new FakeUpdatePackageAction {
				Operations = new List<PackageOperation>(),
				UpdateDependencies = false
			};
			
			packageManager.UpdatePackage(updatedPackage, updateAction);
			
			Assert.IsFalse(fakeSolutionSharedRepository.FakePackages.Contains(installedPackage2));
			Assert.IsFalse(fakeSolutionSharedRepository.FakePackages.Contains(installedPackage1));
		}