public async Task ApplyTests(string projectPath, FileUpdaterResult expectedResult)
        {
            // Arrange
            using var mock = await GetMock(projectPath).ConfigureAwait(true);

            var context = mock.Mock <IUpgradeContext>().Object;
            var updater = mock.Create <RazorHelperUpdater>();
            var inputs  = await GetRazorCodeDocumentsAsync(mock).ConfigureAwait(true);

            // Act
            var result = await updater.ApplyAsync(context, inputs, CancellationToken.None).ConfigureAwait(true);

            // Assert
            var fileUpdaterResult = Assert.IsType <FileUpdaterResult>(result);

            Assert.True(fileUpdaterResult.Result);
            Assert.Collection(fileUpdaterResult.FilePaths, expectedResult.FilePaths.Select <string, Action <string> >(e => a => Assert.EndsWith(e, a, StringComparison.Ordinal)).ToArray());

            // Confirm that files are updated as expected
            var projectFiles = context.CurrentProject !.FileInfo.Directory !.GetFiles("*.*", new EnumerationOptions {
                RecurseSubdirectories = true
            });
            var expectedFiles = new DirectoryInfo($"{Path.GetDirectoryName(projectPath)}.Fixed").GetFiles("*.*", new EnumerationOptions {
                RecurseSubdirectories = true
            });

            Assert.Collection(projectFiles, expectedFiles.Select <FileInfo, Action <FileInfo> >(e => a =>
            {
                Assert.Equal(File.ReadAllText(e.FullName), File.ReadAllText(a.FullName));
            }).ToArray());
        }
        public async Task IsApplicableTests(string projectPath, FileUpdaterResult expectedResult)
        {
            // Arrange
            using var mock = await GetMock(projectPath).ConfigureAwait(true);

            var context = mock.Mock <IUpgradeContext>();
            var updater = mock.Create <RazorHelperUpdater>();
            var inputs  = await GetRazorCodeDocumentsAsync(mock).ConfigureAwait(true);

            // Act
            var result = await updater.IsApplicableAsync(context.Object, inputs, CancellationToken.None).ConfigureAwait(true);

            // Assert
            var fileUpdaterResult = Assert.IsType <FileUpdaterResult>(result);

            Assert.Equal(expectedResult.Result, fileUpdaterResult.Result);
            Assert.Collection(fileUpdaterResult.FilePaths, expectedResult.FilePaths.Select <string, Action <string> >(e => a => Assert.EndsWith(e, a, StringComparison.Ordinal)).ToArray());
        }