1+ /* --------------------------------------------------------------------------------------------
2+ * Copyright (c) Microsoft Corporation. All rights reserved.
3+ * Licensed under the MIT License. See License.txt in the project root for license information.
4+ * ------------------------------------------------------------------------------------------ */
5+
6+ import * as vscode from 'vscode' ;
7+ import * as assert from 'assert' ;
8+ import { getDocUri , activate , runOnActivate } from './helper' ;
9+ import { toRange } from './util' ;
10+
11+ suite ( 'Should get code actions' , ( ) => {
12+ test ( 'actions.module.missingOptionExplicitCodeAction' , async ( ) => {
13+ const docUri = getDocUri ( 'EmptyModule.bas' ) ;
14+ const edits = new vscode . WorkspaceEdit ( ) ;
15+ edits . set ( docUri , [
16+ vscode . TextEdit . insert ( new vscode . Position ( 1 , 1 ) , "\nOption Explicit" )
17+ ] ) ;
18+ await testCodeActions ( docUri , toRange ( 2 , 1 , 2 , 1 ) , [
19+ {
20+ title : "Insert Option Explicit" ,
21+ kind : vscode . CodeActionKind . QuickFix ,
22+ edit : edits
23+ }
24+ ] ) ;
25+ } ) ;
26+ } ) ;
27+
28+ async function testCodeActions ( docUri : vscode . Uri , activationRange : vscode . Range , expectedResults : vscode . CodeAction [ ] ) {
29+ await activate ( docUri ) ;
30+
31+ // Use this method first to ensure the extension is activated.
32+ const actualResults = await runOnActivate (
33+ // Action to run.
34+ ( ) => vscode . commands . executeCommand < vscode . CodeAction [ ] > (
35+ 'vscode.executeCodeActionProvider' ,
36+ docUri ,
37+ activationRange
38+ ) ,
39+ // Test that shows it ran.
40+ ( result ) => result . length > 0
41+ ) ;
42+
43+ assert . equal ( actualResults . length , expectedResults . length , `Expected ${ expectedResults . length } , got ${ actualResults . length } ` ) ;
44+
45+ expectedResults . forEach ( ( expected , i ) => {
46+ const actual = actualResults [ i ] ;
47+ assert . equal ( actual . title , expected . title , `Title: expected ${ expected . title } , got ${ actual . title } ` ) ;
48+ assert . equal ( actual . edit . has ( docUri ) , true , "Missing actual edits" ) ;
49+ assert . equal ( expected . edit . has ( docUri ) , true , "Missing expected edits" ) ;
50+
51+ const actEdits = actual . edit . get ( docUri ) ;
52+ const expEdits = expected . edit . get ( docUri ) ;
53+
54+ assert . equal ( actEdits . length , expEdits . length , `Count edits for ${ actual . title } ` ) ;
55+ expEdits . forEach ( ( expEdit , i ) => {
56+ const actEdit = actEdits [ i ] ;
57+ assert . equal ( actEdit . newText , expEdit . newText , `Edit text: expected ${ expEdit . newText } , got ${ actEdit . newText } ` ) ;
58+ assert . deepEqual ( actEdit . range , expEdit . range , `Edit range: expected ${ JSON . stringify ( expEdit . range ) } , got ${ JSON . stringify ( actEdit . range ) } ` ) ;
59+ } ) ;
60+ } ) ;
61+ }
0 commit comments