package org.elixir_lang.structure_view.element;
import com.intellij.psi.PsiElement;
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase;
import org.elixir_lang.psi.call.Call;
public class CallDefinitionHeadTest extends LightPlatformCodeInsightFixtureTestCase {
/*
* Tests
*/
public void testIssue468() {
myFixture.configureByFile("issue_468.ex");
assertIssue468CallDefinitionHeadClauseHead();
}
public void testSingleWhen() {
myFixture.configureByFile("single_when.ex");
assertIssue468CallDefinitionHeadClauseHead();
}
public void testNoWhen() {
myFixture.configureByFile("no_when.ex");
assertIssue468CallDefinitionHeadClauseHead();
}
/*
* Protected Instance Methods
*/
@Override
protected String getTestDataPath() {
return "testData/org/elixir_lang/structure_view/element/call_definition_head";
}
/*
* Private Instance Methods
*/
private void assertIssue468CallDefinitionHeadClauseHead() {
PsiElement element = myFixture
.getFile()
.findElementAt(myFixture.getCaretOffset())
.getParent()
.getParent();
assertNotNull(element);
assertInstanceOf(element, Call.class);
Call call = (Call) element;
assertTrue("Call at caret is not a call definition clause", CallDefinitionClause.is(call));
PsiElement head = CallDefinitionClause.head(call);
assertNotNull("Call definition has a null head", head);
assertEquals(
"create(state = %__MODULE__{ecto_schema_module: ecto_schema_module, view: view}, params)",
CallDefinitionHead.stripGuard(head).getText()
);
}
}