package com.cedricziel.idea.fluid.codeInsight.template.postfix.templates; import com.cedricziel.idea.fluid.FluidCompletionAutoPopupTestCase; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.impl.LookupImpl; import com.intellij.codeInsight.template.impl.LiveTemplateCompletionContributor; import com.intellij.codeInsight.template.postfix.completion.PostfixTemplateLookupElement; import com.intellij.codeInsight.template.postfix.settings.PostfixTemplatesSettings; import com.intellij.testFramework.EdtTestUtil; import java.util.HashMap; abstract public class AbtractTemplateTest extends FluidCompletionAutoPopupTestCase { @Override public void setUp() throws Exception { super.setUp(); LiveTemplateCompletionContributor.setShowTemplatesInTests(false, myFixture.getTestRootDisposable()); } @Override public void tearDown() throws Exception { try { PostfixTemplatesSettings settings = PostfixTemplatesSettings.getInstance(); assertNotNull(settings); settings.setProviderToDisabledTemplates(new HashMap<>()); settings.setPostfixTemplatesEnabled(true); settings.setTemplatesCompletionEnabled(true); } finally { super.tearDown(); } } protected void doCompleteTest(String textToType, char c) { configureByFile(); type(textToType); assertNotNull(getLookup()); myFixture.type(c); checkResultByFile(); } private void configureByFile() { EdtTestUtil.runInEdtAndWait(() -> myFixture.configureByFile(getTestName(true) + ".fluid")); } private void checkResultByFile() { myFixture.checkResultByFile(getTestName(true) + "_after.fluid", true); } protected void testLiveTemplateIsAvailable(String completionChar, String templateContent, Class templateClass) { myFixture.configureByText("foo.fluid", templateContent); type(completionChar); LookupImpl lookup = getLookup(); assertNotNull(lookup); LookupElement item = lookup.getCurrentItem(); assertNotNull(item); assertInstanceOf(item, PostfixTemplateLookupElement.class); assertInstanceOf(((PostfixTemplateLookupElement) item).getPostfixTemplate(), templateClass); } }