コード例 #1
0
            public void WillFlushAllKeysWhenPassedGuidIsEmpty()
            {
                var testable   = new TestableLocalDiskStore();
                var urlBuilder = new UriBuilder(testable.Mock <IRRConfiguration>().Object);

                testable.Inject(urlBuilder);
                var guid1 = Guid.NewGuid();
                var guid2 = Guid.NewGuid();

                testable.Mock <IRRConfiguration>().Setup(x => x.ResourceVirtualPath).Returns("/dir");
                testable.Mock <IRRConfiguration>().Setup(x => x.ResourcePhysicalPath).Returns("c:\\web\\dir");
                testable.Inject <IUriBuilder>(urlBuilder);
                var file1 = new DatedFileEntry(urlBuilder.BuildResourceUrl <CssResource>(guid1, new byte[] { 1 }).Replace("/dir", "c:\\dir").Replace('/', '\\'), DateTime.Now);
                var file2 = new DatedFileEntry(urlBuilder.BuildResourceUrl <CssResource>(guid2, new byte[] { 1 }).Replace("/dir", "c:\\dir").Replace('/', '\\'), DateTime.Now);

                testable.Mock <IFileWrapper>().Setup(x => x.GetDatedFiles("c:\\web\\dir", "*RequestReduce*")).Returns(new List <DatedFileEntry> {
                    file1, file2
                });
                testable.Mock <IFileWrapper>().Setup(x => x.GetFiles("c:\\web\\dir")).Returns(new string[] { file1.FileName, file2.FileName });

                testable.ClassUnderTest.Flush(Guid.Empty);

                testable.Mock <IFileWrapper>().Verify(x => x.RenameFile(file1.FileName, file1.FileName.Replace(guid1.RemoveDashes(), guid1.RemoveDashes() + "-Expired")));
                testable.Mock <IFileWrapper>().Verify(x => x.RenameFile(file2.FileName, file2.FileName.Replace(guid2.RemoveDashes(), guid2.RemoveDashes() + "-Expired")));
            }
コード例 #2
0
            public void WillNotReturnExpiredKeys()
            {
                var testable = new TestableRepository();
                var builder  = new RequestReduce.Utilities.UriBuilder(testable.Mock <IRRConfiguration>().Object);
                var id       = Guid.NewGuid();
                var id2      = Guid.NewGuid();
                var file     = new RequestReduceFile()
                {
                    Content             = new byte[] { 1 },
                    FileName            = builder.BuildResourceUrl <CssResource>(id, new byte[] { 1 }),
                    Key                 = id,
                    LastUpdated         = DateTime.Now,
                    OriginalName        = "originalName",
                    RequestReduceFileId = Hasher.Hash(new byte[] { 1 }),
                    IsExpired           = true
                };
                var file2 = new RequestReduceFile()
                {
                    Content             = new byte[] { 1 },
                    FileName            = builder.BuildResourceUrl <CssResource>(id2, new byte[] { 2 }),
                    Key                 = id2,
                    LastUpdated         = DateTime.Now,
                    OriginalName        = "originalName2",
                    RequestReduceFileId = Hasher.Hash(new byte[] { 2 })
                };

                testable.ClassUnderTest.Save(file);
                testable.ClassUnderTest.Save(file2);

                var result = testable.ClassUnderTest.GetActiveFiles();

                Assert.Equal(1, result.Count());
                Assert.Equal(file2.FileName, result.First());
                Assert.True(result.Contains(file2.FileName));
            }
コード例 #3
0
        public SqlServerStoreFacts()
        {
            var dataDir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName +
                          "\\RequestReduce.SampleWeb\\App_Data";

            if (Directory.Exists(dataDir))
            {
                File.Delete(dataDir + "\\RequestReduce.sdf");
            }
            else
            {
                Directory.CreateDirectory(dataDir);
            }

            RequestReduceDB.DefaultProviderName = "System.Data.SQLite";
            var mockConfig = new Mock <IRRConfiguration>();

            mockConfig.Setup(x => x.ConnectionStringName).Returns("data source=" + dataDir + "\\RequestReduce.sdf;Version=3;");
            config = mockConfig.Object;
            repo   = new FileRepository(config);
            IntegrationFactHelper.RecyclePool();
            repo.GetDatabase().Execute(SqliteHelper.GetSqlLightSafeSql());
            rrFolder   = IntegrationFactHelper.ResetPhysicalContentDirectoryAndConfigureStore(Configuration.Store.SqlServerStore, 3000);
            uriBuilder = new UriBuilder(config);
        }
コード例 #4
0
            public void WillUseHashOfUrlsIfNoKeyIsGiven()
            {
                var testable = new TestableJavaScriptReducer();

                testable.Mock <IRRConfiguration>().Setup(x => x.SpriteVirtualPath).Returns("spritedir");
                var guid    = Hasher.Hash("http://host/js1.js::http://host/js2.js");
                var builder = new UriBuilder(testable.Mock <IRRConfiguration>().Object);

                var result = testable.ClassUnderTest.Process("http://host/js1.js::http://host/js2.js");

                Assert.Equal(guid, builder.ParseKey(result));
            }
コード例 #5
0
            public void WillReturnProcessedJsUrlWithKeyInPath()
            {
                var testable = new TestableJavaScriptReducer();

                testable.Mock <IRRConfiguration>().Setup(x => x.SpriteVirtualPath).Returns("spritedir");
                var guid    = Guid.NewGuid();
                var builder = new UriBuilder(testable.Mock <IRRConfiguration>().Object);

                var result = testable.ClassUnderTest.Process(guid, "http://host/js1.js::http://host/js2.js", string.Empty);

                Assert.Equal(guid, builder.ParseKey(result));
            }
コード例 #6
0
 public SqlServerStoreFacts()
 {
     var dataDir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName +
                   "\\RequestReduce.SampleWeb\\App_Data";
     if (!Directory.Exists(dataDir))
         Directory.CreateDirectory(dataDir);
     Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");
     var mockConfig = new Mock<IRRConfiguration>();
     mockConfig.Setup(x => x.ConnectionStringName).Returns("data source=" + dataDir + "\\RequestReduce.sdf");
     config = mockConfig.Object;
     repo = new FileRepository(config);
     repo.Context.Database.Delete();
     rrFolder = IntegrationFactHelper.ResetPhysicalContentDirectoryAndConfigureStore(Configuration.Store.SqlServerStore);
     uriBuilder = new UriBuilder(config);
 }
コード例 #7
0
        public SqlServerStoreFacts()
        {
            var dataDir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName +
                          "\\RequestReduce.SampleWeb\\App_Data";
            if (Directory.Exists(dataDir))
                File.Delete(dataDir + "\\RequestReduce.sdf");
            else
                Directory.CreateDirectory(dataDir);

            RequestReduceDB.DefaultProviderName = "System.Data.SQLite";
            var mockConfig = new Mock<IRRConfiguration>();
            mockConfig.Setup(x => x.ConnectionStringName).Returns("data source=" + dataDir + "\\RequestReduce.sdf;Version=3;");
            config = mockConfig.Object;
            repo = new FileRepository(config);
            IntegrationFactHelper.RecyclePool();
            repo.GetDatabase().Execute(SqliteHelper.GetSqlLightSafeSql());
            rrFolder = IntegrationFactHelper.ResetPhysicalContentDirectoryAndConfigureStore(Configuration.Store.SqlServerStore, 3000);
            uriBuilder = new UriBuilder(config);
        }
コード例 #8
0
            public void WillExpireFile()
            {
                var testable   = new TestableLocalDiskStore();
                var key        = Guid.NewGuid();
                var urlBuilder = new UriBuilder(testable.Mock <IRRConfiguration>().Object);

                testable.Mock <IRRConfiguration>().Setup(x => x.ResourceVirtualPath).Returns("/RRContent");
                testable.Mock <IRRConfiguration>().Setup(x => x.ResourcePhysicalPath).Returns("c:\\RRContent");
                testable.Inject <IUriBuilder>(urlBuilder);
                var file1 = urlBuilder.BuildResourceUrl <CssResource>(key, new byte[] { 1 }).Replace("/RRContent", "c:\\RRContent").Replace('/', '\\');
                var file2 = urlBuilder.BuildSpriteUrl(key, new byte[] { 1 }).Replace("/RRContent", "c:\\RRContent").Replace('/', '\\');

                testable.Mock <IFileWrapper>().Setup(x => x.GetFiles("c:\\RRContent")).Returns(new string[]
                                                                                               { file1, file2 });

                testable.ClassUnderTest.Flush(key);

                testable.Mock <IFileWrapper>().Verify(x => x.RenameFile(file1, file1.Replace(key.RemoveDashes(), key.RemoveDashes() + "-Expired")));
                testable.Mock <IFileWrapper>().Verify(x => x.RenameFile(file2, file2.Replace(key.RemoveDashes(), key.RemoveDashes() + "-Expired")));
            }
コード例 #9
0
        public SqlServerStoreFacts()
        {
            var dataDir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName +
                          "\\RequestReduce.SampleWeb\\App_Data";

            if (!Directory.Exists(dataDir))
            {
                Directory.CreateDirectory(dataDir);
            }
            Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");
            var mockConfig = new Mock <IRRConfiguration>();

            mockConfig.Setup(x => x.ConnectionStringName).Returns("data source=" + dataDir + "\\RequestReduce.sdf");
            config = mockConfig.Object;
            repo   = new FileRepository(config);
            IntegrationFactHelper.RecyclePool();
            repo.Context.Database.Delete();
            repo.Context.Database.Create();
            rrFolder   = IntegrationFactHelper.ResetPhysicalContentDirectoryAndConfigureStore(Configuration.Store.SqlServerStore, 3000);
            uriBuilder = new UriBuilder(config);
        }
コード例 #10
0
 public ModuleFacts()
 {
     rrFolder = IntegrationFactHelper.ResetPhysicalContentDirectoryAndConfigureStore(Configuration.Store.LocalDiskStore, Timeout.Infinite);
     uriBuilder = new UriBuilder(new Mock<IRRConfiguration>().Object);
 }
コード例 #11
0
 public ModuleFacts()
 {
     rrFolder   = IntegrationFactHelper.ResetPhysicalContentDirectoryAndConfigureStore(Configuration.Store.LocalDiskStore, Timeout.Infinite);
     uriBuilder = new UriBuilder(new Mock <IRRConfiguration>().Object);
 }
コード例 #12
0
            public void WillReturnMostRecentActiveEntryPerKey()
            {
                var testable = new TestableRepository();
                var builder  = new RequestReduce.Utilities.UriBuilder(testable.Mock <IRRConfiguration>().Object);
                var id       = Guid.NewGuid();
                var id2      = Guid.NewGuid();
                var file     = new RequestReduceFile()
                {
                    Content             = new byte[] { 1 },
                    FileName            = builder.BuildResourceUrl <CssResource>(id, new byte[] { 1 }),
                    Key                 = id,
                    LastUpdated         = DateTime.Now,
                    OriginalName        = "originalName",
                    RequestReduceFileId = Hasher.Hash(new byte[] { 1 }),
                    IsExpired           = true
                };
                var file2 = new RequestReduceFile()
                {
                    Content             = new byte[] { 1 },
                    FileName            = builder.BuildResourceUrl <CssResource>(id, new byte[] { 2 }),
                    Key                 = id,
                    LastUpdated         = DateTime.Now.Subtract(new TimeSpan(0, 0, 2)),
                    OriginalName        = "originalName2",
                    RequestReduceFileId = Hasher.Hash(new byte[] { 2 })
                };
                var file3 = new RequestReduceFile()
                {
                    Content             = new byte[] { 1 },
                    FileName            = builder.BuildResourceUrl <CssResource>(id, new byte[] { 3 }),
                    Key                 = id,
                    LastUpdated         = DateTime.Now.Subtract(new TimeSpan(0, 0, 3)),
                    OriginalName        = "originalName2",
                    RequestReduceFileId = Hasher.Hash(new byte[] { 3 })
                };
                var file4 = new RequestReduceFile()
                {
                    Content             = new byte[] { 1 },
                    FileName            = builder.BuildResourceUrl <CssResource>(id2, new byte[] { 4 }),
                    Key                 = id2,
                    LastUpdated         = DateTime.Now.Subtract(new TimeSpan(0, 0, 3)),
                    OriginalName        = "originalName2",
                    RequestReduceFileId = Hasher.Hash(new byte[] { 4 })
                };
                var file5 = new RequestReduceFile()
                {
                    Content             = new byte[] { 1 },
                    FileName            = "file.png",
                    Key                 = id2,
                    LastUpdated         = DateTime.Now,
                    OriginalName        = "originalName2",
                    RequestReduceFileId = Hasher.Hash(new byte[] { 5 })
                };

                testable.ClassUnderTest.Save(file);
                testable.ClassUnderTest.Save(file2);
                testable.ClassUnderTest.Save(file3);
                testable.ClassUnderTest.Save(file4);
                testable.ClassUnderTest.Save(file5);

                var result = testable.ClassUnderTest.GetActiveFiles();

                Assert.Equal(2, result.Count());
                Assert.True(result.Contains(file2.FileName));
                Assert.True(result.Contains(file4.FileName));
            }