elsa-core/test/unit/Elsa.UnitTests/Activities/Http/StringValuesModelTests.cs
2021-04-02 12:43:14 +02:00

96 lines
4.6 KiB
C#

using System;
using Elsa.Activities.Http.Models;
using Microsoft.Extensions.Primitives;
using Xunit;
namespace Elsa.Activities.Http
{
public class StringValuesModelTests
{
[Theory(DisplayName = "It should be possible to use Convert.ChangeType to convert an instance to string. This is primarily to support usage via Jint."), AutoMoqData]
public void ItShouldBePossibleToConvertAStringValuesModelToString(string[] values)
{
var sut = new StringValuesModel(new StringValues(values));
var result = Convert.ChangeType(sut, typeof(string));
Assert.Equal(sut.ToString(), result);
}
[Fact(DisplayName = "It should be possible to use Convert.ToInt32 to convert an instance to a number if the value is a valid string representation of a number. This is primarily to support usage via Jint.")]
public void ItShouldBePossibleToConvertAStringValuesModelToInt32IfValid()
{
var sut = new StringValuesModel(new StringValues("3"));
var result = Convert.ChangeType(sut, typeof(int));
Assert.Equal(3, result);
}
[Theory(DisplayName = "The Value property should return the first value if there is more than one."), AutoMoqData]
public void ValueShouldReturnFirstItemIfThereAreMoreThanOne(string firstValue, string secondValue)
{
var sut = new StringValuesModel(new StringValues(new [] { firstValue, secondValue }));
Assert.Equal(firstValue, sut.Value);
}
[Theory(DisplayName = "The Value property should always return the first value if there is only one."), AutoMoqData]
public void ValueShouldReturnFirstItemIfThereIsOne(string firstValue)
{
var sut = new StringValuesModel(new StringValues(new [] { firstValue }));
Assert.Equal(firstValue, sut.Value);
}
[Fact(DisplayName = "The Value property should return null if there are no values.")]
public void ValueShouldReturnNullIfThereAreNone()
{
var sut = new StringValuesModel(new StringValues(new string[0]));
Assert.Null(sut.Value);
}
[Theory(DisplayName = "The Values property should return a length-one collection if there is a single value."), AutoMoqData]
public void ValuesShouldReturnLengthOneCollectionIfThereIsOneValue(string firstValue)
{
var sut = new StringValuesModel(new StringValues(new [] { firstValue }));
Assert.Equal(new [] {firstValue}, sut.Values);
}
[Theory(DisplayName = "The Values property should return a length-two collection if there are two values."), AutoMoqData]
public void ValuesShouldReturnLengthTwoCollectionIfThereAreTwoValues(string firstValue, string secondValue)
{
var sut = new StringValuesModel(new StringValues(new [] { firstValue, secondValue }));
Assert.Equal(new [] {firstValue, secondValue}, sut.Values);
}
[Fact(DisplayName = "The Values property should return an empty collection if there are no values.")]
public void ValuesShouldReturnEmptyCollectionIfThereAreNone()
{
var sut = new StringValuesModel(new StringValues(new string[0]));
Assert.Empty(sut.Values);
}
[Fact(DisplayName = "The ToString method should return null if there are no values")]
public void ToStringShouldReturnNullIfNotValues()
{
var sut = new StringValuesModel(new StringValues(new string[0]));
Assert.Null(sut.ToString());
}
[Theory(DisplayName = "The ToString method should return the first value if there is only one"), AutoMoqData]
public void ToStringShouldReturnFirstValueIfThereIsOnlyOne(string firstValue)
{
var sut = new StringValuesModel(new StringValues(new [] { firstValue }));
Assert.Equal(firstValue, sut.ToString());
}
[Theory(DisplayName = "The ToString method should return comma-separated values if there are more than one"), AutoMoqData]
public void ToStringShouldReturnCommaSeparatedValuesIfThereIsMoreThanOne(string firstValue, string secondValue)
{
var sut = new StringValuesModel(new StringValues(new [] { firstValue, secondValue }));
Assert.Equal($"{firstValue},{secondValue}", sut.ToString());
}
[Fact(DisplayName = "The parameterless constructor should initialize Values to an empty collection")]
public void ParameterlessCtorShouldInitializeWithEmptyCollection()
{
var sut = new StringValuesModel();
Assert.Empty(sut.Values);
}
}
}