summaryrefslogtreecommitdiff
path: root/tests/unit/Data/DbCommon/CommandBuilderMssqlTest.php
diff options
context:
space:
mode:
authorFabio Bas <ctrlaltca@gmail.com>2016-03-25 17:55:51 +0100
committerFabio Bas <ctrlaltca@gmail.com>2016-03-25 17:55:51 +0100
commita3388622287e218beddfa14a47ed677d4307b36b (patch)
tree1b4c7ac8597b1cc798b6683d4a81c90d38de12f6 /tests/unit/Data/DbCommon/CommandBuilderMssqlTest.php
parentc7fd3e1167b6f2fa7746edbd0fb8f8c1694c61f9 (diff)
Removed simpletest and moved all tests in the unit tree
Tests are executed now, but a lot of them need fixing.
Diffstat (limited to 'tests/unit/Data/DbCommon/CommandBuilderMssqlTest.php')
-rw-r--r--tests/unit/Data/DbCommon/CommandBuilderMssqlTest.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/unit/Data/DbCommon/CommandBuilderMssqlTest.php b/tests/unit/Data/DbCommon/CommandBuilderMssqlTest.php
new file mode 100644
index 00000000..893a8ca6
--- /dev/null
+++ b/tests/unit/Data/DbCommon/CommandBuilderMssqlTest.php
@@ -0,0 +1,47 @@
+<?php
+
+Prado::using('System.Data.*');
+Prado::using('System.Data.Common.Mssql.TMssqlCommandBuilder');
+
+/**
+ * @package System.Data.DbCommon
+ */
+class CommandBuilderMssqlTest extends PHPUnit_Framework_TestCase
+{
+ protected static $sql = array(
+ 'simple' => 'SELECT username, age FROM accounts',
+ 'multiple' => 'select a.username, b.name from accounts a, table1 b where a.age = b.id1',
+ 'ordering' => 'select a.username, b.name, a.age from accounts a, table1 b where a.age = b.id1 order by age DESC, name',
+ 'index' => 'select a.username, b.name, a.age from accounts a, table1 b where a.age = b.id1 ORDER BY 1 DESC, 2 ASC',
+ //'compute' => 'SELECT username, age FROM accounts order by age compute avg(age)',
+ );
+
+ function test_limit()
+ {
+ $builder = new TMssqlCommandBuilder();
+
+ $sql = $builder->applyLimitOffset(self::$sql['simple'], 3);
+ $expect = 'SELECT TOP 3 username, age FROM accounts';
+ $this->assertEqual($expect, $sql);
+
+
+ $sql = $builder->applyLimitOffset(self::$sql['simple'], 3, 2);
+ $expect = 'SELECT * FROM (SELECT TOP 3 * FROM (SELECT TOP 5 username, age FROM accounts) as [__inner top table__] ) as [__outer top table__] ';
+ $this->assertEqual($expect, $sql);
+
+ $sql = $builder->applyLimitOffset(self::$sql['multiple'], 3, 2);
+ $expect = 'SELECT * FROM (SELECT TOP 3 * FROM (SELECT TOP 5 a.username, b.name from accounts a, table1 b where a.age = b.id1) as [__inner top table__] ) as [__outer top table__] ';
+ $this->assertEqual($sql, $expect);
+
+ $sql = $builder->applyLimitOffset(self::$sql['ordering'], 3, 2);
+ $expect = 'SELECT * FROM (SELECT TOP 3 * FROM (SELECT TOP 5 a.username, b.name, a.age from accounts a, table1 b where a.age = b.id1 order by age DESC, name) as [__inner top table__] ORDER BY age ASC, name DESC) as [__outer top table__] ORDER BY age DESC, name ASC';
+ $this->assertEqual($sql, $expect);
+
+ $sql = $builder->applyLimitOffset(self::$sql['index'], 3, 2);
+ $expect = 'SELECT * FROM (SELECT TOP 3 * FROM (SELECT TOP 5 a.username, b.name, a.age from accounts a, table1 b where a.age = b.id1 ORDER BY 1 DESC, 2 ASC) as [__inner top table__] ORDER BY 1 ASC, 2 DESC) as [__outer top table__] ORDER BY 1 DESC, 2 ASC';
+ $this->assertEqual($expect, $sql);
+
+ // $sql = $builder->applyLimitOffset(self::$sql['compute'], 3, 2);
+ // var_dump($sql);
+ }
+}