File: InProcess\PreviewChangesDialogInProcess.cs
Web Access
Project: ..\..\..\src\VisualStudio\IntegrationTest\New.IntegrationTests\Microsoft.VisualStudio.LanguageServices.New.IntegrationTests.csproj (Microsoft.VisualStudio.LanguageServices.New.IntegrationTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System.Threading;
using System.Threading.Tasks;
using Microsoft.VisualStudio.Extensibility.Testing;
 
namespace Roslyn.VisualStudio.IntegrationTests.InProcess
{
    [TestService]
    internal partial class PreviewChangesDialogInProcess
    {
        /// <summary>
        /// Verifies that the Preview Changes dialog is showing with the
        /// specified title. The dialog does not have an AutomationId and the 
        /// title can be changed by features, so callers of this method must
        /// specify a title.
        /// </summary>
        /// <param name="expectedTitle"></param>
        public async Task VerifyOpenAsync(string expectedTitle, CancellationToken cancellationToken)
        {
            await DialogHelpers.FindDialogByNameAsync(JoinableTaskFactory, await TestServices.Shell.GetMainWindowAsync(cancellationToken), expectedTitle, isOpen: true, cancellationToken);
 
            // Wait for application idle to ensure the dialog is fully initialized
            await WaitForApplicationIdleAsync(cancellationToken);
        }
 
        public async Task VerifyClosedAsync(string expectedTitle, CancellationToken cancellationToken)
            => await DialogHelpers.FindDialogByNameAsync(JoinableTaskFactory, await TestServices.Shell.GetMainWindowAsync(cancellationToken), expectedTitle, isOpen: false, cancellationToken);
 
        public async Task ClickApplyAndWaitForFeatureAsync(string expectedTitle, string featureName, CancellationToken cancellationToken)
        {
            await DialogHelpers.PressButtonWithNameFromDialogWithNameAsync(JoinableTaskFactory, await TestServices.Shell.GetMainWindowAsync(cancellationToken), expectedTitle, "Apply", cancellationToken);
            await TestServices.Workspace.WaitForAsyncOperationsAsync(featureName, cancellationToken);
        }
 
        public async Task ClickCancelAsync(string expectedTitle, CancellationToken cancellationToken)
            => await DialogHelpers.PressButtonWithNameFromDialogWithNameAsync(JoinableTaskFactory, await TestServices.Shell.GetMainWindowAsync(cancellationToken), expectedTitle, "Cancel", cancellationToken);
    }
}