diff --git a/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs
index 801f2e1ef8..fb9556ee20 100644
--- a/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs
+++ b/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs
@@ -1,26 +1,147 @@
+using System.Linq;
using NUnit.Framework;
using Umbraco.Tests.TestHelpers;
using Umbraco.Web.Routing;
+using umbraco.cms.businesslogic.web;
+using umbraco.cms.businesslogic.language;
namespace Umbraco.Tests.Routing
{
[TestFixture]
public class ContentFinderByAliasTests : BaseRoutingTest
{
- ///
- /// We don't need a db for this test, will run faster without one
- ///
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ public override void Initialize()
+ {
+ base.Initialize();
- [TestCase("/this/is/my/alias", 1046)]
- [TestCase("/anotheralias", 1046)]
- [TestCase("/page2/alias", 1173)]
- [TestCase("/2ndpagealias", 1173)]
- [TestCase("/only/one/alias", 1174)]
- [TestCase("/ONLY/one/Alias", 1174)]
+ // ensure we can create them although the content is not in the database
+ TestHelper.DropForeignKeys("umbracoDomains");
+
+ InitializeLanguagesAndDomains();
+ }
+
+ void InitializeLanguagesAndDomains()
+ {
+ var domains = Domain.GetDomains();
+ foreach (var d in domains)
+ d.Delete();
+
+ var langs = Language.GetAllAsList();
+ foreach (var l in langs.Skip(1))
+ l.Delete();
+
+ // en-US is there by default
+ Language.MakeNew("fr-FR");
+ Language.MakeNew("de-DE");
+ }
+
+ void SetDomains1()
+ {
+ var langEn = Language.GetByCultureCode("en-US");
+ var langFr = Language.GetByCultureCode("fr-FR");
+ var langDe = Language.GetByCultureCode("de-DE");
+
+ Domain.MakeNew("domain1.com/", 1001, langDe.id);
+ Domain.MakeNew("domain1.com/en", 10011, langEn.id);
+ Domain.MakeNew("domain1.com/fr", 10012, langFr.id);
+ }
+
+ protected override string GetXmlContent(int templateId)
+ {
+ return @"
+
+
+]>
+
+
+
+
+
+ This is some content]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is some content]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is some content]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is some content]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+";
+ }
+
+ [TestCase("/this/is/my/alias", 1001)]
+ [TestCase("/anotheralias", 1001)]
+ [TestCase("/page2/alias", 10011)]
+ [TestCase("/2ndpagealias", 10011)]
+ [TestCase("/only/one/alias", 100111)]
+ [TestCase("/ONLY/one/Alias", 100111)]
+ [TestCase("/alias43", 100121)]
public void Lookup_By_Url_Alias(string urlAsString, int nodeMatch)
{
var routingContext = GetRoutingContext(urlAsString);
@@ -33,5 +154,42 @@ namespace Umbraco.Tests.Routing
Assert.IsTrue(result);
Assert.AreEqual(docRequest.PublishedContent.Id, nodeMatch);
}
+
+ [TestCase("http://domain1.com/this/is/my/alias", "de-DE", -1001)] // alias to domain's page fails FIXME wanted?
+ [TestCase("http://domain1.com/page2/alias", "de-DE", 10011)] // alias to sub-page works
+ [TestCase("http://domain1.com/en/flux", "en-US", -10011)] // alias to domain's page fails FIXME wanted?
+ [TestCase("http://domain1.com/endanger", "de-DE", 10011)] // alias to sub-page works, even with "en..."
+ [TestCase("http://domain1.com/en/endanger", "en-US", -10011)] // no
+ [TestCase("http://domain1.com/only/one/alias", "de-DE", 100111)] // ok
+ [TestCase("http://domain1.com/entropy", "de-DE", 100111)] // ok
+ [TestCase("http://domain1.com/bar/foo", "de-DE", 100111)] // ok
+ [TestCase("http://domain1.com/en/bar/foo", "en-US", -100111)] // no, alias must include "en/"
+ [TestCase("http://domain1.com/en/bar/nil", "en-US", 100111)] // ok, alias includes "en/"
+ public void Lookup_By_Url_Alias_And_Domain(string inputUrl, string expectedCulture, int expectedNode)
+ {
+ SetDomains1();
+
+ var routingContext = GetRoutingContext(inputUrl);
+ var url = routingContext.UmbracoContext.CleanedUmbracoUrl; //very important to use the cleaned up umbraco url
+ var pcr = new PublishedContentRequest(url, routingContext);
+ // must lookup domain
+ pcr.Engine.FindDomain();
+
+ if (expectedNode > 0)
+ Assert.AreEqual(expectedCulture, pcr.Culture.Name);
+
+ var finder = new ContentFinderByUrlAlias();
+ var result = finder.TryFindDocument(pcr);
+
+ if (expectedNode > 0)
+ {
+ Assert.IsTrue(result);
+ Assert.AreEqual(pcr.PublishedContent.Id, expectedNode);
+ }
+ else
+ {
+ Assert.IsFalse(result);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs
index 99f4fb511c..91801582d9 100644
--- a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs
@@ -11,81 +11,81 @@ using Examine.LuceneEngine.SearchCriteria;
namespace Umbraco.Tests.UmbracoExamine
{
- [TestFixture]
- public class SearchTests : ExamineBaseTest
- {
+ //[TestFixture]
+ //public class SearchTests : ExamineBaseTest
+ //{
- [Test]
- public void Test_Sort_Order_Sorting()
- {
- //var newIndexFolder = new DirectoryInfo(Path.Combine("App_Data\\SearchTests", Guid.NewGuid().ToString()));
- //System.IO.Directory.CreateDirectory(newIndexFolder.FullName);
+ // [Test]
+ // public void Test_Sort_Order_Sorting()
+ // {
+ // //var newIndexFolder = new DirectoryInfo(Path.Combine("App_Data\\SearchTests", Guid.NewGuid().ToString()));
+ // //System.IO.Directory.CreateDirectory(newIndexFolder.FullName);
- using (var luceneDir = new RAMDirectory())
- //using (var luceneDir = new SimpleFSDirectory(newIndexFolder))
- {
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir, null,
- new TestDataService()
- {
- ContentService = new TestContentService(TestFiles.umbraco_sort)
- });
- indexer.RebuildIndex();
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ // using (var luceneDir = new RAMDirectory())
+ // //using (var luceneDir = new SimpleFSDirectory(newIndexFolder))
+ // {
+ // var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir, null,
+ // new TestDataService()
+ // {
+ // ContentService = new TestContentService(TestFiles.umbraco_sort)
+ // });
+ // indexer.RebuildIndex();
+ // var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
- var s = (LuceneSearcher) searcher;
- var luceneSearcher = s.GetSearcher();
- var i = (LuceneIndexer) indexer;
+ // var s = (LuceneSearcher) searcher;
+ // var luceneSearcher = s.GetSearcher();
+ // var i = (LuceneIndexer) indexer;
- var numberSortedCriteria = searcher.CreateSearchCriteria()
- .ParentId(1148).And()
- .OrderBy(new SortableField("sortOrder", SortType.Int));
- var numberSortedResult = searcher.Search(numberSortedCriteria.Compile());
+ // var numberSortedCriteria = searcher.CreateSearchCriteria()
+ // .ParentId(1148).And()
+ // .OrderBy(new SortableField("sortOrder", SortType.Int));
+ // var numberSortedResult = searcher.Search(numberSortedCriteria.Compile());
- var stringSortedCriteria = searcher.CreateSearchCriteria()
- .ParentId(1148).And()
- .OrderBy("sortOrder"); //will default to string
- var stringSortedResult = searcher.Search(stringSortedCriteria.Compile());
+ // var stringSortedCriteria = searcher.CreateSearchCriteria()
+ // .ParentId(1148).And()
+ // .OrderBy("sortOrder"); //will default to string
+ // var stringSortedResult = searcher.Search(stringSortedCriteria.Compile());
- Assert.AreEqual(12, numberSortedResult.TotalItemCount);
- Assert.AreEqual(12, stringSortedResult.TotalItemCount);
+ // Assert.AreEqual(12, numberSortedResult.TotalItemCount);
+ // Assert.AreEqual(12, stringSortedResult.TotalItemCount);
- Assert.IsTrue(IsSortedByNumber(numberSortedResult));
- Assert.IsFalse(IsSortedByNumber(stringSortedResult));
- }
- }
+ // Assert.IsTrue(IsSortedByNumber(numberSortedResult));
+ // Assert.IsFalse(IsSortedByNumber(stringSortedResult));
+ // }
+ // }
- private bool IsSortedByNumber(IEnumerable results)
- {
- var currentSort = 0;
- foreach (var searchResult in results)
- {
- var sort = int.Parse(searchResult.Fields["sortOrder"]);
- if (currentSort >= sort)
- {
- return false;
- }
- currentSort = sort;
- }
- return true;
- }
+ // private bool IsSortedByNumber(IEnumerable results)
+ // {
+ // var currentSort = 0;
+ // foreach (var searchResult in results)
+ // {
+ // var sort = int.Parse(searchResult.Fields["sortOrder"]);
+ // if (currentSort >= sort)
+ // {
+ // return false;
+ // }
+ // currentSort = sort;
+ // }
+ // return true;
+ // }
- //[Test]
- //public void Test_Index_Type_With_German_Analyzer()
- //{
- // using (var luceneDir = new RAMDirectory())
- // {
- // var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir,
- // new GermanAnalyzer());
- // indexer.RebuildIndex();
- // var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
- // }
- //}
+ // //[Test]
+ // //public void Test_Index_Type_With_German_Analyzer()
+ // //{
+ // // using (var luceneDir = new RAMDirectory())
+ // // {
+ // // var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir,
+ // // new GermanAnalyzer());
+ // // indexer.RebuildIndex();
+ // // var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ // // }
+ // //}
- //private readonly TestContentService _contentService = new TestContentService();
- //private readonly TestMediaService _mediaService = new TestMediaService();
- //private static UmbracoExamineSearcher _searcher;
- //private static UmbracoContentIndexer _indexer;
- //private Lucene.Net.Store.Directory _luceneDir;
+ // //private readonly TestContentService _contentService = new TestContentService();
+ // //private readonly TestMediaService _mediaService = new TestMediaService();
+ // //private static UmbracoExamineSearcher _searcher;
+ // //private static UmbracoContentIndexer _indexer;
+ // //private Lucene.Net.Store.Directory _luceneDir;
- }
+ //}
}