mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 11:50:54 +07:00
json/yaml with schema: fix and unbomb quick fix tests
GitOrigin-RevId: 1124f231f384cb1f4078ddcc650deec0de5d09b8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e9bf58c9b2
commit
eae715139f
@@ -20,6 +20,7 @@ import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.source.tree.LeafPsiElement;
|
||||
@@ -77,6 +78,7 @@ public class AddMissingPropertyFix implements LocalQuickFix, BatchQuickFix<Commo
|
||||
WriteAction.run(() -> editor.getCaretModel().moveToOffset(newElement.getTextRange().getEndOffset()));
|
||||
return;
|
||||
}
|
||||
PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(editor.getDocument());
|
||||
TemplateManager templateManager = TemplateManager.getInstance(project);
|
||||
TemplateBuilderImpl builder = new TemplateBuilderImpl(newElement);
|
||||
String text = value.getText();
|
||||
|
||||
@@ -2,16 +2,12 @@
|
||||
package com.jetbrains.jsonSchema.fixes;
|
||||
|
||||
import com.intellij.codeInspection.InspectionProfileEntry;
|
||||
import com.intellij.idea.Bombed;
|
||||
import com.intellij.json.JsonLanguage;
|
||||
import com.intellij.openapi.fileTypes.LanguageFileType;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.Predicate;
|
||||
import com.jetbrains.jsonSchema.impl.inspections.JsonSchemaComplianceInspection;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
@Bombed(user = "Anton.Lobov", month = Calendar.NOVEMBER, day = 1)
|
||||
public class JsonSchemaQuickFixTest extends JsonSchemaQuickFixTestBase {
|
||||
@Override
|
||||
protected String getTestFileName() {
|
||||
|
||||
@@ -2,8 +2,14 @@
|
||||
package com.jetbrains.jsonSchema.fixes;
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.stubs.StubTextInconsistencyException;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
import com.intellij.testFramework.PsiTestUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.jetbrains.jsonSchema.JsonSchemaHighlightingTestBase;
|
||||
import org.intellij.lang.annotations.Language;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -17,28 +23,20 @@ public abstract class JsonSchemaQuickFixTestBase extends JsonSchemaHighlightingT
|
||||
return PlatformTestUtil.getCommunityPath() + "/json/tests/testData/jsonSchema/highlighting";
|
||||
}
|
||||
|
||||
protected void doTest(@Language("JSON") @NotNull String schema, @NotNull String text, String fixName, String afterFix) throws Exception {
|
||||
configureInitially(schema, text, "json");
|
||||
myFixture.doHighlighting();
|
||||
protected void doTest(@Language("JSON") @NotNull String schema, @NotNull String text, String fixName, String afterFix) {
|
||||
PsiFile psiFile = configureInitially(schema, text, "json");
|
||||
myFixture.checkHighlighting();
|
||||
List<IntentionAction> intentions = myFixture.getAvailableIntentions();
|
||||
IntentionAction action = ContainerUtil.find(intentions, o -> fixName.equals(o.getFamilyName()));
|
||||
action.invoke(getProject(), myFixture.getEditor(), myFixture.getFile());
|
||||
String fileText = myFixture.getFile().getText();
|
||||
int caretIndex = afterFix.indexOf("<caret>");
|
||||
if (caretIndex >= 0) {
|
||||
int caretOffset = myFixture.getEditor().getCaretModel().getOffset();
|
||||
fileText = fileText.substring(0, caretOffset - 1) + "<caret>" + fileText.substring(caretOffset - 1);
|
||||
}
|
||||
assertEquals(afterFix, fileText);
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
try {
|
||||
ShowIntentionActionsHandler.chooseActionAndInvoke(psiFile, myFixture.getEditor(), action, action.getText());
|
||||
}
|
||||
catch (StubTextInconsistencyException e) {
|
||||
PsiTestUtil.compareStubTexts(e);
|
||||
}
|
||||
});
|
||||
UIUtil.dispatchAllInvocationEvents();
|
||||
myFixture.checkResult(afterFix);
|
||||
}
|
||||
/*
|
||||
@Override
|
||||
@NotNull
|
||||
protected PsiFile configureInitially(@NotNull String schema,
|
||||
@NotNull String text,
|
||||
@NotNull String schemaExt) {
|
||||
myFixture.enableInspections(getInspectionProfile());
|
||||
registerProvider(schema, schemaExt);
|
||||
return myFixture.addFileToProject("json_schema_test_r/" + getTestFileName(), text);
|
||||
}*/
|
||||
}
|
||||
|
||||
@@ -2,16 +2,12 @@
|
||||
package org.jetbrains.yaml.schema;
|
||||
|
||||
import com.intellij.codeInspection.InspectionProfileEntry;
|
||||
import com.intellij.idea.Bombed;
|
||||
import com.intellij.openapi.fileTypes.LanguageFileType;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.Predicate;
|
||||
import com.jetbrains.jsonSchema.fixes.JsonSchemaQuickFixTestBase;
|
||||
import org.jetbrains.yaml.YAMLLanguage;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
@Bombed(user = "Anton.Lobov", month = Calendar.NOVEMBER, day = 1)
|
||||
public class YamlByJsonSchemaQuickFixTest extends JsonSchemaQuickFixTestBase {
|
||||
@Override
|
||||
protected String getTestFileName() {
|
||||
@@ -29,7 +25,7 @@ public class YamlByJsonSchemaQuickFixTest extends JsonSchemaQuickFixTestBase {
|
||||
YAMLLanguage.INSTANCE);
|
||||
}
|
||||
|
||||
public void testAddMissingProperty() throws Exception {
|
||||
public void testAddMissingProperty() {
|
||||
doTest("{\n" +
|
||||
" \"properties\": {\n" +
|
||||
" \"a\": {\n" +
|
||||
@@ -42,18 +38,18 @@ public class YamlByJsonSchemaQuickFixTest extends JsonSchemaQuickFixTestBase {
|
||||
"c: 5");
|
||||
}
|
||||
|
||||
public void testRemoveProhibitedProperty() throws Exception {
|
||||
public void testRemoveProhibitedProperty() {
|
||||
doTest("{\n" +
|
||||
" \"properties\": {\n" +
|
||||
" \"a\": {},\n" +
|
||||
" \"c\": {}\n" +
|
||||
" },\n" +
|
||||
" \"additionalProperties\": false\n" +
|
||||
"}", "a: 5\n<warning>b: 6</warning>\nc: 7", "Remove prohibited property 'b'", "a: 5\n" +
|
||||
"}", "a: 5\n<warning>b: 6<caret></warning>\nc: 7", "Remove prohibited property 'b'", "a: 5\n" +
|
||||
"c: 7");
|
||||
}
|
||||
|
||||
public void testEmptyFile() throws Exception {
|
||||
public void testEmptyFile() {
|
||||
doTest("{\n" +
|
||||
" \"type\": \"object\",\n" +
|
||||
"\n" +
|
||||
@@ -67,7 +63,7 @@ public class YamlByJsonSchemaQuickFixTest extends JsonSchemaQuickFixTestBase {
|
||||
" - ");
|
||||
}
|
||||
|
||||
public void testEmptyObject() throws Exception {
|
||||
public void testEmptyObject() {
|
||||
doTest("{\n" +
|
||||
" \"type\": \"object\",\n" +
|
||||
"\n" +
|
||||
@@ -84,12 +80,12 @@ public class YamlByJsonSchemaQuickFixTest extends JsonSchemaQuickFixTestBase {
|
||||
" },\n" +
|
||||
" \"required\": [\"versionAsStringArray\"]\n" +
|
||||
"}", "versionAsStringArray:\n" +
|
||||
"<warning> </warning>", "Add missing property 'xxx'", "versionAsStringArray:\n" +
|
||||
"<warning> <caret></warning>", "Add missing property 'xxx'", "versionAsStringArray:\n" +
|
||||
" xxx:\n" +
|
||||
" - ");
|
||||
}
|
||||
|
||||
public void testEmptyObjectMultipleProps() throws Exception {
|
||||
public void testEmptyObjectMultipleProps() {
|
||||
doTest("{\n" +
|
||||
" \"type\": \"object\",\n" +
|
||||
"\n" +
|
||||
@@ -112,7 +108,7 @@ public class YamlByJsonSchemaQuickFixTest extends JsonSchemaQuickFixTestBase {
|
||||
" },\n" +
|
||||
" \"required\": [\"versionAsStringArray\"]\n" +
|
||||
"}", "versionAsStringArray:\n" +
|
||||
"<warning> </warning>","Add missing properties 'xxx', 'yyy', 'zzz'", "versionAsStringArray:\n" +
|
||||
"<warning> <caret></warning>","Add missing properties 'xxx', 'yyy', 'zzz'", "versionAsStringArray:\n" +
|
||||
" xxx: 0\n" +
|
||||
" yyy:\n" +
|
||||
" zzz: 0");
|
||||
|
||||
Reference in New Issue
Block a user