63 lines
3.9 KiB
C#
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);
|
|
}
|
|
}
|
|
} |