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