コード例 #1
0
        public async Task LoadNewVersionFromFile()
        {
            string tempPath = Path.Combine(Path.GetTempPath(), "scriptversionstest.json");
            var    persist  = new ScriptVersionsFilePersist(tempPath);

            try
            {
                var  versions = new ScriptVersionsFile();
                bool updated  = versions.SetVersions("js", new[]
                {
                    new FileVersion("test1.js",
                                    "asdf123",
                                    "scripts",
                                    1)
                });
                persist.Save(versions);

                var service = new ScriptVersionsService(tempPath, new ScriptVersionsServiceOptions()
                {
                    CacheExpires = TimeSpan.FromMilliseconds(200)
                });

                Assert.Equal("1", service.GetVersion("scripts/test1.js"));
                await Task.Delay(210);

                Assert.Equal("1", service.GetVersion("scripts/test1.js"));

                service = new ScriptVersionsService(tempPath, new ScriptVersionsServiceOptions()
                {
                    CacheExpires = TimeSpan.FromMilliseconds(200)
                });
                Assert.Equal("1", service.GetVersion("scripts/test1.js"));

                versions.SetVersions("js", new[]
                {
                    new FileVersion("test1.js",
                                    "asdf123",
                                    "scripts",
                                    2) // increment version
                });
                persist.Save(versions);

                Assert.Equal("1", service.GetVersion("scripts/test1.js"));
                await Task.Delay(210); // this should let the cache expire

                Assert.Equal("2", service.GetVersion("scripts/test1.js"));
            }
            finally
            {
                File.Delete(tempPath);
            }
        }
コード例 #2
0
        public void SaveNull()
        {
            string tempPath = Path.Combine(Path.GetTempPath(), "notused.json");
            var    persist  = new ScriptVersionsFilePersist(tempPath);

            persist.Save(null); // should do nothing
        }
コード例 #3
0
        public async Task SaveAndLoadAsync()
        {
            string         tempPath    = Path.Combine(Path.GetTempPath(), "scriptversionstest_async.json");
            var            persist     = new ScriptVersionsFilePersist(tempPath);
            DateTimeOffset lastUpdated = DateTimeOffset.Now;

            try
            {
                var versions = new ScriptVersionsFile();
                Assert.Equal(default(DateTimeOffset), versions.LastUpdated);

                bool updated = versions.SetVersions("js", new[]
                {
                    new FileVersion("test1.js",
                                    "asdf123",
                                    "scripts",
                                    1)
                });

                Assert.NotEqual(default(DateTimeOffset), versions.LastUpdated);

                persist.Save(versions);

                var loadedVersions = await persist.LoadAsync();

                Assert.Equal(versions.LastUpdated, loadedVersions.LastUpdated);
                Assert.Equal("test1.js", loadedVersions.Files["js"][0].Name);
                Assert.Equal("asdf123", loadedVersions.Files["js"][0].Hash);
                Assert.Equal("scripts", loadedVersions.Files["js"][0].Path);
                Assert.Equal(1, loadedVersions.Files["js"][0].Version);
            }
            finally
            {
                File.Delete(tempPath);
            }
        }
コード例 #4
0
        public async Task IsNewer()
        {
            string         tempPath    = Path.Combine(Path.GetTempPath(), "scriptversionstest.json");
            var            persist     = new ScriptVersionsFilePersist(tempPath);
            DateTimeOffset lastUpdated = DateTimeOffset.Now;

            try
            {
                var versions = new ScriptVersionsFile();

                Assert.False(await persist.IsNewerThan(lastUpdated));

                Thread.Sleep(1);

                bool updated = versions.SetVersions("js", new[]
                {
                    new FileVersion("test1.js",
                                    "asdf123",
                                    "scripts",
                                    1)
                });

                persist.Save(versions);

                Assert.True(await persist.IsNewerThan(lastUpdated));

                Assert.False(await persist.IsNewerThan(DateTimeOffset.Now.AddSeconds(1)));

                DateTimeOffset defaultTime;
                Assert.True(await persist.IsNewerThan(defaultTime));
            }
            finally
            {
                File.Delete(tempPath);
            }
        }