diff --git a/src/GuiRunner/TestCentric.Gui.Tests/Presenters/Main/CommandTests.cs b/src/GuiRunner/TestCentric.Gui.Tests/Presenters/Main/CommandTests.cs index d9f929ce2..7a69a61b7 100644 --- a/src/GuiRunner/TestCentric.Gui.Tests/Presenters/Main/CommandTests.cs +++ b/src/GuiRunner/TestCentric.Gui.Tests/Presenters/Main/CommandTests.cs @@ -11,6 +11,8 @@ namespace TestCentric.Gui.Presenters.Main { + using System.Runtime.InteropServices; + using System.Runtime.InteropServices.ComTypes; using Elements; using Model; using NUnit.Common; @@ -95,6 +97,17 @@ public void OpenTestCentricProjectCommand_NoFileSelected_DoesNotCreateProject(st _model.DidNotReceiveWithAnyArgs().OpenExistingProject(null); } + [Test] + public void OpenTestCentricProjectCommand_ThrowsException_ErrorMessage_IsDisplayed() + { + _view.DialogManager.GetFileOpenPath(null, null).ReturnsForAnyArgs("Test.dll"); + _model.When(m => m.OpenExistingProject("Test.dll")).Do(x => throw new IOException("Disk error")); + + _view.OpenTestCentricProjectCommand.Execute += Raise.Event(); + + _view.MessageDisplay.Received().Error(Arg.Any()); + } + [Test] public void OpenTestCentricProjectCommand_IsEnabled() { diff --git a/src/GuiRunner/TestCentric.Gui/Presenters/TestCentricPresenter.cs b/src/GuiRunner/TestCentric.Gui/Presenters/TestCentricPresenter.cs index 7a04d320d..b328c2586 100644 --- a/src/GuiRunner/TestCentric.Gui/Presenters/TestCentricPresenter.cs +++ b/src/GuiRunner/TestCentric.Gui/Presenters/TestCentricPresenter.cs @@ -589,8 +589,16 @@ private void OpenTestCentricProject() var filter = "TestCentric Projects (*.tcproj)|*.tcproj"; string file = _view.DialogManager.GetFileOpenPath("Existing Project", filter); - if (!string.IsNullOrEmpty(file)) - _model.OpenExistingProject(file); + + try + { + if (!string.IsNullOrEmpty(file)) + _model.OpenExistingProject(file); + } + catch (Exception exception) + { + _view.MessageDisplay.Error("Unable to open project\n\n" + MessageBuilder.FromException(exception)); + } } private void OpenTestAssembly()