package fr.adrienbrault.idea.symfony2plugin.tests.actions.generator.naming;
import fr.adrienbrault.idea.symfony2plugin.Settings;
import fr.adrienbrault.idea.symfony2plugin.action.generator.naming.JavascriptServiceNameStrategy;
import fr.adrienbrault.idea.symfony2plugin.action.generator.naming.ServiceNameStrategyParameter;
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
import java.io.File;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class JavascriptServiceNameStrategyTest extends SymfonyLightCodeInsightFixtureTestCase {
public void setUp() throws Exception {
super.setUp();
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject("classes.php"));
}
protected String getTestDataPath() {
return new File(this.getClass().getResource("fixtures").getFile()).getAbsolutePath();
}
public void testGetServiceName() {
JavascriptServiceNameStrategy defaultNaming = new JavascriptServiceNameStrategy();
Settings.getInstance(getProject()).serviceJsNameStrategy = "return args.projectName;";
assertTrue(defaultNaming.getServiceName(new ServiceNameStrategyParameter(getProject(), "asas")).contains("light"));
Settings.getInstance(getProject()).serviceJsNameStrategy = "return args.className.replace(\"Foo\", \"Bar\");";
assertEquals("Bar\\Class", defaultNaming.getServiceName(getParameter("Foo\\Class")));
Settings.getInstance(getProject()).serviceJsNameStrategy = "return args.absolutePath;";
assertTrue("Bar\\Class", defaultNaming.getServiceName(getParameter("MyClass\\Is\\Nice\\Nicer")).endsWith("classes.php"));
Settings.getInstance(getProject()).serviceJsNameStrategy = "return null";
assertNull(defaultNaming.getServiceName(getParameter("MyClass\\Is\\Nice\\Nicer")));
Settings.getInstance(getProject()).serviceJsNameStrategy = "return args.defaultNaming;";
assertEquals("my_class.is_nice.nicer", defaultNaming.getServiceName(getParameter("MyClassBundle\\Is\\Nice\\Nicer")));
Settings.getInstance(getProject()).serviceJsNameStrategy = null;
}
private ServiceNameStrategyParameter getParameter(String className) {
return new ServiceNameStrategyParameter(getProject(), className);
}
}