Skip to content

Commit 2461ac6

Browse files
committed
test: code inspection integ tests
1 parent e41a52a commit 2461ac6

3 files changed

Lines changed: 96 additions & 3 deletions

File tree

src/language/CodeInspection.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,9 @@ define(function (require, exports, module) {
921921

922922
let lastRunTime;
923923
$(window.document).on("mousemove", ()=>{
924+
if(Phoenix.isTestWindow){
925+
return;
926+
}
924927
const editor = EditorManager.getCurrentFullEditor();
925928
if(!editor || editor.document.lastChangeTimestamp === lastDocumentScanTimeStamp) {
926929
return;
@@ -1011,7 +1014,7 @@ define(function (require, exports, module) {
10111014
const editor = EditorManager.getCurrentFullEditor();
10121015
const maxOffset = editor.document.getText().length;
10131016
if(fixDetails.rangeOffset.start < 0 || fixDetails.rangeOffset.end < 0 ||
1014-
fixDetails.rangeOffset.start > maxOffset || fixDetails.rangeOffset.end < maxOffset ){
1017+
fixDetails.rangeOffset.start > maxOffset || fixDetails.rangeOffset.end > maxOffset ){
10151018
Dialogs.showErrorDialog(Strings.CANNOT_FIX_TITLE,
10161019
StringUtils.format(Strings.CANNOT_FIX_INVALID_MESSAGE, fixDetails.providerName));
10171020
} else if(!editor || !fixDetails || editor.document.lastChangeTimestamp !== lastDocumentScanTimeStamp) {

test/spec/CodeInspection-fix-integ-test.js

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ define(function (require, exports, module) {
7373
if (line.includes('this line a fixable error')) {
7474
const wordPosition = findWordPosition(line, 'fixable');
7575
error.fix = {
76-
replaceText: "",
76+
replaceText: "no",
7777
rangeOffset: {
7878
start: currentEditor.indexFromPos({line: lineNumber, ch: wordPosition.start}),
7979
end: currentEditor.indexFromPos({line: lineNumber, ch: wordPosition.end})
@@ -180,7 +180,68 @@ define(function (require, exports, module) {
180180
CodeInspection.scrollToProblem(40);
181181
});
182182

183-
// todo fix one, fix all, fix one undo, fix all undo, quick view error click, quick view fix click
183+
it("should show quick view over problem", async function () {
184+
await _openProjectFile("testFix.vbs");
185+
186+
expect($("#problems-panel").is(":visible")).toBeTrue();
187+
188+
const $popup = await SpecRunnerUtils.showQuickViewAtPos(2, 3);
189+
expect($popup.is(":visible")).toBeTrue();
190+
expect($popup.text().includes("this line an error")).toBeTrue();
191+
SpecRunnerUtils.dismissQuickView($popup);
192+
});
193+
194+
async function _validateScroll(lineNumber) {
195+
CodeInspection.scrollToProblem(lineNumber);
196+
const expectedScrollTop = $(".table-container").scrollTop();
197+
$(".table-container").scrollTop(0);
198+
199+
const $popup = await SpecRunnerUtils.showQuickViewAtPos(lineNumber, 3);
200+
expect($popup.is(":visible")).toBeTrue();
201+
$popup.find(".code-inspection-item div").click();
202+
expect($(".table-container").scrollTop()).toBe(expectedScrollTop);
203+
SpecRunnerUtils.dismissQuickView($popup);
204+
}
205+
206+
it("should clicking on quick view scroll to the editor", async function () {
207+
await _openProjectFile("testFix.vbs");
208+
209+
expect($("#problems-panel").is(":visible")).toBeTrue();
210+
await _validateScroll(64);
211+
212+
await _openProjectFile("testNoFix.vbs");
213+
214+
expect($("#problems-panel").is(":visible")).toBeTrue();
215+
await _validateScroll(57);
216+
});
217+
218+
async function _triggerLint(fileName) {
219+
await _openProjectFile("no-errors.js");
220+
await _openProjectFile(fileName);
221+
}
222+
223+
it("should fix by clicking fix button in quick view", async function () {
224+
await _openProjectFile("testFix.vbs");
225+
226+
expect($("#problems-panel").is(":visible")).toBeTrue();
227+
const $popup = await SpecRunnerUtils.showQuickViewAtPos(64, 3);
228+
expect($popup.is(":visible")).toBeTrue();
229+
expect($("#problems-panel .ph-fix-problem").length).toBe(5); // 5 fix buttons should be there
230+
$popup.find(".code-inspection-item button").click();
231+
expect($("#problems-panel .ph-fix-problem").length).toBe(4); // 4 fix buttons as one is fixed
232+
SpecRunnerUtils.dismissQuickView($popup);
233+
234+
const editor = EditorManager.getActiveEditor();
235+
expect(editor.getSelectedText()).toBe("no");
236+
237+
// undo should work
238+
await awaitsForDone(CommandManager.execute(Commands.EDIT_UNDO), "undo");
239+
expect(editor.getSelectedText()).toBe("fixable");
240+
await _triggerLint("testFix.vbs");
241+
expect($("#problems-panel .ph-fix-problem").length).toBe(5); // 5 fix buttons should be there
242+
});
243+
244+
// todo fix all, fix all undo,
184245
// todo invalid fixes test, doc changed after fix dialog
185246

186247
});

test/spec/SpecRunnerUtils.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ define(function (require, exports, module) {
3434
MainViewManager = require("view/MainViewManager"),
3535
FileSystemError = require("filesystem/FileSystemError"),
3636
FileSystem = require("filesystem/FileSystem"),
37+
KeyEvent = require("utils/KeyEvent"),
3738
WorkspaceManager = require("view/WorkspaceManager"),
3839
UrlParams = require("utils/UrlParams").UrlParams,
3940
StringUtils = require("utils/StringUtils"),
@@ -1186,6 +1187,32 @@ define(function (require, exports, module) {
11861187
return _testWindow.executeCommand(Commands.TOGGLE_QUICK_EDIT);
11871188
}
11881189

1190+
/**
1191+
* shows the quick view at given position and returns $popover if present. use dismissQuickView($popover) to dismiss
1192+
* @param line
1193+
* @param ch
1194+
* @returns {Promise<*>}
1195+
*/
1196+
async function showQuickViewAtPos(line, ch) {
1197+
const editor = _testWindow.brackets.test.EditorManager.getCurrentFullEditor();
1198+
editor.setCursorPos(line, ch, true);
1199+
const QuickViewManager= _testWindow.brackets.test.QuickViewManager;
1200+
let cm = editor._codeMirror,
1201+
pos = { line, ch },
1202+
token;
1203+
1204+
editor.setCursorPos(pos);
1205+
token = cm.getTokenAt(pos, true);
1206+
1207+
const popoverInfo = await QuickViewManager._queryPreviewProviders(editor, pos, token);
1208+
QuickViewManager._forceShow(popoverInfo);
1209+
return _testWindow.$("#quick-view-container"); // returns $popover
1210+
}
1211+
1212+
function dismissQuickView($popover) {
1213+
simulateKeyEvent(KeyEvent.DOM_VK_ESCAPE, "keydown", $popover[0]);
1214+
}
1215+
11891216
/**
11901217
* Simulate a key event.
11911218
* @param {Number} key Key code
@@ -1481,5 +1508,7 @@ define(function (require, exports, module) {
14811508
exports.setUnitTestReporter = setUnitTestReporter;
14821509
exports.resizeEditor = resizeEditor;
14831510
exports.editorHasCursorPosition = editorHasCursorPosition;
1511+
exports.showQuickViewAtPos = showQuickViewAtPos;
1512+
exports.dismissQuickView = dismissQuickView;
14841513
exports.jsPromise = jsPromise;
14851514
});

0 commit comments

Comments
 (0)