From abe3efa9a124b0434f58250d7a0a907a3b072d50 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 17 Sep 2013 11:35:08 +1000 Subject: [PATCH] Replaces Rhino mocks with Moq... so much nicer/easier. --- src/Umbraco.Tests/Models/ContentTests.cs | 14 ++--- .../Models/DataValueSetterTests.cs | 57 ++++++++---------- .../ContentFinderByPageIdQueryTests.cs | 8 ++- .../Routing/RouteTestExtensions.cs | 5 +- .../TestHelpers/FakeHttpContextFactory.cs | 60 ++++++++++--------- src/Umbraco.Tests/Umbraco.Tests.csproj | 6 +- src/Umbraco.Tests/packages.config | 2 +- 7 files changed, 76 insertions(+), 76 deletions(-) diff --git a/src/Umbraco.Tests/Models/ContentTests.cs b/src/Umbraco.Tests/Models/ContentTests.cs index 0268689d39..beae30fd77 100644 --- a/src/Umbraco.Tests/Models/ContentTests.cs +++ b/src/Umbraco.Tests/Models/ContentTests.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; +using Moq; using NUnit.Framework; -using Rhino.Mocks; using Umbraco.Core.Models; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; @@ -94,14 +94,14 @@ namespace Umbraco.Tests.Models var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1); var stream = new MemoryStream(System.Text.Encoding.Default.GetBytes("TestContent")); - var httpPostedFileBase = MockRepository.GenerateMock(); - httpPostedFileBase.Stub(x => x.ContentLength).Return(Convert.ToInt32(stream.Length)); - httpPostedFileBase.Stub(x => x.ContentType).Return("text/plain"); - httpPostedFileBase.Stub(x => x.FileName).Return("sample.txt"); - httpPostedFileBase.Stub(x => x.InputStream).Return(stream); + var postedFileMock = new Mock(); + postedFileMock.Setup(x => x.ContentLength).Returns(Convert.ToInt32(stream.Length)); + postedFileMock.Setup(x => x.ContentType).Returns("text/plain"); + postedFileMock.Setup(x => x.FileName).Returns("sample.txt"); + postedFileMock.Setup(x => x.InputStream).Returns(stream); // Assert - content.SetValue("title", httpPostedFileBase); + content.SetValue("title", postedFileMock.Object); // Assert Assert.That(content.Properties.Any(), Is.True); diff --git a/src/Umbraco.Tests/Models/DataValueSetterTests.cs b/src/Umbraco.Tests/Models/DataValueSetterTests.cs index 891c53dd0d..1785bda3c7 100644 --- a/src/Umbraco.Tests/Models/DataValueSetterTests.cs +++ b/src/Umbraco.Tests/Models/DataValueSetterTests.cs @@ -1,9 +1,8 @@ using System; using System.Diagnostics; using System.Xml; +using Moq; using NUnit.Framework; -using Rhino.Mocks; -using Rhino.Mocks.Interfaces; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -26,37 +25,35 @@ namespace Umbraco.Tests.Models public void LoadValueFromDatabase_Is_Not_Called_When_SetValue_Is_Used() { // Arrange - var baseDataType = MockRepository.GenerateStub(); - var dataTypeData = MockRepository.GenerateMock(baseDataType); - dataTypeData.Stub(x => x.Value).CallOriginalMethod(OriginalCallOptions.NoExpectation); + var dataTypeMock = new Mock(); + var dataTypeDataMock = new Mock(dataTypeMock.Object); // Act - ((IDataValueSetter)dataTypeData).SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString()); - var val = dataTypeData.Value; + ((IDataValueSetter)dataTypeDataMock.Object).SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString()); + var val = dataTypeDataMock.Object.Value; // Assert - dataTypeData.AssertWasNotCalled(data => data.LoadValueFromDatabase()); + dataTypeDataMock.Verify(data => data.LoadValueFromDatabase(), Times.Never()); } [Test] public void LoadValueFromDatabase_Is_Called_When_SetValue_Is_Not_Used() { // Arrange - var baseDataType = MockRepository.GenerateStub(); - var dataTypeData = MockRepository.GenerateMock(baseDataType); - dataTypeData - .Stub(data => data.LoadValueFromDatabase()).WhenCalled(invocation => Debug.WriteLine("asdf")); - dataTypeData.Stub(x => x.Value).CallOriginalMethod(OriginalCallOptions.NoExpectation); + var dataTypeMock = new Mock(); + var dataTypeDataMock = new Mock(dataTypeMock.Object) {CallBase = true}; + dataTypeDataMock + .Setup(data => data.LoadValueFromDatabase()).Callback(() => Debug.WriteLine("asdf")); // Act - var val = dataTypeData.Value; + var val = dataTypeDataMock.Object.Value; // Assert - dataTypeData.AssertWasCalled(data => data.LoadValueFromDatabase()); + dataTypeDataMock.Verify(data => data.LoadValueFromDatabase()); } [Test] @@ -65,22 +62,18 @@ namespace Umbraco.Tests.Models // Arrange var dataTypeId = Guid.NewGuid(); - var dataTypeData = MockRepository.GenerateMock(); - - dataTypeData - .Stub(data => data.ToXMl(Arg.Is.Anything)) - .Return(null) // you have to call Return() even though we're about to override it - .WhenCalled(invocation => - { - var xmlDoc = (XmlDocument) invocation.Arguments[0]; - invocation.ReturnValue = xmlDoc.CreateElement("test"); - }); + var dataTypeDataMock = new Mock(); + var dataValueSetterMock = dataTypeDataMock.As(); - var dataType = MockRepository.GenerateStub(); - dataType.Stub(type => type.Data).Return(dataTypeData); + dataTypeDataMock + .Setup(data => data.ToXMl(It.IsAny())) + .Returns((XmlDocument xdoc) => xdoc.CreateElement("test")); - var dataTypeSvc = MockRepository.GenerateStub(); - dataTypeSvc.Stub(service => service.GetDataTypeById(dataTypeId)).Return(dataType); + var dataTypeMock = new Mock(); + dataTypeMock.Setup(type => type.Data).Returns(dataTypeDataMock.Object); + + var dataTypeSvcMock = new Mock(); + dataTypeSvcMock.Setup(service => service.GetDataTypeById(dataTypeId)).Returns(dataTypeMock.Object); var property = new Property( 1234, @@ -92,11 +85,11 @@ namespace Umbraco.Tests.Models // Act - var xml = property.ToXml(dataTypeSvc); + var xml = property.ToXml(dataTypeSvcMock.Object); // Assert - ((IDataValueSetter)dataTypeData).AssertWasCalled(setter => setter.SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString())); + dataValueSetterMock.Verify(setter => setter.SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString())); } [TestCase(DataTypeDatabaseType.Nvarchar)] @@ -105,7 +98,7 @@ namespace Umbraco.Tests.Models [TestCase(DataTypeDatabaseType.Ntext)] public void DefaultData_SetValue_Ensures_Empty_String_When_Null_Value_Any_Data_Type(DataTypeDatabaseType type) { - var defaultData = new DefaultData(MockRepository.GenerateMock()); + var defaultData = new DefaultData(new Mock().Object); ((IDataValueSetter)defaultData).SetValue(null, type.ToString()); diff --git a/src/Umbraco.Tests/Routing/ContentFinderByPageIdQueryTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByPageIdQueryTests.cs index 4807a02ae1..c21360fa7c 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByPageIdQueryTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByPageIdQueryTests.cs @@ -1,5 +1,5 @@ +using Moq; using NUnit.Framework; -using Rhino.Mocks; using Umbraco.Tests.TestHelpers; using Umbraco.Web.Routing; using umbraco.BusinessLogic; @@ -31,8 +31,10 @@ namespace Umbraco.Tests.Routing var lookup = new ContentFinderByPageIdQuery(); //we need to manually stub the return output of HttpContext.Request["umbPageId"] - routingContext.UmbracoContext.HttpContext.Request.Stub(x => x["umbPageID"]) - .Return(routingContext.UmbracoContext.HttpContext.Request.QueryString["umbPageID"]); + var requestMock = Mock.Get(routingContext.UmbracoContext.HttpContext.Request); + + requestMock.Setup(x => x["umbPageID"]) + .Returns(routingContext.UmbracoContext.HttpContext.Request.QueryString["umbPageID"]); var result = lookup.TryFindContent(docRequest); diff --git a/src/Umbraco.Tests/Routing/RouteTestExtensions.cs b/src/Umbraco.Tests/Routing/RouteTestExtensions.cs index 09c1635f63..a47ed3ef02 100644 --- a/src/Umbraco.Tests/Routing/RouteTestExtensions.cs +++ b/src/Umbraco.Tests/Routing/RouteTestExtensions.cs @@ -1,6 +1,6 @@ using System.Web; using System.Web.Routing; -using Rhino.Mocks; +using Moq; using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.Routing @@ -31,7 +31,8 @@ namespace Umbraco.Tests.Routing var data = routes.GetRouteData(httpContext); //set the route data on the request context - httpContext.Request.RequestContext.Stub(x => x.RouteData).Return(data); + var requestMock = Mock.Get(httpContext.Request.RequestContext); + requestMock.Setup(x => x.RouteData).Returns(data); return data; } diff --git a/src/Umbraco.Tests/TestHelpers/FakeHttpContextFactory.cs b/src/Umbraco.Tests/TestHelpers/FakeHttpContextFactory.cs index 05ba17839c..556022dcde 100644 --- a/src/Umbraco.Tests/TestHelpers/FakeHttpContextFactory.cs +++ b/src/Umbraco.Tests/TestHelpers/FakeHttpContextFactory.cs @@ -6,7 +6,7 @@ using System.Security; using System.Text; using System.Web; using System.Web.Routing; -using Rhino.Mocks; +using Moq; namespace Umbraco.Tests.TestHelpers { @@ -53,55 +53,59 @@ namespace Umbraco.Tests.TestHelpers { //Request context - RequestContext = MockRepository.GenerateMock(); - + var requestContextMock = new Mock(); + //Cookie collection var cookieCollection = new HttpCookieCollection(); cookieCollection.Add(new HttpCookie("UMB_UCONTEXT", "FBA996E7-D6BE-489B-B199-2B0F3D2DD826")); //Request - var request = MockRepository.GenerateMock(); - request.Stub(x => x.AppRelativeCurrentExecutionFilePath).Return("~" + fullUrl.AbsolutePath); - request.Stub(x => x.PathInfo).Return(string.Empty); - request.Stub(x => x.RawUrl).Return(VirtualPathUtility.ToAbsolute("~" + fullUrl.AbsolutePath, "/")); - request.Stub(x => x.RequestContext).Return(RequestContext); - request.Stub(x => x.Url).Return(fullUrl); - request.Stub(x => x.ApplicationPath).Return("/"); - request.Stub(x => x.Cookies).Return(cookieCollection); - request.Stub(x => x.ServerVariables).Return(new NameValueCollection()); + var requestMock = new Mock(); + requestMock.Setup(x => x.AppRelativeCurrentExecutionFilePath).Returns("~" + fullUrl.AbsolutePath); + requestMock.Setup(x => x.PathInfo).Returns(string.Empty); + requestMock.Setup(x => x.RawUrl).Returns(VirtualPathUtility.ToAbsolute("~" + fullUrl.AbsolutePath, "/")); + requestMock.Setup(x => x.RequestContext).Returns(RequestContext); + requestMock.Setup(x => x.Url).Returns(fullUrl); + requestMock.Setup(x => x.ApplicationPath).Returns("/"); + requestMock.Setup(x => x.Cookies).Returns(cookieCollection); + requestMock.Setup(x => x.ServerVariables).Returns(new NameValueCollection()); var queryStrings = HttpUtility.ParseQueryString(fullUrl.Query); - request.Stub(x => x.QueryString).Return(queryStrings); - request.Stub(x => x.Form).Return(new NameValueCollection()); + requestMock.Setup(x => x.QueryString).Returns(queryStrings); + requestMock.Setup(x => x.Form).Returns(new NameValueCollection()); //Cache - var cache = MockRepository.GenerateMock(); + var cacheMock = new Mock(); //Response //var response = new FakeHttpResponse(); - var response = MockRepository.GenerateMock(); - response.Stub(x => x.ApplyAppPathModifier(null)).IgnoreArguments().Do(new Func(appPath => appPath)); - response.Stub(x => x.Cache).Return(cache); + var responseMock = new Mock(); + responseMock.Setup(x => x.ApplyAppPathModifier(It.IsAny())).Returns((string s) => s); + responseMock.Setup(x => x.Cache).Returns(cacheMock.Object); //Server - var server = MockRepository.GenerateStub(); - server.Stub(x => x.MapPath(Arg.Is.Anything)).Return(Environment.CurrentDirectory); + var serverMock = new Mock(); + serverMock.Setup(x => x.MapPath(It.IsAny())).Returns(Environment.CurrentDirectory); //HTTP Context - HttpContext = MockRepository.GenerateMock(); - HttpContext.Stub(x => x.Cache).Return(HttpRuntime.Cache); - HttpContext.Stub(x => x.Items).Return(new Dictionary()); - HttpContext.Stub(x => x.Request).Return(request); - HttpContext.Stub(x => x.Server).Return(server); - HttpContext.Stub(x => x.Response).Return(response); + var httpContextMock = new Mock(); + httpContextMock.Setup(x => x.Cache).Returns(HttpRuntime.Cache); + httpContextMock.Setup(x => x.Items).Returns(new Dictionary()); + httpContextMock.Setup(x => x.Request).Returns(requestMock.Object); + httpContextMock.Setup(x => x.Server).Returns(serverMock.Object); + httpContextMock.Setup(x => x.Response).Returns(responseMock.Object); - RequestContext.Stub(x => x.HttpContext).Return(HttpContext); + HttpContext = httpContextMock.Object; + + requestContextMock.Setup(x => x.HttpContext).Returns(httpContextMock.Object); if (routeData != null) { - RequestContext.Stub(x => x.RouteData).Return(routeData); + requestContextMock.Setup(x => x.RouteData).Returns(routeData); } + + RequestContext = requestContextMock.Object; } } diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index e8547ec121..68211f16ed 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -68,6 +68,9 @@ True ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + ..\packages\Moq.4.1.1309.1617\lib\net40\Moq.dll + False ..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll @@ -76,9 +79,6 @@ False ..\packages\NUnit.2.6.2\lib\nunit.framework.dll - - ..\packages\RhinoMocks.3.6.1\lib\net\Rhino.Mocks.dll - diff --git a/src/Umbraco.Tests/packages.config b/src/Umbraco.Tests/packages.config index fbf89daf7d..e9ff4d1afc 100644 --- a/src/Umbraco.Tests/packages.config +++ b/src/Umbraco.Tests/packages.config @@ -12,9 +12,9 @@ + -