V6 Cardigann Changes (#1045)
* V6 Cardigann Changes * fixup! * !fixup range * !fixup more cardigann testspull/1051/head
parent
654d2dbad3
commit
5ee95e3cc2
@ -0,0 +1,91 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using FizzWare.NBuilder;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.Indexers.Cardigann;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Test.IndexerTests.CardigannTests
|
||||
{
|
||||
public class ApplyGoTemplateTextFixture : CoreTest<CardigannBase>
|
||||
{
|
||||
private Dictionary<string, object> _variables;
|
||||
private CardigannDefinition _definition;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_variables = new Dictionary<string, object>
|
||||
{
|
||||
[".Config.sitelink"] = "https://somesite.com/",
|
||||
[".True"] = "True",
|
||||
[".False"] = null,
|
||||
[".Today.Year"] = DateTime.Today.Year.ToString(),
|
||||
[".Categories"] = new string[] { "tv", "movies" }
|
||||
};
|
||||
|
||||
_definition = Builder<CardigannDefinition>.CreateNew()
|
||||
.With(x => x.Encoding = "UTF-8")
|
||||
.With(x => x.Links = new List<string>
|
||||
{
|
||||
"https://somesite.com/"
|
||||
})
|
||||
.With(x => x.Caps = new CapabilitiesBlock
|
||||
{
|
||||
Modes = new Dictionary<string, List<string>>
|
||||
{
|
||||
{ "search", new List<string> { "q" } }
|
||||
}
|
||||
})
|
||||
.Build();
|
||||
|
||||
Mocker.SetConstant<CardigannDefinition>(_definition);
|
||||
}
|
||||
|
||||
[TestCase("{{ range .Categories}}&categories[]={{.}}{{end}}", "&categories[]=tv&categories[]=movies")]
|
||||
[TestCase("{{ range $i, $e := .Categories}}&categories[{{$i}}]={{.}}{{end}}", "&categories[0]=tv&categories[1]=movies")]
|
||||
[TestCase("{{ range $index, $element := .Categories}}&categories[{{$index}}]={{.}}+postIndex[{{$index}}]{{end}}", "&categories[0]=tv+postIndex[0]&categories[1]=movies+postIndex[1]")]
|
||||
public void should_handle_range_statements(string template, string expected)
|
||||
{
|
||||
var result = Subject.ApplyGoTemplateText(template, _variables);
|
||||
|
||||
result.Should().Be(expected);
|
||||
}
|
||||
|
||||
[TestCase("{{ re_replace .Query.Keywords \"[^a-zA-Z0-9]+\" \"%\" }}", "abc%def")]
|
||||
public void should_handle_re_replace_statements(string template, string expected)
|
||||
{
|
||||
_variables[".Query.Keywords"] = string.Join(" ", new List<string> { "abc", "def" });
|
||||
|
||||
var result = Subject.ApplyGoTemplateText(template, _variables);
|
||||
|
||||
result.Should().Be(expected);
|
||||
}
|
||||
|
||||
[TestCase("{{ join .Categories \", \" }}", "tv, movies")]
|
||||
public void should_handle_join_statements(string template, string expected)
|
||||
{
|
||||
var result = Subject.ApplyGoTemplateText(template, _variables);
|
||||
|
||||
result.Should().Be(expected);
|
||||
}
|
||||
|
||||
[TestCase("{{ .Today.Year }}", "2022")]
|
||||
public void should_handle_variables_statements(string template, string expected)
|
||||
{
|
||||
var result = Subject.ApplyGoTemplateText(template, _variables);
|
||||
|
||||
result.Should().Be(expected);
|
||||
}
|
||||
|
||||
[TestCase("{{if .False }}0{{else}}1{{end}}", "1")]
|
||||
[TestCase("{{if .True }}0{{else}}1{{end}}", "0")]
|
||||
public void should_handle_if_statements(string template, string expected)
|
||||
{
|
||||
var result = Subject.ApplyGoTemplateText(template, _variables);
|
||||
|
||||
result.Should().Be(expected);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue