elsa-core/test/unit/Elsa.UnitTests/Expressions/LiteralHandlerTests.cs
2021-05-13 11:31:38 +02:00

63 lines
3.9 KiB
C#

using System;
using System.Threading.Tasks;
using Elsa.Services.Models;
using Elsa.Testing.Shared;
using Elsa.Testing.Shared.AutoFixture.Attributes;
using Xunit;
namespace Elsa.Expressions
{
public class LiteralHandlerTests
{
[Theory(DisplayName = "When the desired return type is a string, the EvaluateAsync method should return the literal expression"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnExpressionLiteralWhenReturnTypeIsString(LiteralHandler sut,
string expression,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(expression, typeof(string), context, default);
Assert.Equal(expression, result);
}
[Theory(DisplayName = "When the desired return type is an object, the EvaluateAsync method should return the literal expression"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnExpressionLiteralWhenReturnTypeIsObject(LiteralHandler sut,
string expression,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(expression, typeof(object), context, default);
Assert.Equal(expression, result);
}
[Theory(DisplayName = "When the desired return type is not string or object but the expression is null, the EvaluateAsync method should return null"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnNullWhenExpressionIsNull(LiteralHandler sut,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(null, typeof(Uri), context, default);
Assert.Null(result);
}
[Theory(DisplayName = "When the desired return type is not string or object but the expression is empty string, the EvaluateAsync method should return null"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnNullWhenExpressionIsEmpty(LiteralHandler sut,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(string.Empty, typeof(Uri), context, default);
Assert.Null(result);
}
[Theory(DisplayName = "When the desired return type is not string or object but the expression is whitespace-only, the EvaluateAsync method should return null"), AutoMoqData]
public async Task EvaluateAsyncShouldReturnNullWhenExpressionIsWhitespaceOnly(LiteralHandler sut,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync(" ", typeof(Uri), context, default);
Assert.Null(result);
}
[Theory(DisplayName = "When the desired return type is DateTime, the EvaluateAsync method should convert the string to a DateTime"), AutoMoqData]
public async Task EvaluateAsyncShouldConvertToDateTimeWhenThatIsDesiredReturnType(LiteralHandler sut,
[StubActivityExecutionContext] ActivityExecutionContext context)
{
var result = await sut.EvaluateAsync("2001-03-04T12:45:32Z", typeof(DateTime), context, default);
var expected = new DateTime(2001, 03, 04, 12, 45, 32, DateTimeKind.Utc);
Assert.Equal(expected, result);
}
}
}