From e05e8f1764d52a0524bb8a008ce25603613bfa86 Mon Sep 17 00:00:00 2001 From: tpluscode Date: Thu, 18 Jul 2019 09:06:51 +0200 Subject: [PATCH 1/4] fix(web): preselect core api by default --- app.hypermedia.testing.dsl.web/src/main/webapp/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.hypermedia.testing.dsl.web/src/main/webapp/index.html b/app.hypermedia.testing.dsl.web/src/main/webapp/index.html index e5ed1ac..07a3586 100644 --- a/app.hypermedia.testing.dsl.web/src/main/webapp/index.html +++ b/app.hypermedia.testing.dsl.web/src/main/webapp/index.html @@ -14,7 +14,7 @@

Example Hypertest DSL Web Editor

From 7976a4834546b49d2c860717a6235f1d0ac859d8 Mon Sep 17 00:00:00 2001 From: tpluscode Date: Thu, 18 Jul 2019 17:46:47 +0200 Subject: [PATCH 2/4] fix: code assist for With and Expect --- .../testing/dsl/ide/CoreIdeModule.xtend | 5 +++ .../testing/dsl/ide/HydraIdeModule.xtend | 5 +++ .../contentassist/CoreContentAssist.xtend | 31 +++++++++++++++++++ .../contentassist/HydraContentAssist.xtend | 25 +++++++++++++++ app.hypermedia.testing.dsl.parent.iml | 12 +++++++ 5 files changed, 78 insertions(+) create mode 100644 app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/editor/contentassist/CoreContentAssist.xtend create mode 100644 app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/editor/contentassist/HydraContentAssist.xtend create mode 100644 app.hypermedia.testing.dsl.parent.iml diff --git a/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/CoreIdeModule.xtend b/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/CoreIdeModule.xtend index c0e02b6..4eae152 100644 --- a/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/CoreIdeModule.xtend +++ b/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/CoreIdeModule.xtend @@ -3,9 +3,14 @@ */ package app.hypermedia.testing.dsl.ide +import app.hypermedia.testing.dsl.ide.editor.contentassist.CoreContentAssist +import org.eclipse.xtext.ide.editor.contentassist.IdeContentProposalProvider /** * Use this class to register ide components. */ class CoreIdeModule extends AbstractCoreIdeModule { + def Class bindIdeContentProposalProvider() { + return CoreContentAssist + } } diff --git a/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/HydraIdeModule.xtend b/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/HydraIdeModule.xtend index 5f68731..1b5476b 100644 --- a/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/HydraIdeModule.xtend +++ b/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/HydraIdeModule.xtend @@ -3,9 +3,14 @@ */ package app.hypermedia.testing.dsl.ide +import org.eclipse.xtext.ide.editor.contentassist.IdeContentProposalProvider +import app.hypermedia.testing.dsl.ide.editor.contentassist.HydraContentAssist /** * Use this class to register ide components. */ class HydraIdeModule extends AbstractHydraIdeModule { + def Class bindIdeContentProposalProvider() { + return HydraContentAssist + } } diff --git a/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/editor/contentassist/CoreContentAssist.xtend b/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/editor/contentassist/CoreContentAssist.xtend new file mode 100644 index 0000000..cac21e4 --- /dev/null +++ b/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/editor/contentassist/CoreContentAssist.xtend @@ -0,0 +1,31 @@ +package app.hypermedia.testing.dsl.ide.editor.contentassist + +import org.eclipse.xtext.ide.editor.contentassist.IdeContentProposalProvider +import org.eclipse.xtext.ide.editor.contentassist.ContentAssistContext +import org.eclipse.xtext.ide.editor.contentassist.IIdeContentProposalAcceptor +import org.eclipse.xtext.RuleCall +import org.eclipse.xtext.Keyword + +class CoreContentAssist extends IdeContentProposalProvider { + override dispatch void createProposals(RuleCall ruleCall, ContentAssistContext context, IIdeContentProposalAcceptor acceptor) { + switch (ruleCall.rule.name) { + case "ClassBlock": { + val entry = proposalCreator.createProposal('With Class', context) + acceptor.accept(entry, proposalPriorities.getDefaultPriority(entry)) + } + case "FollowStatement": { + val entry = proposalCreator.createProposal('Follow [uri]', context) + acceptor.accept(entry, proposalPriorities.getDefaultPriority(entry)) + } + } + } + + override protected filterKeyword(Keyword keyword, ContentAssistContext context) { + if (keyword.value == "Follow") { + return false + } + + super.filterKeyword(keyword, context) + } + +} \ No newline at end of file diff --git a/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/editor/contentassist/HydraContentAssist.xtend b/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/editor/contentassist/HydraContentAssist.xtend new file mode 100644 index 0000000..1210d03 --- /dev/null +++ b/app.hypermedia.testing.dsl.ide/src/main/java/app/hypermedia/testing/dsl/ide/editor/contentassist/HydraContentAssist.xtend @@ -0,0 +1,25 @@ +package app.hypermedia.testing.dsl.ide.editor.contentassist + +import org.eclipse.xtext.ide.editor.contentassist.IIdeContentProposalAcceptor +import org.eclipse.xtext.ide.editor.contentassist.ContentAssistContext +import org.eclipse.xtext.RuleCall + +class HydraContentAssist extends CoreContentAssist { + override dispatch void createProposals(RuleCall ruleCall, ContentAssistContext context, IIdeContentProposalAcceptor acceptor) { + switch (ruleCall.rule.name) { + case "RelaxedOperationBlock": { + val entry = proposalCreator.createProposal('With Operation', context) + acceptor.accept(entry, proposalPriorities.getDefaultPriority(entry)) + } + case "OperationBlock": { + var entry = proposalCreator.createProposal('With Operation', context) + acceptor.accept(entry, proposalPriorities.getDefaultPriority(entry)) + entry = proposalCreator.createProposal('Expect Operation', context) + acceptor.accept(entry, proposalPriorities.getDefaultPriority(entry)) + } + default: { + super._createProposals(ruleCall, context, acceptor) + } + } + } +} \ No newline at end of file diff --git a/app.hypermedia.testing.dsl.parent.iml b/app.hypermedia.testing.dsl.parent.iml new file mode 100644 index 0000000..f409c0e --- /dev/null +++ b/app.hypermedia.testing.dsl.parent.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file From b7785660d8f26dcc7e784c139c152ab42622802e Mon Sep 17 00:00:00 2001 From: tpluscode Date: Thu, 18 Jul 2019 18:43:14 +0200 Subject: [PATCH 3/4] test: test content assist --- app.hypermedia.testing.dsl.ide/.classpath | 25 ++++++++++++ app.hypermedia.testing.dsl.ide/pom.xml | 38 +++++++++++++++++++ .../contentassist/CoreCompletionTest.xtend | 21 ++++++++++ .../contentassist/HydraCompletionTest.xtend | 22 +++++++++++ 4 files changed, 106 insertions(+) create mode 100644 app.hypermedia.testing.dsl.ide/src/test/java/app/hypermedia/testing/dsl/ide/tests/editor/contentassist/CoreCompletionTest.xtend create mode 100644 app.hypermedia.testing.dsl.ide/src/test/java/app/hypermedia/testing/dsl/ide/tests/editor/contentassist/HydraCompletionTest.xtend diff --git a/app.hypermedia.testing.dsl.ide/.classpath b/app.hypermedia.testing.dsl.ide/.classpath index 91b64b1..3cd24f4 100644 --- a/app.hypermedia.testing.dsl.ide/.classpath +++ b/app.hypermedia.testing.dsl.ide/.classpath @@ -4,7 +4,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app.hypermedia.testing.dsl.ide/pom.xml b/app.hypermedia.testing.dsl.ide/pom.xml index 78f0eac..79bb96a 100644 --- a/app.hypermedia.testing.dsl.ide/pom.xml +++ b/app.hypermedia.testing.dsl.ide/pom.xml @@ -42,6 +42,27 @@ + + add-test-source + initialize + + add-test-source + add-test-resource + + + + src/test/xtext-gen + + + + src/test/xtext-gen + + **/*.java + + + + + @@ -101,6 +122,23 @@ + + org.junit.jupiter + junit-jupiter-api + test + 5.3.2 + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.eclipse.xtext + org.eclipse.xtext.testing + ${xtextVersion} + test + ${project.groupId} app.hypermedia.testing.dsl diff --git a/app.hypermedia.testing.dsl.ide/src/test/java/app/hypermedia/testing/dsl/ide/tests/editor/contentassist/CoreCompletionTest.xtend b/app.hypermedia.testing.dsl.ide/src/test/java/app/hypermedia/testing/dsl/ide/tests/editor/contentassist/CoreCompletionTest.xtend new file mode 100644 index 0000000..2a8c0ad --- /dev/null +++ b/app.hypermedia.testing.dsl.ide/src/test/java/app/hypermedia/testing/dsl/ide/tests/editor/contentassist/CoreCompletionTest.xtend @@ -0,0 +1,21 @@ +package app.hypermedia.testing.dsl.ide.tests.editor.contentassist + +import org.junit.jupiter.api.Test +import org.eclipse.xtext.testing.AbstractLanguageServerTest + +class CoreCompletionTest extends AbstractLanguageServerTest { + + new() { + super("api") + } + + @Test + def void testCompletion_01() { + testCompletion [ + model = '' + expectedCompletionItems = ''' + With Class -> With Class [[0, 0] .. [0, 0]] + ''' + ] + } +} diff --git a/app.hypermedia.testing.dsl.ide/src/test/java/app/hypermedia/testing/dsl/ide/tests/editor/contentassist/HydraCompletionTest.xtend b/app.hypermedia.testing.dsl.ide/src/test/java/app/hypermedia/testing/dsl/ide/tests/editor/contentassist/HydraCompletionTest.xtend new file mode 100644 index 0000000..f3e484a --- /dev/null +++ b/app.hypermedia.testing.dsl.ide/src/test/java/app/hypermedia/testing/dsl/ide/tests/editor/contentassist/HydraCompletionTest.xtend @@ -0,0 +1,22 @@ +package app.hypermedia.testing.dsl.ide.tests.editor.contentassist + +import org.junit.jupiter.api.Test +import org.eclipse.xtext.testing.AbstractLanguageServerTest + +class HydraCompletionTest extends AbstractLanguageServerTest { + + new() { + super("hydra") + } + + @Test + def void testCompletion_01() { + testCompletion [ + model = '' + expectedCompletionItems = ''' + With Class -> With Class [[0, 0] .. [0, 0]] + With Operation -> With Operation [[0, 0] .. [0, 0]] + ''' + ] + } +} From 3ce3f44db4dcc25c6ad6e8d373ac3131bd487c44 Mon Sep 17 00:00:00 2001 From: tpluscode Date: Fri, 19 Jul 2019 10:06:12 +0200 Subject: [PATCH 4/4] chore: remove intellij file --- app.hypermedia.testing.dsl.parent.iml | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 app.hypermedia.testing.dsl.parent.iml diff --git a/app.hypermedia.testing.dsl.parent.iml b/app.hypermedia.testing.dsl.parent.iml deleted file mode 100644 index f409c0e..0000000 --- a/app.hypermedia.testing.dsl.parent.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file