summaryrefslogtreecommitdiffstats
path: root/tests/utils/MiscTest.php
diff options
context:
space:
mode:
authorDan Ungureanu <udan1107@gmail.com>2015-06-12 20:09:54 +0300
committerDan Ungureanu <udan1107@gmail.com>2015-06-12 20:09:54 +0300
commitf9bafd808b5780ec6c185fc705d506139e70ac4a (patch)
tree6444dabee79cd9e7a193da481fa5b2eda6df5811 /tests/utils/MiscTest.php
parent4bee88f8bdde1aaf87b6125c2defc238472c5e02 (diff)
downloadsql-parser-f9bafd808b5780ec6c185fc705d506139e70ac4a.zip
sql-parser-f9bafd808b5780ec6c185fc705d506139e70ac4a.tar.gz
sql-parser-f9bafd808b5780ec6c185fc705d506139e70ac4a.tar.bz2
Added method that extracts aliases map.
Improved field parser. Support for joins. Added tests. Minor documentation fix.
Diffstat (limited to 'tests/utils/MiscTest.php')
-rw-r--r--tests/utils/MiscTest.php86
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/utils/MiscTest.php b/tests/utils/MiscTest.php
new file mode 100644
index 0000000..a1f5194
--- /dev/null
+++ b/tests/utils/MiscTest.php
@@ -0,0 +1,86 @@
+<?php
+
+use SqlParser\Parser;
+use SqlParser\Utils\Misc;
+
+class MiscTest extends TestCase
+{
+
+ /**
+ * @dataProvider getAliasesProvider
+ */
+ public function testGetAliases($query, $db, array $expected)
+ {
+ $parser = new Parser($query);
+ $this->assertEquals($expected, Misc::getAliases($parser->statements[0], $db));
+ }
+
+ public function getAliasesProvider()
+ {
+ return array(
+ array(
+ 'select i.name as `n`,abcdef gh from qwerty i',
+ 'mydb',
+ array(
+ 'mydb' => array(
+ 'alias' => null,
+ 'tables' => array(
+ 'qwerty' => array(
+ 'alias' => 'i',
+ 'columns' => array(
+ 'name' => 'n',
+ 'abcdef' => 'gh'
+ )
+ )
+ )
+ )
+ )
+ ),
+ array(
+ 'select film_id id,title from film',
+ 'sakila',
+ array(
+ 'sakila' => array(
+ 'alias' => null,
+ 'tables' => array(
+ 'film' => array(
+ 'alias' => null,
+ 'columns' => array(
+ 'film_id' => 'id'
+ )
+ )
+ )
+ )
+ )
+ ),
+ array(
+ 'select `sakila`.`A`.`actor_id` as aid,`F`.`film_id` `fid`,'
+ . 'last_update updated from `sakila`.actor A join `film_actor` as '
+ . '`F` on F.actor_id = A.`actor_id`',
+ 'sakila',
+ array(
+ 'sakila' => array(
+ 'alias' => null,
+ 'tables' => array(
+ 'film_actor' => array(
+ 'alias' => 'F',
+ 'columns' => array(
+ 'film_id' => 'fid',
+ 'last_update' => 'updated'
+ )
+ ),
+ 'actor' => array(
+ 'alias'=> 'A',
+ 'columns' => array(
+ 'actor_id' => 'aid',
+ 'last_update' => 'updated'
+ )
+ )
+ )
+ )
+ )
+ ),
+ );
+ }
+
+}