Index: Core/Common/src/Core.Common.Gui/Helpers/ExportHelper.cs =================================================================== diff -u -r72adc6d5e71074b410d658446f75e52b53cedf85 -rdbe36eff2b631d29bac3c1d2a360d58a236cbfc3 --- Core/Common/src/Core.Common.Gui/Helpers/ExportHelper.cs (.../ExportHelper.cs) (revision 72adc6d5e71074b410d658446f75e52b53cedf85) +++ Core/Common/src/Core.Common.Gui/Helpers/ExportHelper.cs (.../ExportHelper.cs) (revision dbe36eff2b631d29bac3c1d2a360d58a236cbfc3) @@ -1,9 +1,34 @@ -namespace Core.Common.Gui.Helpers +using System; +using Core.Common.Util; + +namespace Core.Common.Gui.Helpers { /// /// Class with helper methods that can be used during export. /// public static class ExportHelper { + /// + /// Gets the file path to export to. + /// + /// Helper responsible for performing information inquiries. + /// The file filter generator to use. + /// A path to a file, which may or may not exist yet, or null if no location + /// was chosen. + /// Thrown when any parameter is null. + public static string GetFilePath(IInquiryHelper inquiryHelper, FileFilterGenerator fileFilterGenerator) + { + if (inquiryHelper == null) + { + throw new ArgumentNullException(nameof(inquiryHelper)); + } + + if (fileFilterGenerator == null) + { + throw new ArgumentNullException(nameof(fileFilterGenerator)); + } + + return inquiryHelper.GetTargetFileLocation(fileFilterGenerator.Filter, null); + } } } \ No newline at end of file Index: Core/Common/test/Core.Common.Gui.Test/Helpers/ExportHelperTest.cs =================================================================== diff -u -r72adc6d5e71074b410d658446f75e52b53cedf85 -rdbe36eff2b631d29bac3c1d2a360d58a236cbfc3 --- Core/Common/test/Core.Common.Gui.Test/Helpers/ExportHelperTest.cs (.../ExportHelperTest.cs) (revision 72adc6d5e71074b410d658446f75e52b53cedf85) +++ Core/Common/test/Core.Common.Gui.Test/Helpers/ExportHelperTest.cs (.../ExportHelperTest.cs) (revision dbe36eff2b631d29bac3c1d2a360d58a236cbfc3) @@ -1,10 +1,62 @@ -using NUnit.Framework; +using System; +using Core.Common.Gui.Helpers; +using Core.Common.Util; +using NUnit.Framework; +using Rhino.Mocks; namespace Core.Common.Gui.Test.Helpers { [TestFixture] public class ExportHelperTest { - + [Test] + public void GetFilePath_InquiryHelperNull_ThrowsArgumentNullException() + { + // Call + void Call() => ExportHelper.GetFilePath(null, new FileFilterGenerator()); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("inquiryHelper", exception.ParamName); + } + + [Test] + public void GetFilePath_FileFilterGeneratorNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var inquiryHelper = mocks.Stub(); + mocks.ReplayAll(); + + // Call + void Call() => ExportHelper.GetFilePath(inquiryHelper, null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("fileFilterGenerator", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + [TestCase(null)] + [TestCase("C:/test")] + public void GetFilePath_Always_ReturnsSelectedFilePath (string expectedFilePath) + { + // Setup + var fileFilterGenerator = new FileFilterGenerator("testExtension", "testDescription"); + + var mocks = new MockRepository(); + var inquiryHelper = mocks.StrictMock(); + inquiryHelper.Expect(ih => ih.GetTargetFileLocation(fileFilterGenerator.Filter, null)) + .Return(expectedFilePath); + mocks.ReplayAll(); + + // Call + string filePath = ExportHelper.GetFilePath(inquiryHelper, fileFilterGenerator); + + // Assert + Assert.AreEqual(expectedFilePath, filePath); + mocks.VerifyAll(); + } } } \ No newline at end of file