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); } }
public void SaveNull() { string tempPath = Path.Combine(Path.GetTempPath(), "notused.json"); var persist = new ScriptVersionsFilePersist(tempPath); persist.Save(null); // should do nothing }
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); } }
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); } }