package org.elixir_lang.action;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import org.elixir_lang.psi.ElixirFile;
import java.io.IOException;
/**
* @see <a href="https://confluence.jetbrains.com/display/IntelliJIDEA/Completion+Test">https://confluence.jetbrains.com/display/IntelliJIDEA/Completion+Test"</a>
*/
public class CreateElixirModuleActionTest extends LightCodeInsightFixtureTestCase {
public static final String TEMPLATE_NAME = "Elixir Module";
public void testCamelCaseAliasIsLowerCaseUnderscored() throws IOException {
checkModuleFile("FooBar", "foo_bar.ex");
}
public void testAliasDotAliasIsDirectorySlashFile() throws IOException {
checkModuleFile("Foo.Bar", "foo/bar.ex");
}
public void testCamelCaseAliasDotCamelCaseAliasIsLowerCaseUnderscored() throws IOException {
checkModuleFile("CamelCaseOne.CamelCaseTwo", "camel_case_one/camel_case_two.ex");
}
private void checkModuleFile(final String moduleName, String path) throws IOException {
ActionManager actionManager = ActionManager.getInstance();
final CreateElixirModuleAction elixirNewFileAction = (CreateElixirModuleAction) actionManager.getAction("Elixir.NewFile");
// @see https://devnet.jetbrains.com/message/5539349#5539349
VirtualFile directoryVirtualFile = myFixture.getTempDirFixture().findOrCreateDir("");
final PsiDirectory directory = myFixture.getPsiManager().findDirectory(directoryVirtualFile);
Application application = ApplicationManager.getApplication();
application.runWriteAction(new Runnable() {
@Override
public void run() {
ElixirFile file = elixirNewFileAction.createFile(moduleName, TEMPLATE_NAME, directory);
assertNotNull("Expected CreateElixirModuleAction.createFile to create an ElixirFile", file);
}
});
boolean ignoreTrailingWhitespaces = true;
myFixture.checkResultByFile(path, path, ignoreTrailingWhitespaces);
}
@Override
protected String getTestDataPath() {
return "testData/org/elixir_lang/action/create_elixir_module_action_test";
}
}