Browse Source

Package operation log messages are now raised as package management events.

pull/15/head
Matt Ward 14 years ago
parent
commit
c6ff8a7ad1
  1. 4
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 28
      src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceCommand.cs
  3. 8
      src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceView.xaml.cs
  4. 1
      src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs
  5. 4
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
  6. 12
      src/AddIns/Misc/PackageManagement/Project/Src/IAddPackageReferenceView.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementEvents.cs
  8. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
  9. 10
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementEvents.cs
  10. 23
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementLogger.cs
  11. 15
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs
  12. 21
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
  13. 8
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs
  14. 31
      src/AddIns/Misc/PackageManagement/Project/Src/PackageOperationMessage.cs
  15. 21
      src/AddIns/Misc/PackageManagement/Project/Src/PackageOperationMessageLoggedEventArgs.cs
  16. 13
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  17. 5
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs
  18. 2
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  19. 5
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
  20. 3
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
  21. 5
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  22. 51
      src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceCommandTests.cs
  23. 8
      src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs
  24. 26
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeAddPackageReferenceView.cs
  25. 10
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementEvents.cs
  26. 3
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageViewModelFactory.cs
  27. 32
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableAddPackageReferenceCommand.cs
  28. 9
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs
  29. 3
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
  30. 47
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementEventsTests.cs
  31. 47
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementLoggerTests.cs
  32. 14
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs
  33. 5
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
  34. 50
      src/AddIns/Misc/PackageManagement/Test/Src/PackageOperationMessageTests.cs
  35. 20
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
  36. 7
      src/AddIns/Misc/PackageManagement/Test/Src/ProcessPackageActionTests.cs

4
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -67,9 +67,13 @@ @@ -67,9 +67,13 @@
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Src\AcceptLicensesEventArgs.cs" />
<Compile Include="Src\AddPackageReferenceCommand.cs" />
<Compile Include="Src\IAddPackageReferenceView.cs" />
<Compile Include="Src\IPackageManagementEvents.cs" />
<Compile Include="Src\PackageManagementEvents.cs" />
<Compile Include="Src\PackageManagementLogger.cs" />
<Compile Include="Src\PackageOperationExceptionEventArgs.cs" />
<Compile Include="Src\PackageOperationMessage.cs" />
<Compile Include="Src\PackageOperationMessageLoggedEventArgs.cs" />
<Compile Include="Src\ParentPackageOperationEventArgs.cs" />
<Compile Include="Src\ProjectBrowserRefresher.cs" />
<Compile Include="Src\RegisteredPackageRepositories.cs" />

28
src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceCommand.cs

@ -10,14 +10,32 @@ namespace ICSharpCode.PackageManagement @@ -10,14 +10,32 @@ namespace ICSharpCode.PackageManagement
{
public class AddPackageReferenceCommand : AbstractMenuCommand
{
IPackageManagementOutputMessagesView outputMessagesView;
public AddPackageReferenceCommand()
: this(PackageManagementServices.OutputMessagesView)
{
}
public AddPackageReferenceCommand(IPackageManagementOutputMessagesView outputMessagesView)
{
this.outputMessagesView = outputMessagesView;
}
public override void Run()
{
var view = new AddPackageReferenceView();
view.Owner = WorkbenchSingleton.MainWindow;
view.ShowDialog();
outputMessagesView.Clear();
var viewModel = view.MainPanel.DataContext as AddPackageReferenceViewModel;
viewModel.Dispose();
using (IAddPackageReferenceView view = CreateAddPackageReferenceView()) {
view.ShowDialog();
}
}
protected virtual IAddPackageReferenceView CreateAddPackageReferenceView()
{
return new AddPackageReferenceView() {
Owner = WorkbenchSingleton.MainWindow
};
}
}
}

8
src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceView.xaml.cs

@ -6,11 +6,17 @@ using System.Windows; @@ -6,11 +6,17 @@ using System.Windows;
namespace ICSharpCode.PackageManagement
{
public partial class AddPackageReferenceView : Window
public partial class AddPackageReferenceView : Window, IAddPackageReferenceView
{
public AddPackageReferenceView()
{
InitializeComponent();
}
public void Dispose()
{
var viewModel = MainPanel.DataContext as AddPackageReferenceViewModel;
viewModel.Dispose();
}
}
}

1
src/AddIns/Misc/PackageManagement/Project/Src/AddPackageReferenceViewModel.cs

@ -24,7 +24,6 @@ namespace ICSharpCode.PackageManagement @@ -24,7 +24,6 @@ namespace ICSharpCode.PackageManagement
ITaskFactory taskFactory)
{
this.packageManagementService = packageManagementService;
this.packageManagementService.OutputMessagesView.Clear();
this.packageManagementEvents = packageManagementEvents;
this.licenseAcceptanceService = licenseAcceptanceService;

4
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs

@ -46,10 +46,6 @@ namespace ICSharpCode.PackageManagement.Design @@ -46,10 +46,6 @@ namespace ICSharpCode.PackageManagement.Design
public FakePackageManagementOutputMessagesView FakeOutputMessagesView = new FakePackageManagementOutputMessagesView();
public IPackageManagementOutputMessagesView OutputMessagesView {
get { return FakeOutputMessagesView; }
}
public FakeProjectManager FakeProjectManagerToReturnFromCreateProjectManager = new FakeProjectManager();
public IPackageRepository PackageRepositoryPassedToCreateProjectManager;
public MSBuildBasedProject ProjectPassedToCreateProjectManager;

12
src/AddIns/Misc/PackageManagement/Project/Src/IAddPackageReferenceView.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement
{
public interface IAddPackageReferenceView : IDisposable
{
bool? ShowDialog();
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementEvents.cs

@ -14,11 +14,13 @@ namespace ICSharpCode.PackageManagement @@ -14,11 +14,13 @@ namespace ICSharpCode.PackageManagement
event EventHandler<PackageOperationExceptionEventArgs> PackageOperationError;
event EventHandler<ParentPackageOperationEventArgs> ParentPackageInstalled;
event EventHandler<ParentPackageOperationEventArgs> ParentPackageUninstalled;
event EventHandler<PackageOperationMessageLoggedEventArgs> PackageOperationMessageLogged;
void OnPackageOperationsStarting();
void OnPackageOperationError(Exception ex);
bool OnAcceptLicenses(IEnumerable<IPackage> packages);
void OnParentPackageInstalled(IPackage package);
void OnParentPackageUninstalled(IPackage package);
void OnPackageOperationMessageLogged(MessageLevel level, string message, params object[] args);
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs

@ -20,7 +20,5 @@ namespace ICSharpCode.PackageManagement @@ -20,7 +20,5 @@ namespace ICSharpCode.PackageManagement
InstallPackageAction CreateInstallPackageAction();
UninstallPackageAction CreateUninstallPackageAction();
UpdatePackageAction CreateUpdatePackageAction();
IPackageManagementOutputMessagesView OutputMessagesView { get; }
}
}

10
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementEvents.cs

@ -56,5 +56,15 @@ namespace ICSharpCode.PackageManagement @@ -56,5 +56,15 @@ namespace ICSharpCode.PackageManagement
ParentPackageUninstalled(this, new ParentPackageOperationEventArgs(package));
}
}
public event EventHandler<PackageOperationMessageLoggedEventArgs> PackageOperationMessageLogged;
public void OnPackageOperationMessageLogged(MessageLevel level, string message, params object[] args)
{
if (PackageOperationMessageLogged != null) {
var eventArgs = new PackageOperationMessageLoggedEventArgs(level, message, args);
PackageOperationMessageLogged(this, eventArgs);
}
}
}
}

23
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementLogger.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class PackageManagementLogger : ILogger
{
IPackageManagementEvents packageManagementEvents;
public PackageManagementLogger(IPackageManagementEvents packageManagementEvents)
{
this.packageManagementEvents = packageManagementEvents;
}
public void Log(MessageLevel level, string message, params object[] args)
{
packageManagementEvents.OnPackageOperationMessageLogged(level, message, args);
}
}
}

15
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOutputMessagesView.cs

@ -12,14 +12,17 @@ namespace ICSharpCode.PackageManagement @@ -12,14 +12,17 @@ namespace ICSharpCode.PackageManagement
IMessageViewCategory messageViewCategory;
public PackageManagementOutputMessagesView()
: this(new PackageManagementCompilerMessageView())
public PackageManagementOutputMessagesView(IPackageManagementEvents packageManagementEvents)
: this(new PackageManagementCompilerMessageView(), packageManagementEvents)
{
}
public PackageManagementOutputMessagesView(ICompilerMessageView compilerMessageView)
public PackageManagementOutputMessagesView(
ICompilerMessageView compilerMessageView,
IPackageManagementEvents packageManagementEvents)
{
CreatePackageManagementMessageCategoryIfNoneExists(compilerMessageView);
packageManagementEvents.PackageOperationMessageLogged += PackageOperationMessageLogged;
}
void CreatePackageManagementMessageCategoryIfNoneExists(ICompilerMessageView compilerMessageView)
@ -35,6 +38,12 @@ namespace ICSharpCode.PackageManagement @@ -35,6 +38,12 @@ namespace ICSharpCode.PackageManagement
messageViewCategory = compilerMessageView.Create(CategoryName, "Packages");
}
void PackageOperationMessageLogged(object sender, PackageOperationMessageLoggedEventArgs e)
{
string formattedMessage = e.Message.ToString();
messageViewCategory.AppendLine(formattedMessage);
}
public void Clear()
{
messageViewCategory.Clear();

21
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs

@ -12,7 +12,6 @@ namespace ICSharpCode.PackageManagement @@ -12,7 +12,6 @@ namespace ICSharpCode.PackageManagement
{
public class PackageManagementService : IPackageManagementService
{
IPackageManagementOutputMessagesView outputMessagesView;
IRegisteredPackageRepositories registeredPackageRepositories;
IPackageManagerFactory packageManagerFactory;
IPackageManagementProjectService projectService;
@ -23,26 +22,24 @@ namespace ICSharpCode.PackageManagement @@ -23,26 +22,24 @@ namespace ICSharpCode.PackageManagement
IPackageRepositoryCache packageRepositoryCache,
IPackageManagerFactory packageManagerFactory,
IPackageManagementEvents packageManagementEvents,
IPackageManagementProjectService projectService,
IPackageManagementOutputMessagesView outputMessagesView)
IPackageManagementProjectService projectService)
: this(
new RegisteredPackageRepositories(packageRepositoryCache, options),
packageManagerFactory,
packageManagementEvents,
projectService,
outputMessagesView)
projectService)
{
}
public PackageManagementService(
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageManagementEvents packageManagementEvents)
IPackageManagementEvents packageManagementEvents,
IPackageManagementOutputMessagesView outputMessagesView)
: this(
registeredPackageRepositories,
new SharpDevelopPackageManagerFactory(),
packageManagementEvents,
new PackageManagementProjectService(),
new PackageManagementOutputMessagesView())
new PackageManagementProjectService())
{
}
@ -50,18 +47,12 @@ namespace ICSharpCode.PackageManagement @@ -50,18 +47,12 @@ namespace ICSharpCode.PackageManagement
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageManagerFactory packageManagerFactory,
IPackageManagementEvents packageManagementEvents,
IPackageManagementProjectService projectService,
IPackageManagementOutputMessagesView outputMessagesView)
IPackageManagementProjectService projectService)
{
this.registeredPackageRepositories = registeredPackageRepositories;
this.packageManagementEvents = packageManagementEvents;
this.packageManagerFactory = packageManagerFactory;
this.projectService = projectService;
this.outputMessagesView = outputMessagesView;
}
public IPackageManagementOutputMessagesView OutputMessagesView {
get { return outputMessagesView; }
}
IPackageRepository ActivePackageRepository {

8
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs

@ -15,12 +15,14 @@ namespace ICSharpCode.PackageManagement @@ -15,12 +15,14 @@ namespace ICSharpCode.PackageManagement
static readonly PackageManagementEvents packageManagementEvents = new PackageManagementEvents();
static readonly PackageManagementProjectService projectService = new PackageManagementProjectService();
static readonly ProjectBrowserRefresher projectBrowserRefresher;
static readonly PackageManagementOutputMessagesView outputMessagesView;
static PackageManagementServices()
{
options = new PackageManagementOptions();
registeredPackageRepositories = new RegisteredPackageRepositories(options);
packageManagementService = new PackageManagementService(registeredPackageRepositories, packageManagementEvents);
outputMessagesView = new PackageManagementOutputMessagesView(packageManagementEvents);
packageManagementService = new PackageManagementService(registeredPackageRepositories, packageManagementEvents, outputMessagesView);
projectBrowserRefresher = new ProjectBrowserRefresher(projectService, packageManagementEvents);
}
@ -43,5 +45,9 @@ namespace ICSharpCode.PackageManagement @@ -43,5 +45,9 @@ namespace ICSharpCode.PackageManagement
public static IPackageManagementEvents PackageManagementEvents {
get { return packageManagementEvents; }
}
public static IPackageManagementOutputMessagesView OutputMessagesView {
get { return outputMessagesView; }
}
}
}

31
src/AddIns/Misc/PackageManagement/Project/Src/PackageOperationMessage.cs

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class PackageOperationMessage
{
string message;
object[] args;
public PackageOperationMessage(
MessageLevel level,
string message,
params object[] args)
{
this.Level = level;
this.message = message;
this.args = args;
}
public MessageLevel Level { get; private set; }
public override string ToString()
{
return String.Format(message, args);
}
}
}

21
src/AddIns/Misc/PackageManagement/Project/Src/PackageOperationMessageLoggedEventArgs.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class PackageOperationMessageLoggedEventArgs : EventArgs
{
public PackageOperationMessageLoggedEventArgs(
MessageLevel level,
string message,
params object[] args)
{
this.Message = new PackageOperationMessage(level, message, args);
}
public PackageOperationMessage Message { get; private set; }
}
}

13
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

@ -20,17 +20,20 @@ namespace ICSharpCode.PackageManagement @@ -20,17 +20,20 @@ namespace ICSharpCode.PackageManagement
IEnumerable<PackageOperation> packageOperations = new PackageOperation[0];
IPackageRepository sourceRepository;
bool? hasDependencies;
ILogger logger;
public PackageViewModel(
IPackage package,
IPackageRepository sourceRepository,
IPackageManagementService packageManagementService,
IPackageManagementEvents packageManagementEvents)
IPackageManagementEvents packageManagementEvents,
ILogger logger)
{
this.package = package;
this.sourceRepository = sourceRepository;
this.packageManagementService = packageManagementService;
this.packageManagementEvents = packageManagementEvents;
this.logger = logger;
CreateCommands();
}
@ -167,7 +170,7 @@ namespace ICSharpCode.PackageManagement @@ -167,7 +170,7 @@ namespace ICSharpCode.PackageManagement
void Log(string message)
{
Logger.Log(MessageLevel.Info, message);
logger.Log(MessageLevel.Info, message);
}
string GetFormattedStartPackageOperationMessage(string format)
@ -181,10 +184,6 @@ namespace ICSharpCode.PackageManagement @@ -181,10 +184,6 @@ namespace ICSharpCode.PackageManagement
return String.Format("------- {0} -------", message);
}
ILogger Logger {
get { return packageManagementService.OutputMessagesView; }
}
protected virtual string AddingPackageMessageFormat {
get { return "Installing...{0}"; }
}
@ -215,7 +214,7 @@ namespace ICSharpCode.PackageManagement @@ -215,7 +214,7 @@ namespace ICSharpCode.PackageManagement
ISharpDevelopPackageManager CreatePackageManagerForActiveProject()
{
ISharpDevelopPackageManager packageManager = packageManagementService.CreatePackageManagerForActiveProject();
packageManager.Logger = Logger;
packageManager.Logger = logger;
return packageManager;
}

5
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs

@ -24,6 +24,7 @@ namespace ICSharpCode.PackageManagement @@ -24,6 +24,7 @@ namespace ICSharpCode.PackageManagement
this.RegisteredPackageRepositories = registeredPackageRepositories;
this.PackageManagementService = packageManagementService;
this.PackageManagementEvents = packageManagementEvents;
this.Logger = new PackageManagementLogger(packageManagementEvents);
}
public virtual PackageViewModel CreatePackageViewModel(IPackage package)
@ -32,11 +33,13 @@ namespace ICSharpCode.PackageManagement @@ -32,11 +33,13 @@ namespace ICSharpCode.PackageManagement
package,
RegisteredPackageRepositories.ActiveRepository,
PackageManagementService,
PackageManagementEvents);
PackageManagementEvents,
Logger);
}
public IRegisteredPackageRepositories RegisteredPackageRepositories { get; private set; }
public IPackageManagementService PackageManagementService { get; private set; }
public IPackageManagementEvents PackageManagementEvents { get; private set; }
public ILogger Logger { get; private set; }
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.PackageManagement @@ -60,7 +60,7 @@ namespace ICSharpCode.PackageManagement
void GetLoggerIfMissing()
{
if (Logger == null) {
Logger = packageManagementService.OutputMessagesView;
Logger = new PackageManagementLogger(packageManagementEvents);
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs

@ -15,8 +15,9 @@ namespace ICSharpCode.PackageManagement @@ -15,8 +15,9 @@ namespace ICSharpCode.PackageManagement
IPackage package,
IPackageRepository sourceRepository,
IPackageManagementService packageManagementService,
IPackageManagementEvents packageManagementEvents)
: base(package, sourceRepository, packageManagementService, packageManagementEvents)
IPackageManagementEvents packageManagementEvents,
ILogger logger)
: base(package, sourceRepository, packageManagementService, packageManagementEvents, logger)
{
this.packageManagementService = packageManagementService;
}

3
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs

@ -19,7 +19,8 @@ namespace ICSharpCode.PackageManagement @@ -19,7 +19,8 @@ namespace ICSharpCode.PackageManagement
package,
RegisteredPackageRepositories.ActiveRepository,
PackageManagementService,
PackageManagementEvents);
PackageManagementEvents,
Logger);
}
}
}

5
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -69,10 +69,15 @@ @@ -69,10 +69,15 @@
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\AddPackageReferenceCommandTests.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingRegisteredPackageRepositories.cs" />
<Compile Include="Src\Helpers\FakeAddPackageReferenceView.cs" />
<Compile Include="Src\Helpers\FakePackageManagementEvents.cs" />
<Compile Include="Src\Helpers\FakePackageViewModelFactory.cs" />
<Compile Include="Src\Helpers\TestableAddPackageReferenceCommand.cs" />
<Compile Include="Src\PackageManagementEventsTests.cs" />
<Compile Include="Src\PackageManagementLoggerTests.cs" />
<Compile Include="Src\PackageOperationMessageTests.cs" />
<Compile Include="Src\ProjectBrowserRefresherTests.cs" />
<Compile Include="Src\RegisteredPackageRepositoriesTests.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingPackageManagementService.cs" />

51
src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceCommandTests.cs

@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests
{
[TestFixture]
public class AddPackageReferenceCommandTests
{
TestableAddPackageReferenceCommand command;
FakeAddPackageReferenceView view;
void CreateCommand()
{
command = new TestableAddPackageReferenceCommand();
view = command.FakeAddPackageReferenceView;
}
[Test]
public void Run_CommandExecuted_AddPackageReferenceViewIsDisplayed()
{
CreateCommand();
command.Run();
Assert.IsTrue(view.IsShowDialogCalled);
}
[Test]
public void Run_CommandExecuted_AddPackageReferenceViewIsDisposed()
{
CreateCommand();
command.Run();
Assert.IsTrue(view.IsDisposeCalled);
}
[Test]
public void Run_CommandExecuted_OutputMessagesViewIsCleared()
{
CreateCommand();
command.Run();
bool result = command.FakeOutputMessagesView.IsClearCalled;
Assert.IsTrue(result);
}
}
}

8
src/AddIns/Misc/PackageManagement/Test/Src/AddPackageReferenceViewModelTests.cs

@ -142,14 +142,6 @@ namespace PackageManagement.Tests @@ -142,14 +142,6 @@ namespace PackageManagement.Tests
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.UpdatedPackagesViewModel.PackageViewModels);
}
[Test]
public void Constructor_InstanceCreated_OutputMessagesCleared()
{
CreateViewModel();
Assert.IsTrue(fakePackageManagementService.FakeOutputMessagesView.IsClearCalled);
}
[Test]
public void RecentPackagesViewModel_RecentRepositoryHasOnePackage_HasOnePackageViewModel()
{

26
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeAddPackageReferenceView.cs

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
namespace PackageManagement.Tests.Helpers
{
public class FakeAddPackageReferenceView : IAddPackageReferenceView
{
public bool IsShowDialogCalled;
public bool? ShowDialog()
{
IsShowDialogCalled = true;
return true;
}
public bool IsDisposeCalled;
public void Dispose()
{
IsDisposeCalled = true;
}
}
}

10
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementEvents.cs

@ -16,6 +16,7 @@ namespace PackageManagement.Tests.Helpers @@ -16,6 +16,7 @@ namespace PackageManagement.Tests.Helpers
public event EventHandler<PackageOperationExceptionEventArgs> PackageOperationError;
public event EventHandler<ParentPackageOperationEventArgs> ParentPackageInstalled;
public event EventHandler<ParentPackageOperationEventArgs> ParentPackageUninstalled;
public event EventHandler<PackageOperationMessageLoggedEventArgs> PackageOperationMessageLogged;
#pragma warning restore 0067
public bool IsOnPackageOperationsStartingCalled;
@ -56,5 +57,14 @@ namespace PackageManagement.Tests.Helpers @@ -56,5 +57,14 @@ namespace PackageManagement.Tests.Helpers
{
PackagePassedToOnParentPackageUninstalled = package;
}
public MessageLevel MessageLevelPassedToOnPackageOperationMessageLogged;
public string FormattedStringPassedToOnPackageOperationMessageLogged;
public void OnPackageOperationMessageLogged(MessageLevel level, string message, params object[] args)
{
MessageLevelPassedToOnPackageOperationMessageLogged = level;
FormattedStringPassedToOnPackageOperationMessageLogged = String.Format(message, args);
}
}
}

3
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageViewModelFactory.cs

@ -20,7 +20,8 @@ namespace PackageManagement.Tests.Helpers @@ -20,7 +20,8 @@ namespace PackageManagement.Tests.Helpers
package,
FakeRegisteredPackageRepositories.FakeActiveRepository,
FakePackageManagementService,
FakePackageManagementEvents);
FakePackageManagementEvents,
FakePackageManagementService.FakeOutputMessagesView);
}
public IRegisteredPackageRepositories RegisteredPackageRepositories {

32
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableAddPackageReferenceCommand.cs

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
namespace PackageManagement.Tests.Helpers
{
public class TestableAddPackageReferenceCommand : AddPackageReferenceCommand
{
public FakePackageManagementOutputMessagesView FakeOutputMessagesView;
public FakeAddPackageReferenceView FakeAddPackageReferenceView = new FakeAddPackageReferenceView();
public TestableAddPackageReferenceCommand()
: this(new FakePackageManagementOutputMessagesView())
{
}
public TestableAddPackageReferenceCommand(FakePackageManagementOutputMessagesView view)
: base(view)
{
this.FakeOutputMessagesView = view;
}
protected override IAddPackageReferenceView CreateAddPackageReferenceView()
{
return FakeAddPackageReferenceView;
}
}
}

9
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs

@ -22,7 +22,8 @@ namespace PackageManagement.Tests.Helpers @@ -22,7 +22,8 @@ namespace PackageManagement.Tests.Helpers
new FakePackage(),
new FakePackageRepository(),
packageManagementService,
new FakePackageManagementEvents())
new FakePackageManagementEvents(),
packageManagementService.FakeOutputMessagesView)
{
}
@ -30,12 +31,14 @@ namespace PackageManagement.Tests.Helpers @@ -30,12 +31,14 @@ namespace PackageManagement.Tests.Helpers
FakePackage package,
FakePackageRepository sourceRepository,
FakePackageManagementService packageManagementService,
FakePackageManagementEvents packageManagementEvents)
FakePackageManagementEvents packageManagementEvents,
FakePackageManagementOutputMessagesView logger)
: base(
package,
sourceRepository,
packageManagementService,
packageManagementEvents)
packageManagementEvents,
logger)
{
this.FakePackage = package;
this.FakePackageManagementService = packageManagementService;

3
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs

@ -42,7 +42,8 @@ namespace PackageManagement.Tests.Helpers @@ -42,7 +42,8 @@ namespace PackageManagement.Tests.Helpers
package,
sourceRepository,
packageManagementService,
packageManagementEvents)
packageManagementEvents,
packageManagementService.FakeOutputMessagesView)
{
this.FakePackage = package;
this.FakePackageManagementService = packageManagementService;

47
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementEventsTests.cs

@ -216,5 +216,52 @@ namespace PackageManagement.Tests @@ -216,5 +216,52 @@ namespace PackageManagement.Tests
var package = new FakePackage("Test");
Assert.DoesNotThrow(() => events.OnParentPackageUninstalled(package));
}
[Test]
public void OnPackageOperationMessageLogged_OneEventSubscriber_SenderIsPackageManagementEvents()
{
CreateEvents();
object eventSender = null;
events.PackageOperationMessageLogged += (sender, e) => eventSender = sender;
events.OnPackageOperationMessageLogged(MessageLevel.Info, "Test");
Assert.AreEqual(events, eventSender);
}
[Test]
public void OnPackageOperationMessageLogged_NoEventSubscribers_NullReferenceExceptionIsNotThrown()
{
CreateEvents();
Assert.DoesNotThrow(() => events.OnPackageOperationMessageLogged(MessageLevel.Info, "Test"));
}
[Test]
public void OnPackageOperationMessageLogged_InfoMessageLoggedWithOneEventSubscriber_EventArgsHasInfoMessageLevel()
{
CreateEvents();
PackageOperationMessageLoggedEventArgs eventArgs = null;
events.PackageOperationMessageLogged += (sender, e) => eventArgs = e;
events.OnPackageOperationMessageLogged(MessageLevel.Info, "Test");
Assert.AreEqual(MessageLevel.Info, eventArgs.Message.Level);
}
[Test]
public void OnPackageOperationMessageLogged_FormattedInfoMessageLoggedWithOneEventSubscriber_EventArgsHasFormattedMessage()
{
CreateEvents();
PackageOperationMessageLoggedEventArgs eventArgs = null;
events.PackageOperationMessageLogged += (sender, e) => eventArgs = e;
string format = "Test {0}";
events.OnPackageOperationMessageLogged(MessageLevel.Info, format, "B");
string message = eventArgs.Message.ToString();
string expectedMessage = "Test B";
Assert.AreEqual(expectedMessage, message);
}
}
}

47
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementLoggerTests.cs

@ -0,0 +1,47 @@ @@ -0,0 +1,47 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests
{
[TestFixture]
public class PackageManagementLoggerTests
{
FakePackageManagementEvents fakePackageManagementEvents;
PackageManagementLogger logger;
void CreateLogger()
{
fakePackageManagementEvents = new FakePackageManagementEvents();
logger = new PackageManagementLogger(fakePackageManagementEvents);
}
[Test]
public void Log_WarningMessageLogged_RaisesMessageLoggedEventWithWarningMessageLevel()
{
CreateLogger();
logger.Log(MessageLevel.Warning, "test");
Assert.AreEqual(MessageLevel.Warning, fakePackageManagementEvents.MessageLevelPassedToOnPackageOperationMessageLogged);
}
[Test]
public void Log_FormattedInfoMessageLogged_RaisesMessageLoggedEventWithFormattedMessage()
{
CreateLogger();
string format = "Test {0}";
logger.Log(MessageLevel.Info, format, "C");
string message = fakePackageManagementEvents.FormattedStringPassedToOnPackageOperationMessageLogged;
Assert.AreEqual("Test C", message);
}
}
}

14
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOutputMessagesViewTests.cs

@ -15,6 +15,7 @@ namespace PackageManagement.Tests @@ -15,6 +15,7 @@ namespace PackageManagement.Tests
PackageManagementOutputMessagesView view;
FakeCompilerMessageView fakeCompilerMessageView;
FakeMessageCategoryView fakeMessageCategoryView;
PackageManagementEvents packageManagementEvents;
void CreateView()
{
@ -30,7 +31,8 @@ namespace PackageManagement.Tests @@ -30,7 +31,8 @@ namespace PackageManagement.Tests
void CreateView(FakeCompilerMessageView fakeCompilerMessageView)
{
view = new PackageManagementOutputMessagesView(fakeCompilerMessageView);
packageManagementEvents = new PackageManagementEvents();
view = new PackageManagementOutputMessagesView(fakeCompilerMessageView, packageManagementEvents);
}
void LogInfoMessage(string message)
@ -100,5 +102,15 @@ namespace PackageManagement.Tests @@ -100,5 +102,15 @@ namespace PackageManagement.Tests
Assert.AreEqual("Test 1", fakeMessageCategoryView.FirstLineAppended);
}
[Test]
public void OnPackageOperationMessageLogged_InfoMessageUsingFormatStringPassed_FullyFormattedStringAddedToMessageViewCategory()
{
CreateView();
packageManagementEvents.OnPackageOperationMessageLogged(MessageLevel.Info, "Test {0}", 1);
Assert.AreEqual("Test 1", fakeMessageCategoryView.FirstLineAppended);
}
}
}

5
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs

@ -23,7 +23,6 @@ namespace PackageManagement.Tests @@ -23,7 +23,6 @@ namespace PackageManagement.Tests
FakePackageManagerFactory fakePackageManagerFactory;
FakePackageManagementProjectService fakeProjectService;
TestableProject testProject;
FakePackageManagementOutputMessagesView fakeOutputMessagesView;
void CreatePackageSources()
{
@ -42,7 +41,6 @@ namespace PackageManagement.Tests @@ -42,7 +41,6 @@ namespace PackageManagement.Tests
fakeRegisteredPackageRepositories = new FakeRegisteredPackageRepositories();
fakePackageManagerFactory = new FakePackageManagerFactory();
fakeProjectService = new FakePackageManagementProjectService();
fakeOutputMessagesView = new FakePackageManagementOutputMessagesView();
var packageManagementEvents = new FakePackageManagementEvents();
fakeProjectService.CurrentProject = testProject;
@ -51,8 +49,7 @@ namespace PackageManagement.Tests @@ -51,8 +49,7 @@ namespace PackageManagement.Tests
fakeRegisteredPackageRepositories,
fakePackageManagerFactory,
packageManagementEvents,
fakeProjectService,
fakeOutputMessagesView);
fakeProjectService);
}
FakePackage AddOneFakePackageToPackageRepositoryFactoryRepository(string id)

50
src/AddIns/Misc/PackageManagement/Test/Src/PackageOperationMessageTests.cs

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using NuGet;
using NUnit.Framework;
namespace PackageManagement.Tests
{
[TestFixture]
public class PackageOperationMessageTests
{
[Test]
public void Level_CreateInfoMessage_CreatesMessageWithMessageLevelSetToInfo()
{
var message = new PackageOperationMessage(MessageLevel.Info, "test");
Assert.AreEqual(MessageLevel.Info, message.Level);
}
[Test]
public void Level_CreateWarningMessage_CreatesMessageWithMessageLevelSetToWarning()
{
var message = new PackageOperationMessage(MessageLevel.Warning, "test");
Assert.AreEqual(MessageLevel.Warning, message.Level);
}
[Test]
public void ToString_CreateWarningMessage_ReturnsMessage()
{
var message = new PackageOperationMessage(MessageLevel.Warning, "test");
var text = message.ToString();
Assert.AreEqual("test", text);
}
[Test]
public void ToString_CreateFormattedWarningMessage_ReturnsFormattedMessage()
{
string format = "Test '{0}'.";
var message = new PackageOperationMessage(MessageLevel.Warning, format, "A");
var text = message.ToString();
var expectedText = "Test 'A'.";
Assert.AreEqual(expectedText, text);
}
}
}

20
src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs

@ -21,6 +21,7 @@ namespace PackageManagement.Tests @@ -21,6 +21,7 @@ namespace PackageManagement.Tests
ExceptionThrowingPackageManagementService exceptionThrowingPackageManagementService;
FakeInstallPackageAction fakeInstallPackageTask;
FakeUninstallPackageAction fakeUninstallPackageAction;
FakePackageManagementOutputMessagesView fakeLogger;
void CreateViewModel()
{
@ -41,6 +42,7 @@ namespace PackageManagement.Tests @@ -41,6 +42,7 @@ namespace PackageManagement.Tests
this.packageManagementService = packageManagementService;
sourcePackageRepository = viewModel.FakeSourcePackageRepository;
packageManagementEvents = viewModel.FakePackageManagementEvents;
fakeLogger = packageManagementService.FakeOutputMessagesView;
fakeInstallPackageTask = packageManagementService.ActionToReturnFromCreateInstallPackageAction;
fakeUninstallPackageAction = packageManagementService.ActionToReturnFromCreateUninstallPackageAction;
}
@ -363,7 +365,7 @@ namespace PackageManagement.Tests @@ -363,7 +365,7 @@ namespace PackageManagement.Tests
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
viewModel.AddPackage();
ILogger expectedLogger = packageManagementService.FakeOutputMessagesView;
ILogger expectedLogger = fakeLogger;
ILogger actualLogger = packageManagementService
.FakePackageManagerToReturnFromCreatePackageManager
.Logger;
@ -381,7 +383,7 @@ namespace PackageManagement.Tests @@ -381,7 +383,7 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
string expectedMessage = "------- Updating...Test.Package 1.2.0.55 -------";
string actualMessage = packageManagementService.FakeOutputMessagesView.FirstFormattedMessageLogged;
string actualMessage = fakeLogger.FirstFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
@ -394,7 +396,7 @@ namespace PackageManagement.Tests @@ -394,7 +396,7 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
string expectedMessage = "==============================";
string actualMessage = packageManagementService.FakeOutputMessagesView.NextToLastFormattedMessageLogged;
string actualMessage = fakeLogger.NextToLastFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
@ -407,7 +409,7 @@ namespace PackageManagement.Tests @@ -407,7 +409,7 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
string expectedMessage = String.Empty;
string actualMessage = packageManagementService.FakeOutputMessagesView.LastFormattedMessageLogged;
string actualMessage = fakeLogger.LastFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
@ -423,7 +425,7 @@ namespace PackageManagement.Tests @@ -423,7 +425,7 @@ namespace PackageManagement.Tests
viewModel.RemovePackage();
string expectedMessage = "------- Removing...Test.Package 1.2.0.55 -------";
string actualMessage = packageManagementService.FakeOutputMessagesView.FirstFormattedMessageLogged;
string actualMessage = fakeLogger.FirstFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
@ -436,7 +438,7 @@ namespace PackageManagement.Tests @@ -436,7 +438,7 @@ namespace PackageManagement.Tests
viewModel.RemovePackage();
string expectedMessage = "==============================";
string actualMessage = packageManagementService.FakeOutputMessagesView.NextToLastFormattedMessageLogged;
string actualMessage = fakeLogger.NextToLastFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
@ -448,7 +450,7 @@ namespace PackageManagement.Tests @@ -448,7 +450,7 @@ namespace PackageManagement.Tests
viewModel.RemovePackage();
string expectedMessage = String.Empty;
string actualMessage = packageManagementService.FakeOutputMessagesView.LastFormattedMessageLogged;
string actualMessage = fakeLogger.LastFormattedMessageLogged;
Assert.AreEqual(expectedMessage, actualMessage);
}
@ -484,7 +486,7 @@ namespace PackageManagement.Tests @@ -484,7 +486,7 @@ namespace PackageManagement.Tests
exceptionThrowingPackageManagementService.ExeptionToThrowWhenCreateInstallPackageTaskCalled = ex;
viewModel.AddPackage();
string actualMessage = packageManagementService.FakeOutputMessagesView.SecondFormattedMessageLogged;
string actualMessage = fakeLogger.SecondFormattedMessageLogged;
bool containsExceptionErrorMessage = actualMessage.Contains("Exception error message");
Assert.IsTrue(containsExceptionErrorMessage, actualMessage);
@ -518,7 +520,7 @@ namespace PackageManagement.Tests @@ -518,7 +520,7 @@ namespace PackageManagement.Tests
exceptionThrowingPackageManagementService.ExeptionToThrowWhenCreateUninstallPackageActionCalled = ex;
viewModel.RemovePackage();
string actualMessage = packageManagementService.FakeOutputMessagesView.SecondFormattedMessageLogged;
string actualMessage = fakeLogger.SecondFormattedMessageLogged;
bool containsExceptionErrorMessage = actualMessage.Contains("Exception error message");
Assert.IsTrue(containsExceptionErrorMessage, actualMessage);

7
src/AddIns/Misc/PackageManagement/Test/Src/ProcessPackageActionTests.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
using NUnit.Framework;
@ -33,15 +34,15 @@ namespace PackageManagement.Tests @@ -33,15 +34,15 @@ namespace PackageManagement.Tests
}
[Test]
public void Execute_LoggerIsNull_LoggerUsedByPackageManagerIsOutputMessagesViewLogger()
public void Execute_LoggerIsNull_LoggerUsedByPackageManagerIsPackageManagementLogger()
{
CreateAction();
action.Execute();
ILogger expectedLogger = fakeOutputMessagesView;
ILogger actualLogger = fakePackageManager.Logger;
Type expectedType = typeof(PackageManagementLogger);
Assert.AreEqual(expectedLogger, actualLogger);
Assert.IsInstanceOf(expectedType, actualLogger);
}
[Test]

Loading…
Cancel
Save