json schema, one more test for navigation: "$ref" -> local definition

This commit is contained in:
irengrig
2017-01-31 21:07:13 +01:00
parent 97d371a6ae
commit e72bbca2bf
2 changed files with 47 additions and 0 deletions
@@ -16,6 +16,9 @@
package com.jetbrains.jsonSchema;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.json.psi.JsonObject;
import com.intellij.json.psi.JsonProperty;
import com.intellij.json.psi.JsonValue;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.extensions.AreaPicoContainer;
@@ -503,4 +506,36 @@ public class JsonSchemaCrossReferencesTest extends JsonSchemaHeavyAbstractTest {
}
});
}
public void testNavigateToDefinitionByRef() throws Exception {
skeleton(new Callback() {
@Override
public void registerSchemes() {
final String moduleDir = getModuleDir(getProject());
addSchema(new JsonSchemaMappingsConfigurationBase.SchemaInfo("one", moduleDir + "/withReferenceToDefinitionSchema.json", false, Collections.emptyList()));
}
@Override
public void configureFiles() throws Exception {
configureByFiles(null, "withReferenceToDefinitionSchema.json");
}
@Override
public void doCheck() {
int offset = myEditor.getCaretModel().getPrimaryCaret().getOffset();
final PsiReference referenceAt = myFile.findReferenceAt(offset);
Assert.assertNotNull(referenceAt);
final PsiElement resolve = referenceAt.resolve();
Assert.assertNotNull(resolve);
Assert.assertEquals("\"findDefinition\"", resolve.getText());
final PsiElement parent = resolve.getParent();
Assert.assertTrue(parent instanceof JsonProperty);
final JsonValue value = ((JsonProperty)parent).getValue();
Assert.assertTrue(value instanceof JsonObject);
final JsonProperty anEnum = ((JsonObject)value).findProperty("enum");
Assert.assertNotNull(anEnum);
Assert.assertEquals("[1,4,8]", anEnum.getValue().getText());
}
});
}
}
@@ -0,0 +1,12 @@
{
"definitions": {
"findDefinition" : {
"enum": [1,4,8]
}
},
"properties": {
"referent": {
"$ref": "#/definitions/<caret>findDefinition"
}
}
}