package fr.adrienbrault.idea.symfony2plugin.tests.doctrine.dbal;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.patterns.XmlPatterns;
import com.jetbrains.php.lang.PhpFileType;
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
import java.io.File;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
* @see fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dbal.DoctrineDbalQbGotoCompletionRegistrar
*/
public class DoctrineDbalQbGotoCompletionRegistrarTest extends SymfonyLightCodeInsightFixtureTestCase {
public void setUp() throws Exception {
super.setUp();
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject("classes.php"));
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject("doctrine.orm.xml"));
}
public String getTestDataPath() {
return new File(this.getClass().getResource("fixtures").getFile()).getAbsolutePath();
}
/**
* @see fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dbal.DoctrineDbalQbGotoCompletionRegistrar
*/
public void testDBALTableNameCompletion() {
for (String s : new String[]{"update", "insert", "from", "delete"}) {
assertCompletionContains(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Query\\QueryBuilder */\n" +
"$foo->" + s + "('<caret>');",
"cms_users"
);
}
for (String s : new String[]{"innerJoin", "leftJoin", "join", "rightJoin"}) {
assertCompletionContains(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Query\\QueryBuilder */\n" +
"$foo->" + s + "('', '<caret>');",
"cms_users"
);
}
}
/**
* @see fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dbal.DoctrineDbalQbGotoCompletionRegistrar
*/
public void testDBALTableNameNavigation() {
for (String s : new String[]{"update", "insert", "from"}) {
assertNavigationMatch(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Query\\QueryBuilder */\n" +
"$foo->" + s + "('cms_users<caret>');"
);
}
for (String s : new String[]{"innerJoin", "leftJoin", "join", "rightJoin"}) {
assertNavigationMatch(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Query\\QueryBuilder */\n" +
"$foo->" + s + "('', 'cms_users<caret>');"
);
}
}
/**
* @see fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dbal.DoctrineDbalQbGotoCompletionRegistrar
*/
public void testDBALConnectionTableNameCompletion() {
for (String s : new String[]{"insert", "update"}) {
assertCompletionContains(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Connection */\n" +
"$foo->" + s + "('<caret>');",
"cms_users"
);
}
}
/**
* @see fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dbal.DoctrineDbalQbGotoCompletionRegistrar
*/
public void testDBALConnectionFieldArrayCompletion() {
for (String s : new String[]{"insert", "update"}) {
assertCompletionContains(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Connection */\n" +
"$foo->" + s + "('cms_users', ['<caret>']);",
"name", "user_email"
);
assertCompletionContains(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Connection */\n" +
"$foo->" + s + "('cms_users', ['' => '', '<caret>' => '']);",
"name", "user_email"
);
}
}
/**
* @see fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dbal.DoctrineDbalQbGotoCompletionRegistrar
*/
public void testDBALConnectionFieldArrayNavigation() {
for (String s : new String[]{"insert", "update"}) {
assertNavigationMatch(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Connection */\n" +
"$foo->" + s + "('cms_users', ['name<caret>']);",
XmlPatterns.xmlTag().withName("field")
);
assertNavigationMatch(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Connection */\n" +
"$foo->" + s + "('cms_users', ['' => '', 'user_email<caret>' => '']);",
XmlPatterns.xmlTag().withName("field")
);
}
}
/**
* @see fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dbal.DoctrineDbalQbGotoCompletionRegistrar
*/
public void testDBALAliasRelationCompletion() {
for (String s : new String[]{"innerJoin", "leftJoin", "join", "rightJoin"}) {
assertCompletionContains(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Query\\QueryBuilder */\n" +
"$foo->" +s + "('', 'foo', '<caret>');",
"foo"
);
}
assertCompletionContains(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Query\\QueryBuilder */\n" +
"$foo->join('foo', 'foo', '<caret>');",
"f", "foo", "foo_foo", "fooFoo"
);
assertCompletionContains(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Query\\QueryBuilder */\n" +
"$foo->join('foo_bar', 'foo_bar', '<caret>');",
"f", "fb", "foo_bar", "foo_bar_foo_bar", "fooBar", "fooBarFooBar"
);
assertCompletionContains(PhpFileType.INSTANCE, "<?php" +
"/** @var $foo \\Doctrine\\DBAL\\Query\\QueryBuilder */\n" +
"$foo->join('foo_bar', 'foo_bar_foo_bars', '<caret>');",
"fbfb"
);
}
}