Browse Source

Fix sorting of `DateTimeImmutable` instances.

ndm2 10 years ago
parent
commit
162336b669

+ 2 - 2
src/Collection/Iterator/SortIterator.php

@@ -15,7 +15,7 @@
 namespace Cake\Collection\Iterator;
 
 use Cake\Collection\Collection;
-use DateTime;
+use DateTimeInterface;
 
 /**
  * An iterator that will return the passed items in order. The order is given by
@@ -68,7 +68,7 @@ class SortIterator extends Collection
         $results = [];
         foreach ($items as $key => $value) {
             $value = $callback($value);
-            if ($value instanceof DateTime && $type === SORT_NUMERIC) {
+            if ($value instanceof DateTimeInterface && $type === SORT_NUMERIC) {
                 $value = $value->format('U');
             }
             $results[$key] = $value;

+ 4 - 5
tests/TestCase/Collection/Iterator/SortIteratorTest.php

@@ -203,9 +203,8 @@ class SortIteratorTest extends TestCase
         $items = new ArrayObject([
             new \DateTime('2014-07-21'),
             new \DateTime('2015-06-30'),
-            new \DateTime('2013-08-12')
+            new \DateTimeImmutable('2013-08-12')
         ]);
-        $a = new \DateTime();
 
         $callback = function ($a) {
             return $a->add(new \DateInterval('P1Y'));
@@ -214,7 +213,7 @@ class SortIteratorTest extends TestCase
         $expected = [
             new \DateTime('2016-06-30'),
             new \DateTime('2015-07-21'),
-            new \DateTime('2014-08-12')
+            new \DateTimeImmutable('2013-08-12')
 
         ];
         $this->assertEquals($expected, $sorted->toList());
@@ -222,12 +221,12 @@ class SortIteratorTest extends TestCase
         $items = new ArrayObject([
             new \DateTime('2014-07-21'),
             new \DateTime('2015-06-30'),
-            new \DateTime('2013-08-12')
+            new \DateTimeImmutable('2013-08-12')
         ]);
 
         $sorted = new SortIterator($items, $callback, SORT_ASC);
         $expected = [
-            new \DateTime('2014-08-12'),
+            new \DateTimeImmutable('2013-08-12'),
             new \DateTime('2015-07-21'),
             new \DateTime('2016-06-30'),
         ];