public async Task VerifyGetFixes() { var code = File.ReadAllText( $@"Targets\{nameof(FindSaveAssignmentIssueAnalyzerAddAssignmentCodeFixTests)}\{(nameof(this.VerifyGetFixes))}.cs"); var document = TestHelpers.Create(code); var tree = await document.GetSyntaxTreeAsync(); var diagnostics = await TestHelpers.GetDiagnosticsAsync(code, new FindSaveAssignmentIssueAnalyzer()); var sourceSpan = diagnostics[0].Location.SourceSpan; var actions = new List <CodeAction>(); var codeActionRegistration = new Action <CodeAction, ImmutableArray <Diagnostic> >( (a, _) => { actions.Add(a); }); var fix = new FindSaveAssignmentIssueAnalyzerAddAssignmentCodeFix(); var codeFixContext = new CodeFixContext(document, diagnostics[0], codeActionRegistration, new CancellationToken(false)); await fix.RegisterCodeFixesAsync(codeFixContext); Assert.AreEqual(1, actions.Count, nameof(actions.Count)); await TestHelpers.VerifyActionAsync(actions, FindSaveAssignmentIssueAnalyzerAddAssignmentCodeFixConstants.AddAssignmentDescription, document, tree, new[] { $@" = x" }); }
public async Task VerifyGetFixes() { var code = @"using Csla; public class A : BusinessBase<A> { } public class VerifyGetFixes { private IDataPortal<A> _dataPortal; public VerifyGetFixes(IDataPortal<A> dataPortal) { _dataPortal = dataPortal; } public void Use() { var x = _dataPortal.Fetch<A>(); x.Save(); } }"; var document = TestHelpers.Create(code); var tree = await document.GetSyntaxTreeAsync(); var diagnostics = await TestHelpers.GetDiagnosticsAsync(code, new FindSaveAssignmentIssueAnalyzer()); var sourceSpan = diagnostics[0].Location.SourceSpan; var actions = new List <CodeAction>(); var codeActionRegistration = new Action <CodeAction, ImmutableArray <Diagnostic> >( (a, _) => { actions.Add(a); }); var fix = new FindSaveAssignmentIssueAnalyzerAddAssignmentCodeFix(); var codeFixContext = new CodeFixContext(document, diagnostics[0], codeActionRegistration, new CancellationToken(false)); await fix.RegisterCodeFixesAsync(codeFixContext); Assert.AreEqual(1, actions.Count, nameof(actions.Count)); await TestHelpers.VerifyChangesAsync(actions, FindSaveAssignmentIssueAnalyzerAddAssignmentCodeFixConstants.AddAssignmentDescription, document, (model, newRoot) => { Assert.IsTrue(newRoot.DescendantNodes(_ => true).OfType <AssignmentExpressionSyntax>().Any()); }); }
public async Task VerifyGetFixes() { var code = @"namespace Csla.Analyzers.Tests.Targets.FindSaveAssignmentIssueAnalyzerAddAssignmentCodeFixTests { public class User : BusinessBase<User> { } public class VerifyGetFixes { public void UseUser() { var x = DataPortal.Fetch<User>(); x.Save(); } } }"; var document = TestHelpers.Create(code); var tree = await document.GetSyntaxTreeAsync(); var diagnostics = await TestHelpers.GetDiagnosticsAsync(code, new FindSaveAssignmentIssueAnalyzer()); var sourceSpan = diagnostics[0].Location.SourceSpan; var actions = new List <CodeAction>(); var codeActionRegistration = new Action <CodeAction, ImmutableArray <Diagnostic> >( (a, _) => { actions.Add(a); }); var fix = new FindSaveAssignmentIssueAnalyzerAddAssignmentCodeFix(); var codeFixContext = new CodeFixContext(document, diagnostics[0], codeActionRegistration, new CancellationToken(false)); await fix.RegisterCodeFixesAsync(codeFixContext); Assert.AreEqual(1, actions.Count, nameof(actions.Count)); await TestHelpers.VerifyActionAsync(actions, FindSaveAssignmentIssueAnalyzerAddAssignmentCodeFixConstants.AddAssignmentDescription, document, tree, new[] { "= x" }); }