public void GivenAGitHubVersionResponse_WhenReusedAfterADay_ThenTheResponse_ShouldBeConsideredInvalid()
        {
            var responseToCache = new GitHubVersionResponse()
            {
                Name = "test", ResponseDate = DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0)), Tag = "tag", Url = "url", When = new DateTimeOffset(DateTime.Now)
            };

            Assert.False(responseToCache.CacheIsInDate());
        }
        public void GivenAGitHubVersionResponse_WhenReusedWithADay_ThenTheResponse_ShouldBeConsideredValid()
        {
            var responseToCache = new GitHubVersionResponse()
            {
                Name = "test", ResponseDate = DateTime.Now, Tag = "tag", Url = "url", When = new DateTimeOffset(DateTime.Now)
            };

            Assert.True(responseToCache.CacheIsInDate());
        }
        public void GivenNoCacheFileExists_WhenAttemptingToReadACacheFrom_ThenANullObject_ShouldBeReturned()
        {
            if (System.IO.File.Exists(GitHubVersionResponse.CacheFileName))
            {
                GitHubVersionResponse.ClearCache();
            }

            var cache = GitHubVersionResponse.TryReadFromCache();

            Assert.Null(cache);
        }
        public string GetNewestVersion()
        {
            HttpWebRequest request = WebRequest.Create("https://api.github.com/repos/thorwin99/SEWorldGenPlugin/releases/latest") as HttpWebRequest;

            request.Method    = "GET";
            request.UserAgent = "SEWorldGenPlugin";
            WebResponse response = request.GetResponse();

            JsonRelease latest = GitHubVersionResponse.Deserialize(response.GetResponseStream());

            m_latestBuild = latest.tag_name.Trim().Substring(1) + ".0";
            m_latestPage  = latest.html_url;
            return(m_latestBuild);
        }
        public void GivenAGitHubVersionResponseCached_WhenClearingTheCache_ThenTheCacheFile_ShouldBeRemoved()
        {
            var responseToCache = new GitHubVersionResponse()
            {
                Name         = "test",
                ResponseDate = DateTime.Now,
                Tag          = "tag",
                Url          = "url",
                When         = new DateTimeOffset(DateTime.Now)
            };

            responseToCache.SaveCache();
            Assert.True(System.IO.File.Exists(GitHubVersionResponse.CacheFileName));
            GitHubVersionResponse.ClearCache();
            Assert.False(System.IO.File.Exists(GitHubVersionResponse.CacheFileName));
        }
        public void GivenAGitHubVersionResponse_WhenCachingTheResponse_ThenACacheFile_ShouldBeSaved()
        {
            var responseToCache = new GitHubVersionResponse()
            {
                Name         = "test",
                ResponseDate = DateTime.Now,
                Tag          = "tag",
                Url          = "url",
                When         = new DateTimeOffset(DateTime.Now)
            };

            responseToCache.SaveCache();
            var cache        = GitHubVersionResponse.TryReadFromCache();
            var cacheIsEqual = (cache != null &&
                                cache.Name == responseToCache.Name &&
                                cache.ResponseDate == responseToCache.ResponseDate &&
                                cache.Tag == responseToCache.Tag &&
                                cache.Url == responseToCache.Url &&
                                cache.When == responseToCache.When);

            Assert.True(cacheIsEqual);
            GitHubVersionResponse.ClearCache();
        }