Fixes U4-2791 Error creating node containing @ v6.1.4.
Adding unit test which covers both U4-2791 and U4-2607
This commit is contained in:
@@ -64,8 +64,11 @@ namespace Umbraco.Core.Persistence.Querying
|
||||
|
||||
public virtual string EscapeAtArgument(string exp)
|
||||
{
|
||||
if (exp.StartsWith("@"))
|
||||
return string.Concat("@", exp);
|
||||
/*if (exp.StartsWith("@"))
|
||||
return string.Concat("@", exp);*/
|
||||
|
||||
if (exp.Contains("@"))
|
||||
return exp.Replace("@", "@@");
|
||||
|
||||
return exp;
|
||||
}
|
||||
|
||||
@@ -248,9 +248,9 @@ namespace Umbraco.Core.Persistence.Querying
|
||||
case "StartsWith":
|
||||
return string.Format("upper({0}) like '{1}%'", r, EscapeAtArgument(RemoveQuote(args[0].ToString().ToUpper())));
|
||||
case "EndsWith":
|
||||
return string.Format("upper({0}) like '%{1}'", r, RemoveQuote(args[0].ToString()).ToUpper());
|
||||
return string.Format("upper({0}) like '%{1}'", r, EscapeAtArgument(RemoveQuote(args[0].ToString()).ToUpper()));
|
||||
case "Contains":
|
||||
return string.Format("{0} like '%{1}%'", r, RemoveQuote(args[0].ToString()).ToUpper());
|
||||
return string.Format("{0} like '%{1}%'", r, EscapeAtArgument(RemoveQuote(args[0].ToString()).ToUpper()));
|
||||
case "Substring":
|
||||
var startIndex = Int32.Parse(args[0].ToString()) + 1;
|
||||
if (args.Count == 2)
|
||||
|
||||
@@ -252,9 +252,9 @@ namespace Umbraco.Core.Persistence.Querying
|
||||
case "StartsWith":
|
||||
return string.Format("upper({0}) like '{1}%'", r, EscapeAtArgument(RemoveQuote(args[0].ToString().ToUpper())));
|
||||
case "EndsWith":
|
||||
return string.Format("upper({0}) like '%{1}'", r, RemoveQuote(args[0].ToString()).ToUpper());
|
||||
return string.Format("upper({0}) like '%{1}'", r, EscapeAtArgument(RemoveQuote(args[0].ToString()).ToUpper()));
|
||||
case "Contains":
|
||||
return string.Format("upper({0}) like '%{1}%'", r, RemoveQuote(args[0].ToString()).ToUpper());
|
||||
return string.Format("upper({0}) like '%{1}%'", r, EscapeAtArgument(RemoveQuote(args[0].ToString()).ToUpper()));
|
||||
case "Substring":
|
||||
var startIndex = Int32.Parse(args[0].ToString()) + 1;
|
||||
if (args.Count == 2)
|
||||
|
||||
@@ -106,6 +106,37 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
Assert.That(textpage.HasIdentity, Is.True);
|
||||
}
|
||||
|
||||
//Covers issue U4-2791 and U4-2607
|
||||
[Test]
|
||||
public void Can_Save_Content_With_AtSign_In_Name_On_ContentRepository()
|
||||
{
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider();
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
var contentTypeRepository = RepositoryResolver.Current.ResolveByType<IContentTypeRepository>(unitOfWork);
|
||||
var repository = RepositoryResolver.Current.ResolveByType<IContentRepository>(unitOfWork);
|
||||
|
||||
ContentType contentType = MockedContentTypes.CreateSimpleContentType("umbTextpage", "Textpage");
|
||||
Content textpage = MockedContent.CreateSimpleContent(contentType, "test@umbraco.org", -1);
|
||||
Content anotherTextpage = MockedContent.CreateSimpleContent(contentType, "@lightgiants", -1);
|
||||
|
||||
// Act
|
||||
contentTypeRepository.AddOrUpdate(contentType);
|
||||
repository.AddOrUpdate(textpage);
|
||||
repository.AddOrUpdate(anotherTextpage);
|
||||
unitOfWork.Commit();
|
||||
|
||||
// Assert
|
||||
Assert.That(contentType.HasIdentity, Is.True);
|
||||
Assert.That(textpage.HasIdentity, Is.True);
|
||||
|
||||
var content = repository.Get(textpage.Id);
|
||||
Assert.That(content.Name, Is.EqualTo(textpage.Name));
|
||||
|
||||
var content2 = repository.Get(anotherTextpage.Id);
|
||||
Assert.That(content2.Name, Is.EqualTo(anotherTextpage.Name));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Perform_Multiple_Adds_On_ContentRepository()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user