Index: Core/Common/src/Core.Common.Base/Data/IProjectFactory.cs
===================================================================
diff -u -r3d088548dfdebfd5c3adbbd67075b42e134f5c03 -rc4125b3012678bd098090e0a1dbb5b099fbe2d3d
--- Core/Common/src/Core.Common.Base/Data/IProjectFactory.cs (.../IProjectFactory.cs) (revision 3d088548dfdebfd5c3adbbd67075b42e134f5c03)
+++ Core/Common/src/Core.Common.Base/Data/IProjectFactory.cs (.../IProjectFactory.cs) (revision c4125b3012678bd098090e0a1dbb5b099fbe2d3d)
@@ -19,6 +19,8 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
+
namespace Core.Common.Base.Data
{
///
@@ -29,7 +31,9 @@
///
/// Creates a new instance of .
///
+ /// The func to perform
+ /// after the project is created.
/// An empty object.
- IProject CreateNewProject();
+ IProject CreateNewProject(Func onCreateNewProjectFunc);
}
}
\ No newline at end of file
Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerProjectFactory.cs
===================================================================
diff -u -r711926831e7b9fe24d536b184db5e5a4294c899a -rc4125b3012678bd098090e0a1dbb5b099fbe2d3d
--- Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerProjectFactory.cs (.../RiskeerProjectFactory.cs) (revision 711926831e7b9fe24d536b184db5e5a4294c899a)
+++ Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerProjectFactory.cs (.../RiskeerProjectFactory.cs) (revision c4125b3012678bd098090e0a1dbb5b099fbe2d3d)
@@ -19,8 +19,8 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
using Core.Common.Base.Data;
-using Riskeer.Common.Data.AssessmentSection;
using Riskeer.Integration.Data;
namespace Riskeer.Integration.Plugin
@@ -30,13 +30,30 @@
///
public class RiskeerProjectFactory : IProjectFactory
{
- public IProject CreateNewProject()
+ ///
+ /// A ; or null when there
+ /// is no .
+ /// Thrown when
+ /// is null .
+ public IProject CreateNewProject(Func onCreateNewProjectFunc)
{
+ if (onCreateNewProjectFunc == null)
+ {
+ throw new ArgumentNullException(nameof(onCreateNewProjectFunc));
+ }
+
+ var assessmentSection = (AssessmentSection) onCreateNewProjectFunc();
+
+ if (assessmentSection == null)
+ {
+ return null;
+ }
+
return new RiskeerProject
{
AssessmentSections =
{
- new AssessmentSection(AssessmentSectionComposition.Dike)
+ assessmentSection
}
};
}
Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/RiskeerProjectFactoryTest.cs
===================================================================
diff -u -r711926831e7b9fe24d536b184db5e5a4294c899a -rc4125b3012678bd098090e0a1dbb5b099fbe2d3d
--- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/RiskeerProjectFactoryTest.cs (.../RiskeerProjectFactoryTest.cs) (revision 711926831e7b9fe24d536b184db5e5a4294c899a)
+++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/RiskeerProjectFactoryTest.cs (.../RiskeerProjectFactoryTest.cs) (revision c4125b3012678bd098090e0a1dbb5b099fbe2d3d)
@@ -19,8 +19,10 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
using Core.Common.Base.Data;
using NUnit.Framework;
+using Riskeer.Common.Data.AssessmentSection;
using Riskeer.Integration.Data;
namespace Riskeer.Integration.Plugin.Test
@@ -29,16 +31,64 @@
public class RiskeerProjectFactoryTest
{
[Test]
- public void CreateNewProject_ReturnsNewRiskeerProject()
+ public void CreateNewProject_OnCreateNewProjectFuncNull_ThrowsArgumentNullException()
{
// Setup
var projectFactory = new RiskeerProjectFactory();
// Call
- IProject result = projectFactory.CreateNewProject();
+ void Call() => projectFactory.CreateNewProject(null);
// Assert
- Assert.IsInstanceOf(result);
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("onCreateNewProjectFunc", exception.ParamName);
}
+
+ [Test]
+ public void CreateNewProject_WithOnCreateNewProjectFuncReturnAssessmentSection_ReturnsNewRiskeerProject()
+ {
+ // Setup
+ var projectFactory = new RiskeerProjectFactory();
+ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
+
+ // Call
+ IProject project = projectFactory.CreateNewProject(() => assessmentSection);
+
+ // Assert
+ Assert.IsInstanceOf(project);
+ var riskeerProject = (RiskeerProject) project;
+ CollectionAssert.AreEqual(new[]
+ {
+ assessmentSection
+ }, riskeerProject.AssessmentSections);
+ }
+
+ [Test]
+ public void CreateNewProject_WithOnCreateNewProjectFuncReturnNull_ReturnsNull()
+ {
+ // Setup
+ var projectFactory = new RiskeerProjectFactory();
+
+ // Call
+ IProject project = projectFactory.CreateNewProject(() => null);
+
+ // Assert
+ Assert.IsNull(project);
+ }
+
+ [Test]
+ public void CreateNewProject_WithOnCreateNewProjectFuncThrowsException_ThrowsException()
+ {
+ // Setup
+ var projectFactory = new RiskeerProjectFactory();
+ const string expectedMessage = "Exception message test";
+
+ // Call
+ void Call() => projectFactory.CreateNewProject(() => throw new Exception(expectedMessage));
+
+ // Assert
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual(expectedMessage, exception.Message);
+ }
}
}
\ No newline at end of file