Fisheye: Tag a579d6982ec96896c932625563b3b953173c7565 refers to a dead (removed) revision in file `Ringtoets/Integration/src/Ringtoets.Integration.Service/Merge/AssessmentSectionProviderService.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Integration/src/Ringtoets.Integration.Service/Merge/LoadAssessmentSectionService.cs =================================================================== diff -u --- Ringtoets/Integration/src/Ringtoets.Integration.Service/Merge/LoadAssessmentSectionService.cs (revision 0) +++ Ringtoets/Integration/src/Ringtoets.Integration.Service/Merge/LoadAssessmentSectionService.cs (revision a579d6982ec96896c932625563b3b953173c7565) @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using Core.Common.Base.Storage; +using log4net; +using Ringtoets.Integration.Data; +using Ringtoets.Integration.Service.Exceptions; + +namespace Ringtoets.Integration.Service.Merge +{ + /// + /// Service which provides a from a file. + /// + public class LoadAssessmentSectionService : IAssessmentSectionProvider + { + private readonly ILog log = LogManager.GetLogger(typeof(LoadAssessmentSectionService)); + private readonly IStoreProject storage; + + /// + /// Creates a new instance of + /// + /// Class responsible to storing and loading the application project. + /// Thrown when is null. + public LoadAssessmentSectionService(IStoreProject projectStorage) + { + if (projectStorage == null) + { + throw new ArgumentNullException(nameof(projectStorage)); + } + + storage = projectStorage; + } + + public IEnumerable GetAssessmentSections(string filePath) + { + RingtoetsProject openedProject; + try + { + openedProject = (RingtoetsProject) storage.LoadProject(filePath); + } + catch (StorageException e) + { + string exceptionMessage = e.Message; + log.Error(exceptionMessage, e.InnerException); + + throw new AssessmentSectionProviderException(exceptionMessage, e); + } + + if (openedProject == null) + { + throw new AssessmentSectionProviderException(); + } + + return openedProject.AssessmentSections; + } + } +} \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Service/Ringtoets.Integration.Service.csproj =================================================================== diff -u -rd753b388a8ad3b2daee5ccbf12cb0ae418b05e07 -ra579d6982ec96896c932625563b3b953173c7565 --- Ringtoets/Integration/src/Ringtoets.Integration.Service/Ringtoets.Integration.Service.csproj (.../Ringtoets.Integration.Service.csproj) (revision d753b388a8ad3b2daee5ccbf12cb0ae418b05e07) +++ Ringtoets/Integration/src/Ringtoets.Integration.Service/Ringtoets.Integration.Service.csproj (.../Ringtoets.Integration.Service.csproj) (revision a579d6982ec96896c932625563b3b953173c7565) @@ -20,7 +20,7 @@ - + Fisheye: Tag a579d6982ec96896c932625563b3b953173c7565 refers to a dead (removed) revision in file `Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/Merge/AssessmentSectionProviderServiceTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/Merge/LoadAssessmentSectionServiceTest.cs =================================================================== diff -u --- Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/Merge/LoadAssessmentSectionServiceTest.cs (revision 0) +++ Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/Merge/LoadAssessmentSectionServiceTest.cs (revision a579d6982ec96896c932625563b3b953173c7565) @@ -0,0 +1,146 @@ +using System; +using System.Collections.Generic; +using Core.Common.Base.Storage; +using Core.Common.TestUtil; +using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Integration.Data; +using Ringtoets.Integration.Service.Exceptions; +using Ringtoets.Integration.Service.Merge; + +namespace Ringtoets.Integration.Service.Test.Merge +{ + [TestFixture] + public class LoadAssessmentSectionServiceTest + { + [Test] + public void Constructor_ProjectStorageNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => new LoadAssessmentSectionService(null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("projectStorage", exception.ParamName); + } + + [Test] + public void Constructor_ExpectedValues() + { + // Setup + var mocks = new MockRepository(); + var storeProject = mocks.Stub(); + mocks.ReplayAll(); + + // Call + var provider = new LoadAssessmentSectionService(storeProject); + + // Assert + Assert.IsInstanceOf(provider); + mocks.VerifyAll(); + } + + [Test] + public void GetAssessmentSections_Always_SendsFilePathToLoadsProject() + { + // Setup + const string filePath = "Some path"; + + var mocks = new MockRepository(); + var storeProject = mocks.StrictMock(); + storeProject.Expect(sp => sp.LoadProject(filePath)).Return(new RingtoetsProject()); + mocks.ReplayAll(); + + var provider = new LoadAssessmentSectionService(storeProject); + + // Call + provider.GetAssessmentSections(filePath); + + // Assert + mocks.VerifyAll(); + } + + [Test] + public void GetAssessmentSections_LoadingProjectSuccesful_ReturnsRingtoetsProject() + { + // Setup + var project = new RingtoetsProject(); + + var mocks = new MockRepository(); + var storeProject = mocks.StrictMock(); + storeProject.Expect(sp => sp.LoadProject(null)) + .IgnoreArguments() + .Return(project); + mocks.ReplayAll(); + + var provider = new LoadAssessmentSectionService(storeProject); + + // Call + IEnumerable assessmentSections = provider.GetAssessmentSections(string.Empty); + + // Assert + Assert.AreSame(project.AssessmentSections, assessmentSections); + mocks.VerifyAll(); + } + + [Test] + public void GetAssessmentSections_LoadedProjectNull_ThrowsAssessmentSectionProviderException() + { + // Setup + var mocks = new MockRepository(); + var storeProject = mocks.StrictMock(); + storeProject.Expect(sp => sp.LoadProject(null)) + .IgnoreArguments() + .Return(null); + mocks.ReplayAll(); + + var provider = new LoadAssessmentSectionService(storeProject); + + // Call + TestDelegate call = () => provider.GetAssessmentSections(string.Empty); + + // Assert + Assert.Throws(call); + mocks.VerifyAll(); + } + + [Test] + public void GetAssessmentSections_LoadingProjectThrowsException_ThrowsAssessmentSectionProviderExceptionAndLogsError() + { + // Setup + const string exceptionMessage = "StorageException"; + var storageException = new StorageException(exceptionMessage); + + var mocks = new MockRepository(); + var storeProject = mocks.StrictMock(); + storeProject.Expect(sp => sp.LoadProject(null)) + .IgnoreArguments() + .Throw(storageException); + mocks.ReplayAll(); + + var provider = new LoadAssessmentSectionService(storeProject); + + AssessmentSectionProviderException exception = null; + + // Call + Action call = () => + { + try + { + provider.GetAssessmentSections(string.Empty); + } + catch (AssessmentSectionProviderException e) + { + exception = e; + } + }; + + // Assert + var expectedLogMessage = new Tuple(exceptionMessage, LogLevelConstant.Error); + TestHelper.AssertLogMessageWithLevelIsGenerated(call, expectedLogMessage); + Assert.AreEqual(storageException, exception.InnerException); + Assert.AreEqual(storageException.Message, exception.Message); + mocks.VerifyAll(); + } + } +} \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/Ringtoets.Integration.Service.Test.csproj =================================================================== diff -u -rd753b388a8ad3b2daee5ccbf12cb0ae418b05e07 -ra579d6982ec96896c932625563b3b953173c7565 --- Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/Ringtoets.Integration.Service.Test.csproj (.../Ringtoets.Integration.Service.Test.csproj) (revision d753b388a8ad3b2daee5ccbf12cb0ae418b05e07) +++ Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/Ringtoets.Integration.Service.Test.csproj (.../Ringtoets.Integration.Service.Test.csproj) (revision a579d6982ec96896c932625563b3b953173c7565) @@ -22,7 +22,7 @@ - +