Browse Source

Merge branch 'master' of github.com:Squidex/squidex

pull/244/head v1.1.5
Sebastian Stehle 8 years ago
parent
commit
8c5d2800e8
  1. 3
      src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScriptEngine.cs
  2. 2
      src/Squidex.Infrastructure.GetEventStore/EventSourcing/ProjectionHelper.cs
  3. 2
      src/Squidex.Infrastructure/StringExtensions.cs
  4. 30
      tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs
  5. 20
      tests/Squidex.Infrastructure.Tests/StringExtensionsTests.cs

3
src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScriptEngine.cs

@ -115,7 +115,7 @@ namespace Squidex.Domain.Apps.Core.Scripting
} }
catch (ParserException ex) catch (ParserException ex)
{ {
throw new ValidationException("Failed to execute script with javascript syntaxs error.", new ValidationError(ex.Message)); throw new ValidationException("Failed to execute script with javascript syntax error.", new ValidationError(ex.Message));
} }
catch (JavaScriptException ex) catch (JavaScriptException ex)
{ {
@ -150,6 +150,7 @@ namespace Squidex.Domain.Apps.Core.Scripting
} }
engine.SetValue("ctx", contextInstance); engine.SetValue("ctx", contextInstance);
engine.SetValue("slugify", new Func<string, string>(x => x.Slugify()));
return engine; return engine;
} }

2
src/Squidex.Infrastructure.GetEventStore/EventSourcing/ProjectionHelper.cs

@ -25,7 +25,7 @@ namespace Squidex.Infrastructure.EventSourcing
private static string ParseFilter(string prefix, string filter) private static string ParseFilter(string prefix, string filter)
{ {
return string.Format(CultureInfo.InvariantCulture, ProjectionName, prefix.Simplify(), filter.Simplify()); return string.Format(CultureInfo.InvariantCulture, ProjectionName, prefix.Slugify(), filter.Slugify());
} }
public static async Task<string> CreateProjectionAsync(this IEventStoreConnection connection, ProjectionsManager projectionsManager, string prefix, string streamFilter = null) public static async Task<string> CreateProjectionAsync(this IEventStoreConnection connection, ProjectionsManager projectionsManager, string prefix, string streamFilter = null)

2
src/Squidex.Infrastructure/StringExtensions.cs

@ -357,7 +357,7 @@ namespace Squidex.Infrastructure
} }
} }
public static string Simplify(this string value, ISet<char> preserveHash = null, bool singleCharDiactric = false, char separator = '-') public static string Slugify(this string value, ISet<char> preserveHash = null, bool singleCharDiactric = false, char separator = '-')
{ {
var result = new StringBuilder(value.Length); var result = new StringBuilder(value.Length);

30
tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineTests.cs

@ -138,6 +138,36 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting
Assert.Equal(expected, result); Assert.Equal(expected, result);
} }
[Fact]
public void Should_slugify_value()
{
var content =
new NamedContentData()
.AddField("title",
new ContentFieldData()
.AddValue("iv", "Hello World"));
var expected =
new NamedContentData()
.AddField("title",
new ContentFieldData()
.AddValue("iv", "Hello World"))
.AddField("slug",
new ContentFieldData()
.AddValue("iv", "hello-world"));
var context = new ScriptContext { Data = content };
var result = scriptEngine.Transform(context, @"
var data = ctx.data;
data.slug = { iv: slugify(data.title.iv) };
replace(data);");
Assert.Equal(expected, result);
}
[Fact] [Fact]
public void Should_transform_content_and_return_with_execute_transform() public void Should_transform_content_and_return_with_execute_transform()
{ {

20
tests/Squidex.Infrastructure.Tests/StringExtensionsTests.cs

@ -57,27 +57,27 @@ namespace Squidex.Infrastructure
[InlineData("Hello World ", '_', "hello_world")] [InlineData("Hello World ", '_', "hello_world")]
[InlineData("Hello World-", '_', "hello_world")] [InlineData("Hello World-", '_', "hello_world")]
[InlineData("Hello/World_", '_', "hello_world")] [InlineData("Hello/World_", '_', "hello_world")]
public void Should_replace_special_characters_with_sepator_when_simplifying(string input, char separator, string output) public void Should_replace_special_characters_with_sepator_when_slugifying(string input, char separator, string output)
{ {
Assert.Equal(output, input.Simplify(separator: separator)); Assert.Equal(output, input.Slugify(separator: separator));
} }
[Theory] [Theory]
[InlineData("ö", "oe")] [InlineData("ö", "oe")]
[InlineData("ü", "ue")] [InlineData("ü", "ue")]
[InlineData("ä", "ae")] [InlineData("ä", "ae")]
public void Should_replace_multi_char_diacritics_when_simplifying(string input, string output) public void Should_replace_multi_char_diacritics_when_slugifying(string input, string output)
{ {
Assert.Equal(output, input.Simplify()); Assert.Equal(output, input.Slugify());
} }
[Theory] [Theory]
[InlineData("ö", "o")] [InlineData("ö", "o")]
[InlineData("ü", "u")] [InlineData("ü", "u")]
[InlineData("ä", "a")] [InlineData("ä", "a")]
public void Should_not_replace_multi_char_diacritics_when_simplifying(string input, string output) public void Should_not_replace_multi_char_diacritics_when_slugifying(string input, string output)
{ {
Assert.Equal(output, input.Simplify(singleCharDiactric: true)); Assert.Equal(output, input.Slugify(singleCharDiactric: true));
} }
[Theory] [Theory]
@ -87,18 +87,18 @@ namespace Squidex.Infrastructure
[InlineData("fórm", "form")] [InlineData("fórm", "form")]
[InlineData("fòrm", "form")] [InlineData("fòrm", "form")]
[InlineData("fårt", "fart")] [InlineData("fårt", "fart")]
public void Should_replace_single_char_diacritics_when_simplifying(string input, string output) public void Should_replace_single_char_diacritics_when_slugifying(string input, string output)
{ {
Assert.Equal(output, input.Simplify()); Assert.Equal(output, input.Slugify());
} }
[Theory] [Theory]
[InlineData("Hello my&World ", '_', "hello_my&world")] [InlineData("Hello my&World ", '_', "hello_my&world")]
[InlineData("Hello my&World-", '_', "hello_my&world")] [InlineData("Hello my&World-", '_', "hello_my&world")]
[InlineData("Hello my/World_", '_', "hello_my/world")] [InlineData("Hello my/World_", '_', "hello_my/world")]
public void Should_keep_characters_when_simplifying(string input, char separator, string output) public void Should_keep_characters_when_slugifying(string input, char separator, string output)
{ {
Assert.Equal(output, input.Simplify(new HashSet<char> { '&', '/' }, false, separator)); Assert.Equal(output, input.Slugify(new HashSet<char> { '&', '/' }, false, separator));
} }
[Fact] [Fact]

Loading…
Cancel
Save