public void WillGetNonExpiredCssUrlFromDb() { var testable = new TestableRepository(); var id = Guid.NewGuid(); var file = new RequestReduceFile() { Content = new byte[] { 1 }, FileName = "fileName1" + new CssResource().FileName, Key = id, LastUpdated = new DateTime(2010, 1, 1), OriginalName = "originalName", RequestReduceFileId = id, IsExpired = true }; testable.ClassUnderTest.Save(file); var file2 = new RequestReduceFile() { Content = new byte[] { 2 }, FileName = "fileName2" + new CssResource().FileName, Key = id, LastUpdated = new DateTime(2011, 1, 1), OriginalName = "originalName", RequestReduceFileId = Guid.NewGuid() }; testable.ClassUnderTest.Save(file2); var result = testable.ClassUnderTest.GetActiveUrlByKey(id, typeof(CssResource)); Assert.Equal(file2.FileName, result); testable.Dispose(); }
public void WillSaveToDatabaseUsingConnectionString() { var testable = new TestableRepository("Data Source=:memory:;Version=3;New=True"); var id = Guid.NewGuid(); var file = new RequestReduceFile() { Content = new byte[] { 1 }, FileName = "fileName", Key = Guid.NewGuid(), LastUpdated = DateTime.Now, OriginalName = "originalName", RequestReduceFileId = id }; testable.ClassUnderTest.Save(file); var savedFile = testable.ClassUnderTest.SingleOrDefault <RequestReduceFile>(id); Assert.Equal(file.Content.Length, savedFile.Content.Length); Assert.Equal(file.Content[0], savedFile.Content[0]); Assert.Equal(file.FileName, savedFile.FileName); Assert.Equal(file.Key, savedFile.Key); Assert.Equal(file.OriginalName, savedFile.OriginalName); Assert.Equal(file.RequestReduceFileId, savedFile.RequestReduceFileId); Assert.True((file.LastUpdated - savedFile.LastUpdated) <= TimeSpan.FromMilliseconds(4)); }
public void WillUpdateContentAndLastUpdatedTime() { var testable = new TestableRepository(); var id = Guid.NewGuid(); var file = new RequestReduceFile() { Content = new byte[] { 1 }, FileName = "fileName", Key = Guid.NewGuid(), LastUpdated = new DateTime(2010, 1, 1), OriginalName = "originalName", RequestReduceFileId = id }; testable.ClassUnderTest.Save(file); var file2 = new RequestReduceFile() { Content = new byte[] { 2 }, FileName = "fileName", Key = Guid.NewGuid(), OriginalName = "originalName", RequestReduceFileId = id }; testable.ClassUnderTest.Save(file2); var savedFile = testable.ClassUnderTest.SingleOrDefault <RequestReduceFile>(id); Assert.Equal(2, savedFile.Content[0]); Assert.True(savedFile.LastUpdated > new DateTime(2011, 1, 1)); }
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)); }
public void WillSaveCssToRepository() { var testable = new TestableSqlServerStore(); var content = new byte[] { 1 }; var url = "url"; var originalUrls = "originalUrls"; RequestReduceFile file = null; testable.Mock <IFileRepository>().Setup(x => x.Save(It.IsAny <RequestReduceFile>())).Callback <RequestReduceFile>(x => file = x); testable.Mock <IUriBuilder>().Setup(x => x.ParseFileName(url)).Returns("file.css"); var key = Guid.NewGuid(); var id = Hasher.Hash("file.css"); testable.Mock <IUriBuilder>().Setup(x => x.ParseKey(url)).Returns(key); testable.ClassUnderTest.Save(content, url, originalUrls); Assert.Equal(content, file.Content); Assert.Equal("file.css", file.FileName); Assert.Equal(key, file.Key); Assert.True(DateTime.Now.Subtract(file.LastUpdated).TotalMilliseconds < 1000); Assert.Equal(originalUrls, file.OriginalName); Assert.Equal(id, file.RequestReduceFileId); }
public void WillExpireDbFileEntity() { var testable = new TestableSqlServerStore(); var key = Guid.NewGuid(); var file1 = new RequestReduceFile() { IsExpired = false, RequestReduceFileId = Guid.NewGuid() }; var file2 = new RequestReduceFile() { IsExpired = false, RequestReduceFileId = Guid.NewGuid() }; testable.Mock <IFileRepository>().Setup(x => x.GetFilesFromKey(key)).Returns(new RequestReduceFile[] { file1, file2 }); bool expire1 = false; bool expire2 = false; testable.Mock <IFileRepository>().Setup(x => x.Update(file1)).Callback <RequestReduceFile>( y => expire1 = y.IsExpired); testable.Mock <IFileRepository>().Setup(x => x.Update(file2)).Callback <RequestReduceFile>( y => expire2 = y.IsExpired); testable.ClassUnderTest.Flush(key); Assert.True(expire1); Assert.True(expire2); }
public void WillSaveToDatabase() { var testable = new TestableRepository(); var id = Guid.NewGuid(); var file = new RequestReduceFile() { Content = new byte[] { 1 }, FileName = "fileName", Key = Guid.NewGuid(), LastUpdated = DateTime.Now, OriginalName = "originalName", RequestReduceFileId = id }; testable.ClassUnderTest.Save(file); var savedFile = testable.ClassUnderTest[id]; Assert.Equal(file.Content.Length, savedFile.Content.Length); Assert.Equal(file.Content[0], savedFile.Content[0]); Assert.Equal(file.FileName, savedFile.FileName); Assert.Equal(file.Key, savedFile.Key); Assert.Equal(file.OriginalName, savedFile.OriginalName); Assert.Equal(file.RequestReduceFileId, savedFile.RequestReduceFileId); Assert.Equal(file.LastUpdated, savedFile.LastUpdated); }
public void WillFlushAllKeysWhenPassedGuidIsEmpty() { var testable = new TestableSqlServerStore(); var guid1 = Guid.NewGuid(); var guid2 = Guid.NewGuid(); var sig1 = Guid.NewGuid().RemoveDashes(); var sig2 = Guid.NewGuid().RemoveDashes(); var fileName1 = "1" + new CssResource().FileName; var fileName2 = "2" + new CssResource().FileName; testable.Mock <IUriBuilder>().Setup(x => x.BuildResourceUrl(guid1, sig1, typeof(CssResource))).Returns("url1"); testable.Mock <IUriBuilder>().Setup(x => x.BuildResourceUrl(guid2, sig2, typeof(CssResource))).Returns("url2"); testable.Mock <IUriBuilder>().Setup(x => x.ParseKey(fileName1)).Returns(guid1); testable.Mock <IUriBuilder>().Setup(x => x.ParseKey(fileName2)).Returns(guid2); testable.Mock <IUriBuilder>().Setup(x => x.ParseSignature(fileName1)).Returns(sig1); testable.Mock <IUriBuilder>().Setup(x => x.ParseSignature(fileName2)).Returns(sig2); testable.Mock <IFileRepository>().Setup(x => x.GetActiveFiles()).Returns(new List <string>() { fileName1, fileName2 }); var file1 = new RequestReduceFile() { IsExpired = false, RequestReduceFileId = guid1 }; var file2 = new RequestReduceFile() { IsExpired = false, RequestReduceFileId = guid2 }; testable.Mock <IFileRepository>().Setup(x => x.GetFilesFromKey(guid1)).Returns(new RequestReduceFile[] { file1 }); testable.Mock <IFileRepository>().Setup(x => x.GetFilesFromKey(guid2)).Returns(new RequestReduceFile[] { file2 }); bool expire1 = false; bool expire2 = false; testable.Mock <IFileRepository>().Setup(x => x.Update(file1)).Callback <RequestReduceFile>( y => expire1 = y.IsExpired); testable.Mock <IFileRepository>().Setup(x => x.Update(file2)).Callback <RequestReduceFile>( y => expire2 = y.IsExpired); testable.ClassUnderTest.Flush(Guid.Empty); Assert.True(expire1); Assert.True(expire2); RRContainer.Current = null; }
public void WillThrowIfContentIsNull() { var testable = new TestableRepository(); var id = Guid.NewGuid(); var file = new RequestReduceFile() { Content = null, FileName = "filename", Key = Guid.NewGuid(), LastUpdated = DateTime.Now, OriginalName = "originalName", RequestReduceFileId = id }; var ex = Record.Exception(() => testable.ClassUnderTest.Save(file)); Assert.NotNull(ex); }
public void WillPullTheFilesWithTheSpecifiedKey() { var testable = new TestableRepository(); var id = Guid.NewGuid(); var id2 = Guid.NewGuid(); var file = new RequestReduceFile() { Content = new byte[] { 1 }, FileName = new CssResource().FileName, Key = id, LastUpdated = DateTime.Now, OriginalName = "originalName", RequestReduceFileId = Guid.NewGuid() }; var file2 = new RequestReduceFile() { Content = new byte[] { 1 }, FileName = new CssResource().FileName, Key = id, LastUpdated = DateTime.Now, RequestReduceFileId = Guid.NewGuid() }; var file3 = new RequestReduceFile() { Content = new byte[] { 1 }, FileName = new CssResource().FileName, Key = id2, LastUpdated = DateTime.Now, OriginalName = "originalName2", RequestReduceFileId = Guid.NewGuid() }; testable.ClassUnderTest.Save(file); testable.ClassUnderTest.Save(file2); testable.ClassUnderTest.Save(file3); var result = testable.ClassUnderTest.GetFilesFromKey(id); Assert.Equal(2, result.Count()); Assert.True(result.All(x => x.Key == id)); Assert.NotNull(result.Single(f => f.RequestReduceFileId == file.RequestReduceFileId)); Assert.NotNull(result.Single(f => f.RequestReduceFileId == file2.RequestReduceFileId)); }
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)); }