Exemple #1
0
        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();
        }
Exemple #4
0
        public async void Check()
        {
            IsChecking = true;
            var args = new CheckForReleaseArgs
            {
                CurrentVersion       = Assembly.GetExecutingAssembly().GetName().Version,
                OnNewReleaseCallBack = AskToVisiteTheDownloadPage
            };
            await _releaseManager.CheckForNewReleaseAsync(args);

            IsChecking = false;
        }