2021-04-26 18:29:10 +00:00
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 ) ;
2021-05-05 11:13:05 +00:00
var expected = new DateTime ( 2001 , 03 , 04 , 12 , 45 , 32 , DateTimeKind . Utc ) ;
Assert . Equal ( expected , result ) ;
2021-04-26 18:29:10 +00:00
}
}
}