diff --git a/src/CompressR.MVCUnitTests/CompressR.MVCUnitTests.csproj b/src/CompressR.MVCUnitTests/CompressR.MVCUnitTests.csproj
index 34dc299..6988f13 100644
--- a/src/CompressR.MVCUnitTests/CompressR.MVCUnitTests.csproj
+++ b/src/CompressR.MVCUnitTests/CompressR.MVCUnitTests.csproj
@@ -33,8 +33,45 @@
4
+
+ ..\..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll
+ True
+
+
+ ..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
+ True
+
+
+ ..\..\packages\Moq.4.5.10\lib\net45\Moq.dll
+ True
+
+
+
+ ..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll
+ True
+
+
+ ..\..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll
+ True
+
+
+ ..\..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll
+ True
+
+
+ ..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll
+ True
+
+
+ ..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll
+ True
+
+
+ ..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll
+ True
+
@@ -60,6 +97,7 @@
+
@@ -70,6 +108,10 @@
{256f0ecd-0310-4de9-8334-31a3d3867925}
CompressR.MVC5
+
+ {c94378c3-4aa8-4f49-8720-77d14b62f72e}
+ CompressR
+
diff --git a/src/CompressR.MVCUnitTests/CompressionFactoryTests.cs b/src/CompressR.MVCUnitTests/CompressionFactoryTests.cs
new file mode 100644
index 0000000..3f800e7
--- /dev/null
+++ b/src/CompressR.MVCUnitTests/CompressionFactoryTests.cs
@@ -0,0 +1,126 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Compression;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Web;
+using System.Web.Mvc;
+using System.Web.Routing;
+using Moq;
+using Xunit;
+
+namespace CompressR.MVCUnitTests
+{
+ public class CompressionFactoryTests
+ {
+ [Fact]
+ public void ShouldThrowWhenRequired()
+ {
+ var request = new Mock();
+ request.Setup(a => a.Headers).Returns(new System.Collections.Specialized.NameValueCollection() { });
+ var httpContext = new Moq.Mock();
+ httpContext.Setup(a => a.Request).Returns(request.Object);
+ Assert.Throws(typeof(CompressR.Exceptions.CompressRException), () => {
+
+ CompressR.MVC.CompressFactory.Compress(new System.Web.Mvc.ActionExecutingContext()
+ {
+ HttpContext = httpContext.Object
+ }, true);
+ });
+
+ }
+ [Fact]
+ public void ShouldNotThrowButAlsoNotCompressIfFalse()
+ {
+ var request = new Mock();
+ request.Setup(a => a.Headers).Returns(new System.Collections.Specialized.NameValueCollection() { });
+ var httpContext = new Moq.Mock();
+ httpContext.Setup(a => a.Request).Returns(request.Object);
+ var response = new Mock();
+ httpContext.Setup(a => a.Response).Returns(response.Object);
+ var contextObject = httpContext.Object;
+ CompressR.MVC.CompressFactory.Compress(new System.Web.Mvc.ActionExecutingContext()
+ {
+ HttpContext = contextObject
+ }, false);
+ Assert.Null(contextObject.Response.Filter);
+
+ }
+ [Fact]
+ public void ShouldGzipWhenRequested()
+ {
+
+ var request = new Mock();
+ request.Setup(a => a.Headers).Returns(new System.Collections.Specialized.NameValueCollection() { ["Accept-Encoding"] = "gzip" });
+ var requestContextBase = new Mock();
+ requestContextBase.Setup(a => a.Request).Returns(request.Object);
+ var requestContext = new Mock();
+ requestContext.Setup(a => a.HttpContext).Returns(requestContextBase.Object);
+ var cachePolicy = new Mock();
+ cachePolicy.Setup(a => a.VaryByHeaders).Returns(new HttpCacheVaryByHeaders());
+ //var httpContext = new Moq.Mock();
+ var response = new Mock();
+ response.Setup(a => a.Headers).Returns(new System.Collections.Specialized.NameValueCollection());
+ response.SetupProperty(a => a.Filter, new MemoryStream(Encoding.UTF8.GetBytes("awesome")) { });
+ response.Setup(a => a.Cache).Returns(cachePolicy.Object);
+ var responseContext = new Mock();
+ responseContext.Setup(a => a.Response).Returns(response.Object);
+
+ requestContextBase.Setup(a => a.Response).Returns(response.Object);
+ var httpContext = new ActionExecutingContext()
+ {
+ RequestContext = new System.Web.Routing.RequestContext()
+ {
+ HttpContext = requestContextBase.Object
+ }
+ };
+
+ //httpContext.Setup(a=>a.RequestContext.Filter).Returns(new MemoryStream(Encoding.UTF8.GetBytes("awesome")) { } );
+ //var response = new Mock();
+ //httpContext.Setup(a => a.Response).Returns(response.Object);
+ //var contextObject = httpContext;
+ CompressR.MVC.CompressFactory.Compress(httpContext, false);
+ Assert.IsType(httpContext.RequestContext.HttpContext.Response.Filter);
+
+ }
+ [Fact]
+ public void ShouldDeflateWhenRequested()
+ {
+
+ var request = new Mock();
+ request.Setup(a => a.Headers).Returns(new System.Collections.Specialized.NameValueCollection() { ["Accept-Encoding"] = "deflate" });
+ var requestContextBase = new Mock();
+ requestContextBase.Setup(a => a.Request).Returns(request.Object);
+ var requestContext = new Mock();
+ requestContext.Setup(a => a.HttpContext).Returns(requestContextBase.Object);
+ var cachePolicy = new Mock();
+ cachePolicy.Setup(a => a.VaryByHeaders).Returns(new HttpCacheVaryByHeaders());
+ //var httpContext = new Moq.Mock();
+ var response = new Mock();
+ response.Setup(a => a.Headers).Returns(new System.Collections.Specialized.NameValueCollection());
+ response.SetupProperty(a => a.Filter, new MemoryStream(Encoding.UTF8.GetBytes("awesome")) { });
+ response.Setup(a => a.Cache).Returns(cachePolicy.Object);
+ var responseContext = new Mock();
+ responseContext.Setup(a => a.Response).Returns(response.Object);
+
+ requestContextBase.Setup(a => a.Response).Returns(response.Object);
+ var httpContext = new ActionExecutingContext()
+ {
+ RequestContext = new System.Web.Routing.RequestContext()
+ {
+ HttpContext = requestContextBase.Object
+ }
+ };
+
+ //httpContext.Setup(a=>a.RequestContext.Filter).Returns(new MemoryStream(Encoding.UTF8.GetBytes("awesome")) { } );
+ //var response = new Mock();
+ //httpContext.Setup(a => a.Response).Returns(response.Object);
+ //var contextObject = httpContext;
+ CompressR.MVC.CompressFactory.Compress(httpContext, false);
+ Assert.IsType(httpContext.RequestContext.HttpContext.Response.Filter);
+
+ }
+ }
+}
diff --git a/src/CompressR.MVCUnitTests/packages.config b/src/CompressR.MVCUnitTests/packages.config
index 30b6958..5f34474 100644
--- a/src/CompressR.MVCUnitTests/packages.config
+++ b/src/CompressR.MVCUnitTests/packages.config
@@ -1,5 +1,11 @@
+
+
+
+
+
+