87 lines
2.2 KiB
C#
87 lines
2.2 KiB
C#
using w4c_workflows.Models;
|
|
using w4c_workflows.Services.Triggers;
|
|
using Xunit;
|
|
|
|
namespace w4c_workflows.Tests;
|
|
|
|
public class TriggerSpecTests
|
|
{
|
|
[Fact]
|
|
public void Parses_cron_trigger()
|
|
{
|
|
var spec = TriggerSpec.Parse("{\"type\":\"cron\",\"cron\":\"0 */6 * * *\"}", out var error);
|
|
|
|
Assert.Null(error);
|
|
Assert.NotNull(spec);
|
|
Assert.Equal(TriggerType.Cron, spec!.Type);
|
|
Assert.Equal("0 */6 * * *", spec.Cron);
|
|
Assert.Null(spec.Interval);
|
|
}
|
|
|
|
[Fact]
|
|
public void Parses_interval_trigger_into_a_timespan()
|
|
{
|
|
var spec = TriggerSpec.Parse("{\"type\":\"interval\",\"interval\":\"30m\"}", out var error);
|
|
|
|
Assert.Null(error);
|
|
Assert.NotNull(spec);
|
|
Assert.Equal(TriggerType.Interval, spec!.Type);
|
|
Assert.Equal(TimeSpan.FromMinutes(30), spec.Interval);
|
|
}
|
|
|
|
[Fact]
|
|
public void Parses_webhook_trigger()
|
|
{
|
|
var spec = TriggerSpec.Parse("{\"type\":\"webhook\",\"webhookPath\":\"/h/orders\"}", out var error);
|
|
|
|
Assert.Null(error);
|
|
Assert.Equal("/h/orders", spec!.WebhookPath);
|
|
}
|
|
|
|
[Fact]
|
|
public void Parses_queue_trigger_with_stream()
|
|
{
|
|
var spec = TriggerSpec.Parse("{\"type\":\"queue\",\"stream\":\"orders\"}", out var error);
|
|
|
|
Assert.Null(error);
|
|
Assert.Equal(TriggerType.Queue, spec!.Type);
|
|
Assert.Equal("orders", spec.Stream);
|
|
}
|
|
|
|
[Fact]
|
|
public void Null_json_returns_null_without_error()
|
|
{
|
|
var spec = TriggerSpec.Parse(null, out var error);
|
|
|
|
Assert.Null(spec);
|
|
Assert.Null(error);
|
|
}
|
|
|
|
[Fact]
|
|
public void Invalid_interval_returns_null_with_error()
|
|
{
|
|
var spec = TriggerSpec.Parse("{\"type\":\"interval\",\"interval\":\"soon\"}", out var error);
|
|
|
|
Assert.Null(spec);
|
|
Assert.NotNull(error);
|
|
}
|
|
|
|
[Fact]
|
|
public void Malformed_json_returns_null_with_error()
|
|
{
|
|
var spec = TriggerSpec.Parse("{not json", out var error);
|
|
|
|
Assert.Null(spec);
|
|
Assert.NotNull(error);
|
|
}
|
|
|
|
[Fact]
|
|
public void Missing_type_returns_null_with_error()
|
|
{
|
|
var spec = TriggerSpec.Parse("{\"cron\":\"0 9 * * *\"}", out var error);
|
|
|
|
Assert.Null(spec);
|
|
Assert.NotNull(error);
|
|
}
|
|
}
|