Browse Source

Fix failing tests for SQL date functions

Ladislav Gallay 10 years ago
parent
commit
e26251b187

+ 1 - 2
src/Database/Dialect/PostgresDialectTrait.php

@@ -135,8 +135,7 @@ trait PostgresDialectTrait
                     ->type(' + INTERVAL')
                     ->iterateParts(function ($p, $key) {
                         if ($key === 1) {
-                            $interval = sprintf("'%s'", key($p));
-                            $p = [$interval => 'literal'];
+                            $p = sprintf("'%s'", $p);
                         }
                         return $p;
                     });

+ 2 - 2
src/Database/Dialect/SqliteDialectTrait.php

@@ -120,7 +120,7 @@ trait SqliteDialectTrait
                     ->type(' ,')
                     ->iterateParts(function ($p, $key) {
                         if ($key === 0) {
-                            $value = rtrim(key($p), 's');
+                            $value = rtrim($p, 's');
                             if (isset($this->_dateParts[$value])) {
                                 $p = '%' . $this->_dateParts[$value];
                             }
@@ -134,7 +134,7 @@ trait SqliteDialectTrait
                     ->type(',')
                     ->iterateParts(function ($p, $key) {
                         if ($key === 1) {
-                            $p = key($p);
+                            $p = ['value' => $p, 'type' => null];
                         }
                         return $p;
                     });

+ 2 - 2
src/Database/Dialect/SqlserverDialectTrait.php

@@ -243,9 +243,9 @@ trait SqlserverDialectTrait
                 $params = [];
                 $visitor = function ($p, $key) use (&$params) {
                     if ($key === 0) {
-                        $params[2] = $value;
+                        $params[2] = $p;
                     } else {
-                        $valueUnit = explode(' ', key($p));
+                        $valueUnit = explode(' ', $p);
                         $params[0] = $valueUnit[1];
                         $params[1] = $valueUnit[0];
                     }

+ 9 - 5
tests/TestCase/Database/QueryTest.php

@@ -2681,24 +2681,28 @@ class QueryTest extends TestCase
                 'ye' => $query->func()->extract('year', 'created'),
                 'wd' => $query->func()->weekday('created'),
                 'dow' => $query->func()->dayOfWeek('created'),
-                'addDays' => $query->func()->dateAdd('created', +2, 'days'),
-                'minusYears' => $query->func()->dateAdd('created', -2, 'years')
+                'addDays' => $query->func()->dateAdd('created', +2, 'day'),
+                'substractYears' => $query->func()->dateAdd('created', -2, 'year')
             ])
             ->from('users')
             ->where(['username' => 'mariano'])
             ->execute()
             ->fetchAll('assoc');
+        $result[0]['m'] = ltrim($result[0]['m'], '0');
+        $result[0]['me'] = ltrim($result[0]['me'], '0');
+        $result[0]['addDays'] = substr($result[0]['addDays'], 0, 19);
+        $result[0]['substractYears'] = substr($result[0]['substractYears'], 0, 19);
         $expected = [
             'd' => '17',
-            'm' => '03',
+            'm' => '3',
             'y' => '2007',
             'de' => '17',
-            'me' => '03',
+            'me' => '3',
             'ye' => '2007',
             'wd' => '6', // Saturday
             'dow' => '6',
             'addDays' => '2007-03-19 01:16:23',
-            'minusYears' => '2005-03-17 01:16:23'
+            'substractYears' => '2005-03-17 01:16:23'
         ];
         $this->assertEquals($expected, $result[0]);
     }