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);
        }
Exemple #2
0
        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);
            }
        }