public async Task CheckForNewReleaseAsync(CheckForReleaseArgs checkForReleaseArgs) { IReadOnlyList <Release> releases; try { releases = await _releasesClient.GetAll(_gitHubRepoInfo.Owner, _gitHubRepoInfo.Name); } catch { return; } if (releases == null || releases.Count == 0) { return; } var latest = releases.First(); var version = new Version(latest.TagName); if (version > checkForReleaseArgs.CurrentVersion) { var releaseInfo = new ReleaseInfo { Version = version, Uri = new Uri(latest.HtmlUrl) }; checkForReleaseArgs.OnNewReleaseCallBack(releaseInfo); } }
Given(Action <ReleaseInfo> callback, Version latestReleaseVersion) { var tuple = GetReleaseManager(); var releasesClientMock = tuple.Item1; releasesClientMock.Setup(client => client.GetAll(It.IsAny <string>(), It.IsAny <string>())) .Returns(() => { var list = new List <Release>(); if (latestReleaseVersion != null) { var release = CreateRelease(latestReleaseVersion); list.Add(release); } var task = Task.Run(() => (IReadOnlyList <Release>)list); task.ConfigureAwait(false); return(task); }); var releaseManager = tuple.Item2; var arguments = new CheckForReleaseArgs { CurrentVersion = new Version(1, 0, 0, 0), OnNewReleaseCallBack = callback }; return(new Tuple <IReleaseManager, CheckForReleaseArgs, Mock <IReleasesClient> >(releaseManager, arguments, releasesClientMock)); }
public async void ExceptionInReleasesClientResultsInCallbackNotCalled() { //Given var tuple = GetReleaseManager(); var releasesClientMock = tuple.Item1; var releaseManager = tuple.Item2; var callbackCalled = false; releasesClientMock.Setup(client => client.GetAll(It.IsAny <string>(), It.IsAny <string>())) .Throws(new TimeoutException("The network operation timed out")); var arguments = new CheckForReleaseArgs { CurrentVersion = new Version(), OnNewReleaseCallBack = releaseInfo => { callbackCalled = true; } }; //When await releaseManager.CheckForNewReleaseAsync(arguments).ConfigureAwait(false); //Then releasesClientMock.Verify(m => m.GetAll(It.IsAny <string>(), It.IsAny <string>()), Times.Once, "It is expected that the releases are queried by the client."); callbackCalled.Should().BeFalse(); }
public async void Check() { IsChecking = true; var args = new CheckForReleaseArgs { CurrentVersion = Assembly.GetExecutingAssembly().GetName().Version, OnNewReleaseCallBack = AskToVisiteTheDownloadPage }; await _releaseManager.CheckForNewReleaseAsync(args); IsChecking = false; }