From d37f5b2ed12d651fca2f634e5eaa045b5fae2817 Mon Sep 17 00:00:00 2001 From: Adam Patridge Date: Fri, 14 Jul 2017 23:37:01 -0600 Subject: [PATCH] Add unit tests. --- ...ArgumentOrEnvironmentVariableAliasTests.cs | 156 ++++++++++++++++++ .../Cake.ArgumentHelpers.Tests.csproj | 58 +++++++ Cake.ArgumentHelpers.Tests/packages.config | 8 + Cake.ArgumentHelpers.sln | 6 + 4 files changed, 228 insertions(+) create mode 100644 Cake.ArgumentHelpers.Tests/ArgumentOrEnvironmentVariableAliasTests.cs create mode 100644 Cake.ArgumentHelpers.Tests/Cake.ArgumentHelpers.Tests.csproj create mode 100644 Cake.ArgumentHelpers.Tests/packages.config diff --git a/Cake.ArgumentHelpers.Tests/ArgumentOrEnvironmentVariableAliasTests.cs b/Cake.ArgumentHelpers.Tests/ArgumentOrEnvironmentVariableAliasTests.cs new file mode 100644 index 0000000..aab6307 --- /dev/null +++ b/Cake.ArgumentHelpers.Tests/ArgumentOrEnvironmentVariableAliasTests.cs @@ -0,0 +1,156 @@ +using NUnit.Framework; +using Cake.Core; +using Moq; + +namespace Cake.ArgumentHelpers.Tests +{ + [TestFixture()] + public class ArgumentOrEnvironmentVariableAliasTests + { + Mock cakeContextMock; + Mock cakeArgumentsMock; + Mock cakeEnvironmentMock; + + [SetUp] + public void Setup() + { + cakeContextMock = new Mock(); + cakeArgumentsMock = new Mock(); + cakeEnvironmentMock = new Mock(); + cakeContextMock.Setup(cakeContext => cakeContext.Arguments).Returns(cakeArgumentsMock.Object); + cakeContextMock.Setup(cakeContext => cakeContext.Environment).Returns(cakeEnvironmentMock.Object); + } + + void SetupVariables(string key, string environmentPrefix, bool? argumentValue, bool? environmentValue) + { + bool hasArgument = argumentValue != null; + cakeArgumentsMock.Setup(x => x.HasArgument(key)).Returns(hasArgument); + if (hasArgument) + { + cakeArgumentsMock.Setup(x => x.GetArgument(key)).Returns(argumentValue.ToString()); + } + cakeEnvironmentMock.Setup(x => x.GetEnvironmentVariable(environmentPrefix + key)).Returns(environmentValue != null ? environmentValue.Value.ToString() : null); + } + + [Test] + public void TrueArgumentAndNullEnvironment_ReturnsTrue() + { + var testKey = "someVariable"; + var testKeyEnvironmentPrefix = "somePrefix_"; + bool? testArgumentValue = true; + bool? testEnvironmentValue = null; + + SetupVariables(testKey, testKeyEnvironmentPrefix, testArgumentValue, testEnvironmentValue); + + var expected = true; + var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, testKeyEnvironmentPrefix, true); + + Assert.AreEqual(expected, actual, "Didn't find Argument variable."); + } + [Test] + public void FalseArgumentAndNullEnvironment_ReturnsFalse() + { + var testKey = "someVariable"; + var testKeyEnvironmentPrefix = "somePrefix_"; + bool? testArgumentValue = false; + bool? testEnvironmentValue = null; + + SetupVariables(testKey, testKeyEnvironmentPrefix, testArgumentValue, testEnvironmentValue); + + var expected = false; + var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, testKeyEnvironmentPrefix, true); + + Assert.AreEqual(expected, actual, "Didn't find Argument variable."); + } + [Test] + public void NullArgumentAndTrueEnvironment_ReturnsTrue() + { + var testKey = "someVariable"; + var testKeyEnvironmentPrefix = "somePrefix_"; + bool? testArgumentValue = null; + bool? testEnvironmentValue = true; + + SetupVariables(testKey, testKeyEnvironmentPrefix, testArgumentValue, testEnvironmentValue); + + var expected = true; + var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, testKeyEnvironmentPrefix, true); + + Assert.AreEqual(expected, actual, "Didn't find Environment variable."); + } + [Test] + public void NullArgumentAndFalseEnvironment_ReturnsFalse() + { + var testKey = "someVariable"; + var testKeyEnvironmentPrefix = "somePrefix_"; + bool? testArgumentValue = null; + bool? testEnvironmentValue = false; + + SetupVariables(testKey, testKeyEnvironmentPrefix, testArgumentValue, testEnvironmentValue); + + var expected = false; + var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, testKeyEnvironmentPrefix, true); + + Assert.AreEqual(expected, actual, "Didn't find Environment variable."); + } + [Test] + public void NullArgumentAndTrueEnvironmentWithoutPrefix_ReturnsTrue() + { + var testKey = "someVariable"; + var testKeyEnvironmentPrefix = (string)null; + bool? testArgumentValue = null; + bool? testEnvironmentValue = true; + + SetupVariables(testKey, testKeyEnvironmentPrefix, testArgumentValue, testEnvironmentValue); + + var expected = true; + var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, testKeyEnvironmentPrefix, true); + + Assert.AreEqual(expected, actual, "Didn't find Environment variable without prefix."); + } + [Test] + public void TrueArgumentAndTrueEnvironment_ReturnsTrue() + { + var testKey = "someVariable"; + var testKeyEnvironmentPrefix = "somePrefix_"; + bool? testArgumentValue = true; + bool? testEnvironmentValue = true; + + SetupVariables(testKey, testKeyEnvironmentPrefix, testArgumentValue, testEnvironmentValue); + + var expected = true; + var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, testKeyEnvironmentPrefix, true); + + Assert.AreEqual(expected, actual, "Didn't find variable value from either source."); + } + [Test] + public void TrueArgumentAndFalseEnvironment_ReturnsTrue() + { + var testKey = "someVariable"; + var testKeyEnvironmentPrefix = "somePrefix_"; + bool? testArgumentValue = true; + bool? testEnvironmentValue = false; + + SetupVariables(testKey, testKeyEnvironmentPrefix, testArgumentValue, testEnvironmentValue); + + var expected = true; + var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, testKeyEnvironmentPrefix, true); + + Assert.AreEqual(expected, actual, "Explicit argument variable didn't override opposite environment variable."); + } + [Test] + public void FalseArgumentAndTrueEnvironment_ReturnsFalse() + { + var testKey = "someVariable"; + var testKeyEnvironmentPrefix = "somePrefix_"; + bool? testArgumentValue = false; + bool? testEnvironmentValue = true; + + SetupVariables(testKey, testKeyEnvironmentPrefix, testArgumentValue, testEnvironmentValue); + + var expected = false; + var actual = cakeContextMock.Object.ArgumentOrEnvironmentVariable(testKey, testKeyEnvironmentPrefix, true); + + Assert.AreEqual(expected, actual, "Explicit argument variable didn't override opposite environment variable."); + } + } +} diff --git a/Cake.ArgumentHelpers.Tests/Cake.ArgumentHelpers.Tests.csproj b/Cake.ArgumentHelpers.Tests/Cake.ArgumentHelpers.Tests.csproj new file mode 100644 index 0000000..f01a60f --- /dev/null +++ b/Cake.ArgumentHelpers.Tests/Cake.ArgumentHelpers.Tests.csproj @@ -0,0 +1,58 @@ + + + + Debug + AnyCPU + {1297E243-9A95-45A5-A5C6-AAAC94ECEE22} + Library + Cake.ArgumentHelpers.Tests + Cake.ArgumentHelpers.Tests + v4.6.1 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + + + true + bin\Release + prompt + 4 + + + + + ..\packages\NUnit.3.7.1\lib\net45\nunit.framework.dll + + + ..\packages\Cake.Core.0.21.0\lib\net45\Cake.Core.dll + + + ..\packages\Cake.Common.0.21.0\lib\net45\Cake.Common.dll + + + ..\packages\Castle.Core.4.1.0\lib\net45\Castle.Core.dll + + + ..\packages\Moq.4.7.63\lib\net45\Moq.dll + + + + + + + + + + + {9C50A7C4-E00D-4851-8311-81135D062C77} + Cake.ArgumentHelpers + + + + \ No newline at end of file diff --git a/Cake.ArgumentHelpers.Tests/packages.config b/Cake.ArgumentHelpers.Tests/packages.config new file mode 100644 index 0000000..40b370e --- /dev/null +++ b/Cake.ArgumentHelpers.Tests/packages.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Cake.ArgumentHelpers.sln b/Cake.ArgumentHelpers.sln index 9fc2d14..8e907f9 100644 --- a/Cake.ArgumentHelpers.sln +++ b/Cake.ArgumentHelpers.sln @@ -10,6 +10,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Package.nuspec = Package.nuspec EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cake.ArgumentHelpers.Tests", "Cake.ArgumentHelpers.Tests\Cake.ArgumentHelpers.Tests.csproj", "{1297E243-9A95-45A5-A5C6-AAAC94ECEE22}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -20,6 +22,10 @@ Global {9C50A7C4-E00D-4851-8311-81135D062C77}.Debug|Any CPU.Build.0 = Debug|Any CPU {9C50A7C4-E00D-4851-8311-81135D062C77}.Release|Any CPU.ActiveCfg = Release|Any CPU {9C50A7C4-E00D-4851-8311-81135D062C77}.Release|Any CPU.Build.0 = Release|Any CPU + {1297E243-9A95-45A5-A5C6-AAAC94ECEE22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1297E243-9A95-45A5-A5C6-AAAC94ECEE22}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1297E243-9A95-45A5-A5C6-AAAC94ECEE22}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1297E243-9A95-45A5-A5C6-AAAC94ECEE22}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE