From 7b73ed1796f24218611e8bc1b7eff3065bfe4b05 Mon Sep 17 00:00:00 2001 From: Andy Rose Date: Thu, 29 Oct 2015 15:27:54 +0000 Subject: [PATCH] U4-6980: Adding supporting unit tests for changes to the template repository --- .../Templates/TemplateRepositoryTests.cs | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/Umbraco.Tests/Templates/TemplateRepositoryTests.cs diff --git a/src/Umbraco.Tests/Templates/TemplateRepositoryTests.cs b/src/Umbraco.Tests/Templates/TemplateRepositoryTests.cs new file mode 100644 index 0000000000..c385799411 --- /dev/null +++ b/src/Umbraco.Tests/Templates/TemplateRepositoryTests.cs @@ -0,0 +1,109 @@ +using Moq; +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Umbraco.Core; +using Umbraco.Core.Configuration.UmbracoSettings; +using Umbraco.Core.IO; +using Umbraco.Core.Logging; +using Umbraco.Core.Models; +using Umbraco.Core.Persistence.Repositories; +using Umbraco.Core.Persistence.SqlSyntax; +using Umbraco.Core.Persistence.UnitOfWork; + +namespace Umbraco.Tests.Templates +{ + [TestFixture] + public class TemplateRepositoryTests + { + private readonly Mock _unitOfWorkMock = new Mock(); + private readonly Mock _cacheMock = new Mock(); + private TemplateRepository _templateRepository; + private readonly Mock _viewFileSystemMock = new Mock(); + private readonly Mock _masterpageFileSystemMock = new Mock(); + private readonly Mock _templateConfigMock = new Mock(); + + [SetUp] + public void Setup() + { + var loggerMock = new Mock(); + var sqlSyntaxMock = new Mock(); + _templateRepository = new TemplateRepository(_unitOfWorkMock.Object, _cacheMock.Object, loggerMock.Object, sqlSyntaxMock.Object, _masterpageFileSystemMock.Object, _viewFileSystemMock.Object, _templateConfigMock.Object); + + } + + [Test] + public void DetermineTemplateRenderingEngine_Returns_MVC_When_ViewFile_Exists_And_Content_Has_Webform_Markup() + { + // Project in MVC mode + _templateConfigMock.Setup(x => x.DefaultRenderingEngine).Returns(RenderingEngine.Mvc); + + // Template has masterpage content + var templateMock = new Mock(); + templateMock.Setup(x => x.Alias).Returns("Something"); + templateMock.Setup(x => x.Content).Returns(""); + + // but MVC View already exists + _viewFileSystemMock.Setup(x => x.FileExists(It.IsAny())).Returns(true); + + var res = _templateRepository.DetermineTemplateRenderingEngine(templateMock.Object); + Assert.AreEqual(RenderingEngine.Mvc, res); + } + + [Test] + public void DetermineTemplateRenderingEngine_Returns_WebForms_When_ViewFile_Doesnt_Exist_And_Content_Has_Webform_Markup() + { + // Project in MVC mode + _templateConfigMock.Setup(x => x.DefaultRenderingEngine).Returns(RenderingEngine.Mvc); + + // Template has masterpage content + var templateMock = new Mock(); + templateMock.Setup(x => x.Alias).Returns("Something"); + templateMock.Setup(x => x.Content).Returns(""); + + // MVC View doesn't exist + _viewFileSystemMock.Setup(x => x.FileExists(It.IsAny())).Returns(false); + + var res = _templateRepository.DetermineTemplateRenderingEngine(templateMock.Object); + Assert.AreEqual(RenderingEngine.WebForms, res); + } + + [Test] + public void DetermineTemplateRenderingEngine_Returns_WebForms_When_MasterPage_Exists_And_In_Mvc_Mode() + { + // Project in MVC mode + _templateConfigMock.Setup(x => x.DefaultRenderingEngine).Returns(RenderingEngine.Mvc); + + var templateMock = new Mock(); + templateMock.Setup(x => x.Alias).Returns("Something"); + + // but masterpage already exists + _viewFileSystemMock.Setup(x => x.FileExists(It.IsAny())).Returns(false); + _masterpageFileSystemMock.Setup(x => x.FileExists(It.IsAny())).Returns(true); + + var res = _templateRepository.DetermineTemplateRenderingEngine(templateMock.Object); + Assert.AreEqual(RenderingEngine.WebForms, res); + } + + [Test] + public void DetermineTemplateRenderingEngine_Returns_Mvc_When_ViewPage_Exists_And_In_Webforms_Mode() + { + // Project in WebForms mode + _templateConfigMock.Setup(x => x.DefaultRenderingEngine).Returns(RenderingEngine.WebForms); + + var templateMock = new Mock(); + templateMock.Setup(x => x.Alias).Returns("Something"); + + // but MVC View already exists + _viewFileSystemMock.Setup(x => x.FileExists(It.IsAny())).Returns(true); + _masterpageFileSystemMock.Setup(x => x.FileExists(It.IsAny())).Returns(false); + + var res = _templateRepository.DetermineTemplateRenderingEngine(templateMock.Object); + Assert.AreEqual(RenderingEngine.Mvc, res); + } + + } +}