Index: Core/Common/src/Core.Common.Gui/Helpers/ExportHelper.cs =================================================================== diff -u -rdbe36eff2b631d29bac3c1d2a360d58a236cbfc3 -r3318b4ee38520ce9232d5514736d071b32e1f9b2 --- Core/Common/src/Core.Common.Gui/Helpers/ExportHelper.cs (.../ExportHelper.cs) (revision dbe36eff2b631d29bac3c1d2a360d58a236cbfc3) +++ Core/Common/src/Core.Common.Gui/Helpers/ExportHelper.cs (.../ExportHelper.cs) (revision 3318b4ee38520ce9232d5514736d071b32e1f9b2) @@ -30,5 +30,22 @@ return inquiryHelper.GetTargetFileLocation(fileFilterGenerator.Filter, null); } + + /// + /// Gets the folder path to export to. + /// + /// Helper responsible for performing information inquiries. + /// A path to a folder, or null if no location was chosen. + /// Thrown when + /// is null. + public static string GetFolderPath(IInquiryHelper inquiryHelper) + { + if (inquiryHelper == null) + { + throw new ArgumentNullException(nameof(inquiryHelper)); + } + + return inquiryHelper.GetTargetFolderLocation(); + } } } \ No newline at end of file Index: Core/Common/test/Core.Common.Gui.Test/Helpers/ExportHelperTest.cs =================================================================== diff -u -rdbe36eff2b631d29bac3c1d2a360d58a236cbfc3 -r3318b4ee38520ce9232d5514736d071b32e1f9b2 --- Core/Common/test/Core.Common.Gui.Test/Helpers/ExportHelperTest.cs (.../ExportHelperTest.cs) (revision dbe36eff2b631d29bac3c1d2a360d58a236cbfc3) +++ Core/Common/test/Core.Common.Gui.Test/Helpers/ExportHelperTest.cs (.../ExportHelperTest.cs) (revision 3318b4ee38520ce9232d5514736d071b32e1f9b2) @@ -58,5 +58,36 @@ Assert.AreEqual(expectedFilePath, filePath); mocks.VerifyAll(); } + + [Test] + public void GetFolderPath_InquiryHelperNull_ThrowsArgumentNullException() + { + // Call + void Call() => ExportHelper.GetFolderPath(null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("inquiryHelper", exception.ParamName); + } + + [Test] + [TestCase(null)] + [TestCase("C:/test")] + public void GetFolderPath_Always_ReturnsSelectedFolderPath(string expectedFilePath) + { + // Setup + var mocks = new MockRepository(); + var inquiryHelper = mocks.StrictMock(); + inquiryHelper.Expect(ih => ih.GetTargetFolderLocation()) + .Return(expectedFilePath); + mocks.ReplayAll(); + + // Call + string filePath = ExportHelper.GetFolderPath(inquiryHelper); + + // Assert + Assert.AreEqual(expectedFilePath, filePath); + mocks.VerifyAll(); + } } } \ No newline at end of file