Add unit tests.

This commit is contained in:
Adam Patridge 2017-07-14 23:37:01 -06:00
parent 3fcdbfb45d
commit d37f5b2ed1
4 changed files with 228 additions and 0 deletions

View file

@ -0,0 +1,156 @@
using NUnit.Framework;
using Cake.Core;
using Moq;
namespace Cake.ArgumentHelpers.Tests
{
[TestFixture()]
public class ArgumentOrEnvironmentVariableAliasTests
{
Mock<ICakeContext> cakeContextMock;
Mock<ICakeArguments> cakeArgumentsMock;
Mock<ICakeEnvironment> cakeEnvironmentMock;
[SetUp]
public void Setup()
{
cakeContextMock = new Mock<ICakeContext>();
cakeArgumentsMock = new Mock<ICakeArguments>();
cakeEnvironmentMock = new Mock<ICakeEnvironment>();
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.");
}
}
}

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1297E243-9A95-45A5-A5C6-AAAC94ECEE22}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>Cake.ArgumentHelpers.Tests</RootNamespace>
<AssemblyName>Cake.ArgumentHelpers.Tests</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="nunit.framework">
<HintPath>..\packages\NUnit.3.7.1\lib\net45\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="Cake.Core">
<HintPath>..\packages\Cake.Core.0.21.0\lib\net45\Cake.Core.dll</HintPath>
</Reference>
<Reference Include="Cake.Common">
<HintPath>..\packages\Cake.Common.0.21.0\lib\net45\Cake.Common.dll</HintPath>
</Reference>
<Reference Include="Castle.Core">
<HintPath>..\packages\Castle.Core.4.1.0\lib\net45\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="Moq">
<HintPath>..\packages\Moq.4.7.63\lib\net45\Moq.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ArgumentOrEnvironmentVariableAliasTests.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Cake.ArgumentHelpers\Cake.ArgumentHelpers.csproj">
<Project>{9C50A7C4-E00D-4851-8311-81135D062C77}</Project>
<Name>Cake.ArgumentHelpers</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Cake.Common" version="0.21.0" targetFramework="net461" />
<package id="Cake.Core" version="0.21.0" targetFramework="net461" />
<package id="Castle.Core" version="4.1.0" targetFramework="net461" />
<package id="Moq" version="4.7.63" targetFramework="net461" />
<package id="NUnit" version="3.7.1" targetFramework="net461" />
</packages>

View file

@ -10,6 +10,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
Package.nuspec = Package.nuspec Package.nuspec = Package.nuspec
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cake.ArgumentHelpers.Tests", "Cake.ArgumentHelpers.Tests\Cake.ArgumentHelpers.Tests.csproj", "{1297E243-9A95-45A5-A5C6-AAAC94ECEE22}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU 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}.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.ActiveCfg = Release|Any CPU
{9C50A7C4-E00D-4851-8311-81135D062C77}.Release|Any CPU.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE