From ed094a8fbb3e550e19814e89fce2a1a52032cded Mon Sep 17 00:00:00 2001 From: SuparnaSuresh Date: Fri, 13 Dec 2024 12:20:49 +0530 Subject: [PATCH] timeout value updated --- src/test/GradleSingleModLCLSTest.ts | 196 ++++++++++-------- .../liberty/web/app/SystemResource.java | 0 2 files changed, 112 insertions(+), 84 deletions(-) create mode 100644 src/test/resources/gradle/liberty.gradle.test.wrapper.app/src/main/java/test/gradle/liberty/web/app/SystemResource.java diff --git a/src/test/GradleSingleModLCLSTest.ts b/src/test/GradleSingleModLCLSTest.ts index 89569aed..e07a2d5a 100755 --- a/src/test/GradleSingleModLCLSTest.ts +++ b/src/test/GradleSingleModLCLSTest.ts @@ -1,122 +1,150 @@ -/** - * Copyright (c) 2024 IBM Corporation. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v. 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0. - * - * SPDX-License-Identifier: EPL-2.0 - */ -import { By, EditorView, SideBarView, TextEditor, VSBrowser } from "vscode-extension-tester"; +import { TextEditor, EditorView, VSBrowser, By } from 'vscode-extension-tester'; import * as utils from './utils/testUtils'; -import * as constants from './definitions/constants'; +import * as path from 'path'; +import * as assert from 'assert'; -const path = require('path'); -const assert = require('assert'); +describe('LSP4Jakarta LS test for snippet test', () => { -describe('LCLS tests for Gradle Project', function () { let editor: TextEditor; - let actualSeverXMLContent: string; - before(() => { - utils.copyConfig(path.join(utils.getGradleProjectPath(), 'src', 'main', 'liberty', 'config'), path.join(utils.getGradleProjectPath(), 'src', 'main', 'liberty', 'config2')); - }); + it('check if correct code is inserted when rest_class snippet is triggered', async() => { + await VSBrowser.instance.openResources(path.join(utils.getGradleProjectPath(), "src", "main", "java", "test", "gradle", "liberty", "web", "app", "SystemResource.java")); - it('Should coppy content of server.xml', async () => { - const section = await new SideBarView().getContent().getSection(constants.GRADLE_PROJECT); - section.expand(); - await VSBrowser.instance.openResources(path.join(utils.getGradleProjectPath(), 'src', 'main', 'liberty', 'config2', 'server.xml')); + editor = await new EditorView().openEditor('SystemResource.java') as TextEditor; - editor = await new EditorView().openEditor('server.xml') as TextEditor; - actualSeverXMLContent = await editor.getText(); + const textPressent = await editor.getText(); + if(textPressent.length > 0){ + await editor.clearText(); + } + + await editor.typeText("rest"); + + //open the assistant + const assist = await editor.toggleContentAssist(true); + // toggle can return void, so we need to make sure the object is present + if (assist) { + // to select an item use + await assist.select('rest_class') + } + + // close the assistant + await editor.toggleContentAssist(false); - assert(actualSeverXMLContent.length !== 0, 'Content of server.xml is not in coppied.'); - console.log('Sever.xml content:', actualSeverXMLContent); + const insertedCode = await editor.getText(); + assert(insertedCode.includes('public String methodname() {'), 'Snippet rest_class was not inserted correctly.'); - }).timeout(10000); + await editor.clearText(); + await editor.save(); + }).timeout(275000); - it('Should show diagnostic for server.xml invalid value', async () => { + it('check for diagnostic support', async() => { + await VSBrowser.instance.openResources(path.join(utils.getGradleProjectPath(), "src", "main", "java", "test", "gradle", "liberty", "web", "app", "SystemResource.java")); + + editor = await new EditorView().openEditor('SystemResource.java') as TextEditor; + + const textPressent = await editor.getText(); + if(textPressent.length > 0){ + await editor.clearText(); + } - await VSBrowser.instance.openResources(path.join(utils.getGradleProjectPath(), 'src', 'main', 'liberty', 'config2', 'server.xml')); - editor = await new EditorView().openEditor('server.xml') as TextEditor; + await editor.typeText("rest"); - const hverExpectdOutcome = `'wrong' is not a valid value of union type 'booleanType'.`; - const testHverTarget = ''; + //open the assistant + const assist = await editor.toggleContentAssist(true); + // toggle can return void, so we need to make sure the object is present + if (assist) { + // to select an item use + await assist.select('rest_class') + } - await editor.typeTextAt(17, 5, testHverTarget); - const focusTargtElemnt = editor.findElement(By.xpath("//*[contains(text(), 'wrong')]")); + let insertedCode = await editor.getText(); + // change the resource method from public to private + insertedCode = insertedCode.replace("public String", "private String"); + await editor.setText(insertedCode); await utils.delay(3000); - focusTargtElemnt.click(); - await editor.click(); - const actns = VSBrowser.instance.driver.actions(); - await actns.move({ origin: focusTargtElemnt }).perform(); - await utils.delay(5000); + const flaggedString = await editor.findElement(By.xpath("//*[contains(text(), \"methodname\")]")); - const hverContent = editor.findElement(By.className('hover-contents')); - const hverValue = await hverContent.getText(); - console.log("Hover text:" + hverValue); + const actions = VSBrowser.instance.driver.actions(); + await actions.move({ origin: flaggedString }).perform(); + await utils.delay(3000); - assert(hverValue.includes(hverExpectdOutcome), 'Did not get expected diagnostic in server.xml'); + const hoverValue = await editor.findElement(By.className('hover-row status-bar')); - editor.clearText(); - editor.setText(actualSeverXMLContent); - console.log("Content restored"); + const viewProblemLink = await hoverValue.findElement(By.xpath("//*[contains(text(), 'View Problem')]")); + await viewProblemLink.click(); - }).timeout(35000); + const fixOption = await editor.findElement(By.xpath("//*[contains(text(), \"Only public methods can be exposed as resource methods\")]")); + await utils.delay(2000); + const diagnostic = await fixOption.getText(); - it('Should apply quick fix for invalid value in server.xml', async () => { - const section = await new SideBarView().getContent().getSection(constants.GRADLE_PROJECT); - section.expand(); - await VSBrowser.instance.openResources(path.join(utils.getGradleProjectPath(), 'src', 'main', 'liberty', 'config2', 'server.xml')); + assert(diagnostic.includes("Only public methods can be exposed as resource methods"), "Did not find diagnostic help text."); - editor = await new EditorView().openEditor('server.xml') as TextEditor; - const stanzaSnipet = ""; - const expectedHoverData = ""; - await editor.typeTextAt(17, 5, stanzaSnipet); + // change back to original state + insertedCode = insertedCode.replace("private String", "public String"); + await editor.clearText(); + await editor.setText(insertedCode); await utils.delay(2000); - const flagedString = await editor.findElement(By.xpath("//*[contains(text(), '\"wrong\"')]")); - await utils.delay(7000); + + }).timeout(275000); + + it('check for qucikfix support', async() => { + await VSBrowser.instance.openResources(path.join(utils.getGradleProjectPath(), "src", "main", "java", "test", "gradle", "liberty", "web", "app", "SystemResource.java")); + + editor = await new EditorView().openEditor('SystemResource.java') as TextEditor; + + const textPressent = await editor.getText(); + if(textPressent.length > 0){ + await editor.clearText(); + } + + await editor.typeText("rest"); + + //open the assistant + const assist = await editor.toggleContentAssist(true); + // toggle can return void, so we need to make sure the object is present + if (assist) { + // to select an item use + await assist.select('rest_class') + } + + let insertedCode = await editor.getText(); + // change the resource method from public to private + insertedCode = insertedCode.replace("public String", "private String"); + await editor.setText(insertedCode); + await utils.delay(3000); + + const flaggedString = await editor.findElement(By.xpath("//*[contains(text(), \"methodname\")]")); const actions = VSBrowser.instance.driver.actions(); - await actions.move({ origin: flagedString }).perform(); + await actions.move({ origin: flaggedString }).perform(); await utils.delay(3000); const driver = VSBrowser.instance.driver; - const hoverTxt = await editor.findElement(By.className('hover-row status-bar')); - await utils.delay(2000); - - const qckFixPopupLink = await hoverTxt.findElement(By.xpath("//*[contains(text(), 'Quick Fix')]")); - await qckFixPopupLink.click(); + const hoverValue = await editor.findElement(By.className('hover-row status-bar')); - const hoverTaskBar = await editor.findElement(By.className('context-view monaco-component bottom left fixed')); - await hoverTaskBar.findElement(By.className('actionList')); - await utils.delay(2000); + const quickFixPopupLink = await hoverValue.findElement(By.xpath("//*[contains(text(), 'Quick Fix')]")); + await quickFixPopupLink.click(); - const pointerBlockedElement = await driver.findElement(By.css('.context-view-pointerBlock')); + const pointerBlockElementt = await driver.findElement(By.css('.context-view-pointerBlock')); // Setting pointer block element display value as none to choose option from Quickfix menu - if (pointerBlockedElement) { - await driver.executeScript("arguments[0].style.display = 'none';", pointerBlockedElement); + if (pointerBlockElementt) { + await driver.executeScript("arguments[0].style.display = 'none';", pointerBlockElementt); } else { console.log('pointerBlockElementt not found!'); } - const qckfixOption = await editor.findElement(By.xpath("//*[contains(text(), \"Replace with 'true'\")]")); - await qckfixOption.click(); - - const updatedSeverXMLContent = await editor.getText(); + const fixOption = await editor.findElement(By.xpath("//*[contains(text(), \"Make method public\")]")); + await fixOption.click(); await utils.delay(3000); - console.log("Content after Quick fix : ", updatedSeverXMLContent); - assert(updatedSeverXMLContent.includes(expectedHoverData), 'Quick fix not applied correctly for the invalid value in server.xml.'); - editor.clearText(); - editor.setText(actualSeverXMLContent); - console.log("Content restored"); + const updatedContent = await editor.getText(); + assert(updatedContent.includes('public String methodname'), 'quick fix not applied correctly.'); + await utils.delay(3000); - }).timeout(38000); + // change back to original state + insertedCode = insertedCode.replace("private String", "public String"); + await editor.clearText(); + }).timeout(275000); - after(() => { - utils.removeConfigDir(path.join(utils.getGradleProjectPath(), 'src', 'main', 'liberty', 'config2')); - console.log("Removed new config folder:"); - }); +}); -}); \ No newline at end of file diff --git a/src/test/resources/gradle/liberty.gradle.test.wrapper.app/src/main/java/test/gradle/liberty/web/app/SystemResource.java b/src/test/resources/gradle/liberty.gradle.test.wrapper.app/src/main/java/test/gradle/liberty/web/app/SystemResource.java new file mode 100644 index 00000000..e69de29b