Beispiel #1
0
            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));
            }
Beispiel #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));
            }
Beispiel #3
0
        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();
        }
Beispiel #4
0
            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));
            }
Beispiel #5
0
            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);
            }
Beispiel #6
0
        public void ShouldReturnAllDataOnGetQueryable()
        {
            using (var context = new TestDbContext(_inMemoryDbOptions))
            {
                var subject = new TestableRepository(context);

                var result = subject.GetQueryable();

                result.Should().BeEquivalentTo(TestData);
            }
        }
Beispiel #7
0
        public async void ShouldGetByIdAsync()
        {
            using (var context = new TestDbContext(_inMemoryDbOptions))
            {
                var subject = new TestableRepository(context);

                var result = await subject.GetAsync(TestData.ElementAt(0).Id);

                result.Id.Should().Be(TestData.ElementAt(0).Id);
                result.TenantId.Should().Be(TestData.ElementAt(0).TenantId);
                result.Title.Should().Be(TestData.ElementAt(0).Title);
            }
        }
Beispiel #8
0
        public void ShouldReturnFilteredDataWhenGlobalFilterIsSet()
        {
            using (var context = new TestDbContext(_inMemoryDbOptions))
            {
                var subject = new TestableRepository(context);

                subject.SetGlobalFilter(t => t.TenantId == FirstTenantId);

                var result = subject.GetQueryable();

                result.Count().Should().Be(TestData.Count(t => t.TenantId == FirstTenantId));
            }
        }
Beispiel #9
0
        public async void ShouldRemoveByIdAsync()
        {
            using (var context = new TestDbContext(_inMemoryDbOptions))
            {
                var subject = new TestableRepository(context);

                var entity = context.TestEntityClasses.FirstOrDefault();

                await subject.DeleteAsync(entity.Id);

                await context.SaveChangesAsync();

                context.TestEntityClasses.Count().Should().Be(TestData.Count() - 1);
                context.TestEntityClasses.Any(x => x.Id == entity.Id).Should().BeFalse();
            }
        }
Beispiel #10
0
        public async void ShouldInsertEntityAsync()
        {
            using (var context = new TestDbContext(_inMemoryDbOptions))
            {
                var subject = new TestableRepository(context);

                await subject.InsertAsync(new TestDbContext.TestEntityClass()
                {
                    Id = 999
                });

                await context.SaveChangesAsync();

                context.TestEntityClasses.Count().Should().Be(TestData.Count() + 1);
            }
        }
Beispiel #11
0
        public async void ShouldUpdateEntityAsync()
        {
            using (var context = new TestDbContext(_inMemoryDbOptions))
            {
                var subject = new TestableRepository(context);

                var entity = context.TestEntityClasses.FirstOrDefault();

                entity.Title = "Update Test";

                await subject.UpdateAsync(entity);

                await context.SaveChangesAsync();

                context.TestEntityClasses.FirstOrDefault().Title.Should().Be("Update Test");
            }
        }
Beispiel #12
0
            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);
            }
Beispiel #13
0
            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));
            }
Beispiel #14
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));
            }