public async Task TestSearchNewUpdatePackackgesUpdatesFound() { _updateController.VersionProvider = new CustomVersionProvider("0.1.4"); _updateController.ChangelogLanguage = CultureInfo.GetCultureInfo("fr"); var searchResult = new UpdatePackageSearchResult(); typeof(UpdatePackageSearchResult).GetProperty(nameof(searchResult.UpdatePackages)) .SetValue(searchResult, new List <UpdatePackageInfo> { new UpdatePackageInfo { Version = "1.0" } }); _mockHttp.Expect(HttpMethod.Get, "*packages/0.1.4/check").WithHeaders("Accept-Language", "fr") .Respond("application/json", JsonConvert.SerializeObject(new JwtResponse <UpdatePackageSearchResult> { Result = searchResult })); var result = await _updateController.SearchForNewUpdatePackagesAsync(); Assert.False(_updateController.Settings.NoUpdatesFoundCleanupExecuted); Assert.True(result.IsUpdateAvailable); Assert.Equal("1.0", result.TargetPackage.Version); }
public WpfUpdaterViewModel(UpdatePackageSearchResult searchResult) { _searchResult = searchResult; TargetUpdatePackage = searchResult.TargetPackage; UpdatePackages = searchResult.UpdatePackages; var downloadable = (IDownloadable)searchResult; CurrentVersion = downloadable.UpdateController.VersionProvider.GetVersion(); IsTargetPackageRollback = searchResult.Rollback && CurrentVersion > searchResult.TargetPackage.Version; if (!IsTargetPackageRollback) { ChangelogsHtml = GenerateChangelogs(searchResult); } }
public UpdatesAvailableForm(IUpdateController updateController, UpdatePackageSearchResult updatePackageSearchResult) { _updatePackageSearchResult = updatePackageSearchResult; InitializeComponent(); tableLayoutPanel1.RowStyles[2].Height = 0; Text = Properties.Resources.UpdatesAvailableForm_Title; installButton.Text = Properties.Resources.UpdatesAvailableForm_InstallUpdates; cancelButton.Text = Properties.Resources.UpdatesAvailableForm_Cancel; newUpdatesAvailableLabel.Text = updatePackageSearchResult.UpdatePackages.Count > 1 ? string.Format(Properties.Resources.UpdatesAvailableForm_NewUpdatesAvailable, updatePackageSearchResult.UpdatePackages.Count) : Properties.Resources.UpdatesAvailableForm_NewUpdateAvailable; newUpdatesDescriptionLabel.Text = string.Format( Properties.Resources.UpdatesAvailableForm_NewUpdateCanBeDownloaded, updateController.VersionProvider.GetVersion().ToString(false), updatePackageSearchResult.TargetPackage.Version.ToString(false)); //aggregate changelogs //produce something like this for every changelog: /* * # Update 1.0.1 * Release date: Saturday, 1 July 2017 * ___ * <changelog> / _The changelog is empty_ */ var changelogs = updatePackageSearchResult.UpdatePackages.Aggregate(new StringBuilder(), (builder, info) => builder.Append("# ").Append(Properties.Resources.UpdatesAvailableForm_Update) .Append(" ").AppendLine(info.Version.ToString()) .Append(Properties.Resources.UpdatesAvailableForm_ReleaseDate).Append(": ") .AppendLine(info.ReleaseDate.ToString("D", CultureInfo.CurrentUICulture)).AppendLine("___").AppendLine( string.IsNullOrWhiteSpace(info.Changelog.Content) ? "_" + Properties.Resources.UpdatesAvailableForm_ChangelogIsEmpty + "_" : info.Changelog.Content)).ToString(); var htmlPanel = new HtmlPanel { IsSelectionEnabled = false, IsContextMenuEnabled = false, Dock = DockStyle.Fill, BaseStylesheet = MarkdownHtmlStylesheet }; try { htmlPanel.Text = CommonMarkConverter.Convert(changelogs, CommonMarkSettings.Default); tableLayoutPanel1.Controls.Add(htmlPanel, 0, 1); } catch (CommonMarkException) { //strength of markdown, being nicely readable without formatting tableLayoutPanel1.Controls.Add(new RichTextBox { ReadOnly = true, Text = changelogs, Dock = DockStyle.Fill, BorderStyle = BorderStyle.FixedSingle }, 0, 1); } }