diff --git a/README.md b/README.md index 5463cd8..dd8e0a7 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Use [Vortex](https://github.com/equilaterus/Vortex) side-by-side with **AutoMapp using Equilaterus.Vortex.AutoMapper.Extensions; ... -// Returns IMaybe +// Returns Maybe var maybeResult = IMapper.MaybeMap(sourceEntity); ``` diff --git a/appveyor.yml b/appveyor.yml index 44fe9c6..2012f95 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,13 +1,13 @@ -version: 0.1.0.{build} +version: 0.1.1.{build} image: Visual Studio 2019 dotnet_csproj: patch: true file: '**\*.csproj' - version: '0.1.0' - package_version: '0.1.0-alpha' - assembly_version: '0.1.0' - file_version: '0.1.0' - informational_version: '0.1.0' + version: '0.1.1' + package_version: '0.1.1-alpha' + assembly_version: '0.1.1' + file_version: '0.1.1' + informational_version: '0.1.1' before_build: - cmd: nuget restore build: diff --git a/src/MapperExtensions.cs b/src/MapperExtensions.cs index 4f54143..d22674a 100644 --- a/src/MapperExtensions.cs +++ b/src/MapperExtensions.cs @@ -14,10 +14,34 @@ public static Maybe MaybeMap( return new Maybe(mapper.Map(source)); } + public static Maybe MaybeMap( + this IMapper mapper, object source, Action opts) + { + return new Maybe(mapper.Map(source, opts)); + } + + public static Maybe MaybeMap( + this IMapper mapper, TSource source) + { + return new Maybe(mapper.Map(source)); + } + + public static Maybe MaybeMap( + this IMapper mapper, TSource source, Action> opts) + { + return new Maybe(mapper.Map(source, opts)); + } + public static Maybe MaybeMap( this IMapper mapper, TSource source, TDestination destination) { return new Maybe(mapper.Map(source, destination)); } + + public static Maybe MaybeMap( + this IMapper mapper, TSource source, TDestination destination, Action> opts) + { + return new Maybe(mapper.Map(source, destination, opts)); + } } } diff --git a/test/MapperExtensions.Test.cs b/test/MapperExtensions.Test.cs index c945c9e..69db7db 100644 --- a/test/MapperExtensions.Test.cs +++ b/test/MapperExtensions.Test.cs @@ -13,13 +13,15 @@ public class MapperExtensions [Fact] public void MaybeMap_Success() { + // Prepare var mapperMock = new Mock(); mapperMock.Setup(x => x.Map(1)) .Returns(1.2); - var objectMock = mapperMock.Object; - var result = objectMock.MaybeMap(1); + // Execute + var result = mapperMock.Object.MaybeMap(1); + // Verify Assert.IsType>(result); Assert.Equal(1.2, result.Match(x => x, 0)); } @@ -27,25 +29,111 @@ public void MaybeMap_Success() [Fact] public void MaybeMap_Null_ThrowsException() { + // Prepare var mapperMock = new Mock(); - mapperMock.Setup(x => x.Map(It.IsAny())) + mapperMock.Setup(x => x.Map(null)) .Returns(null); - var objectMock = mapperMock.Object; + // Execute + Assert.Throws(() => mapperMock.Object.MaybeMap(null)); + } + + [Fact] + public void MaybeMapOpts_Success() + { + // Prepare + var mapperMock = new Mock(); + mapperMock.Setup(x => x.Map(1, null)) + .Returns(1.2); + + // Execute + var result = mapperMock.Object.MaybeMap(1, null); + + // Verify + Assert.IsType>(result); + Assert.Equal(1.2, result.Match(x => x, 0)); + } + + [Fact] + public void MaybeMapOpts_Null_ThrowsException() + { + // Prepare + var mapperMock = new Mock(); + mapperMock.Setup(x => x.Map(null, null)) + .Returns(null); + + // Execute + Assert.Throws(() => mapperMock.Object.MaybeMap(null, null)); + } + + [Fact] + public void MaybeMapDestination_Success() + { + // Prepare + var mapperMock = new Mock(); + mapperMock.Setup(x => x.Map(1)) + .Returns(1.2); + + // Execute + var result = mapperMock.Object.MaybeMap(1); + + // Verify + Assert.IsType>(result); + Assert.Equal(1.2, result.Match(x => x, 0)); + } + + [Fact] + public void MaybeMapDestination_Null_ThrowsException() + { + // Prepare + var mapperMock = new Mock(); + mapperMock.Setup(x => x.Map(null)) + .Returns(null); - Assert.Throws(() => objectMock.MaybeMap(new object())); + // Execute + Assert.Throws(() => mapperMock.Object.MaybeMap(null)); + } + + [Fact] + public void MaybeMapDestinationOpt_Success() + { + // Prepare + var mapperMock = new Mock(); + mapperMock.Setup(x => x.Map(1, null)) + .Returns(1.2); + + // Execute + var result = mapperMock.Object.MaybeMap(1, null); + + // Verify + Assert.IsType>(result); + Assert.Equal(1.2, result.Match(x => x, 0)); + } + + [Fact] + public void MaybeMapDestinationOpt_Null_ThrowsException() + { + // Prepare + var mapperMock = new Mock(); + mapperMock.Setup(x => x.Map(null, null)) + .Returns(null); + + // Execute + Assert.Throws(() => mapperMock.Object.MaybeMap(null, null)); } [Fact] public void MaybeMap_SourceDestination_Success() { + // Prepare var mapperMock = new Mock(); - mapperMock.Setup(x => x.Map(It.IsAny(), It.IsAny())) + mapperMock.Setup(x => x.Map("1", 0.2)) .Returns(1.2); - var objectMock = mapperMock.Object; - var result = objectMock.MaybeMap(new object(), new double()); + // Execute + var result = mapperMock.Object.MaybeMap("1", 0.2); + // Verify Assert.IsType>(result); Assert.Equal(1.2, result.Match(x => x, 0)); } @@ -53,13 +141,41 @@ public void MaybeMap_SourceDestination_Success() [Fact] public void MaybeMap_SourceDestination_Null_ThrowsException() { + // Prepare var mapperMock = new Mock(); - mapperMock.Setup(x => x.Map(It.IsAny(), It.IsAny())) + mapperMock.Setup(x => x.Map(null, null)) .Returns(null); + + // Execute + Assert.Throws(() => mapperMock.Object.MaybeMap(null, new object())); + } + + [Fact] + public void MaybeMapOpt_SourceDestination_Success() + { + // Prepare + var mapperMock = new Mock(); + mapperMock.Setup(x => x.Map("1", 0.2, null)) + .Returns(1.2); + + // Execute + var result = mapperMock.Object.MaybeMap("1", 0.2, null); - var objectMock = mapperMock.Object; + // Verify + Assert.IsType>(result); + Assert.Equal(1.2, result.Match(x => x, 0)); + } + + [Fact] + public void MaybeMapOpt_SourceDestination_Null_ThrowsException() + { + // Prepare + var mapperMock = new Mock(); + mapperMock.Setup(x => x.Map(null, null, null)) + .Returns(null); - Assert.Throws(() => objectMock.MaybeMap(new object(), new object())); + // Execute + Assert.Throws(() => mapperMock.Object.MaybeMap(null, new object(), null)); } } }