Browse Source

Merge branch 'master' into 3.next

Mark Story 7 years ago
parent
commit
3f469642e7

+ 2 - 0
src/Cache/Engine/FileEngine.php

@@ -337,6 +337,8 @@ class FileEngine extends CacheEngine
                 //@codingStandardsIgnoreEnd
             }
         }
+
+        $dir->close();
     }
 
     /**

+ 2 - 2
src/I18n/Parser/MoFileParser.php

@@ -134,9 +134,9 @@ class MoFileParser
                 continue;
             }
 
-            $messages[$singularId] = $singular;
+            $messages[$singularId]['_context'][''] = $singular;
             if ($pluralId !== null) {
-                $messages[$pluralId] = $plurals;
+                $messages[$pluralId]['_context'][''] = $plurals;
             }
         }
 

+ 44 - 3
tests/TestCase/Collection/CollectionTest.php

@@ -19,6 +19,8 @@ use ArrayObject;
 use Cake\Collection\Collection;
 use Cake\Collection\CollectionInterface;
 use Cake\Collection\CollectionTrait;
+use Cake\ORM\Entity;
+use Cake\ORM\ResultSet;
 use Cake\TestSuite\TestCase;
 use NoRewindIterator;
 
@@ -696,10 +698,29 @@ class CollectionTest extends TestCase
     public function testMaxCallable($items)
     {
         $collection = new Collection($items);
-        $callback = function ($e) {
+        $this->assertEquals(['a' => ['b' => ['c' => 4]]], $collection->max(function ($e) {
             return $e['a']['b']['c'] * - 1;
-        };
-        $this->assertEquals(['a' => ['b' => ['c' => 4]]], $collection->max($callback));
+        }));
+    }
+
+    /**
+     * Test max with a collection of Entities
+     *
+     * @return void
+     */
+    public function testMaxWithEntities()
+    {
+        $collection = new Collection([
+            new Entity(['id' => 1, 'count' => 18]),
+            new Entity(['id' => 2, 'count' => 9]),
+            new Entity(['id' => 3, 'count' => 42]),
+            new Entity(['id' => 4, 'count' => 4]),
+            new Entity(['id' => 5, 'count' => 22])
+        ]);
+
+        $expected = new Entity(['id' => 3, 'count' => 42]);
+
+        $this->assertEquals($expected, $collection->max('count'));
     }
 
     /**
@@ -715,6 +736,26 @@ class CollectionTest extends TestCase
     }
 
     /**
+     * Test min with a collection of Entities
+     *
+     * @return void
+     */
+    public function testMinWithEntities()
+    {
+        $collection = new Collection([
+            new Entity(['id' => 1, 'count' => 18]),
+            new Entity(['id' => 2, 'count' => 9]),
+            new Entity(['id' => 3, 'count' => 42]),
+            new Entity(['id' => 4, 'count' => 4]),
+            new Entity(['id' => 5, 'count' => 22])
+        ]);
+
+        $expected = new Entity(['id' => 4, 'count' => 4]);
+
+        $this->assertEquals($expected, $collection->min('count'));
+    }
+
+    /**
      * Provider for some groupBy tests
      *
      * @return array

+ 64 - 16
tests/TestCase/I18n/Parser/MoFileParserTest.php

@@ -35,12 +35,24 @@ class MoFileParserTest extends TestCase
         $messages = $parser->parse($file);
         $this->assertCount(3, $messages);
         $expected = [
-            '%d = 1 (from core)' => '%d = 1 (from core translated)',
+            '%d = 1 (from core)' => [
+                '_context' => [
+                    '' => '%d = 1 (from core translated)'
+                ]
+            ],
             '%d = 0 or > 1 (from core)' => [
-                '%d = 1 (from core translated)',
-                '%d = 0 or > 1 (from core translated)'
+                '_context' => [
+                    '' => [
+                        '%d = 1 (from core translated)',
+                        '%d = 0 or > 1 (from core translated)'
+                    ]
+                ]
             ],
-            'Plural Rule 1 (from core)' => 'Plural Rule 1 (from core translated)'
+            'Plural Rule 1 (from core)' => [
+                '_context' => [
+                    '' => 'Plural Rule 1 (from core translated)'
+                ]
+            ]
         ];
         $this->assertEquals($expected, $messages);
     }
@@ -57,10 +69,22 @@ class MoFileParserTest extends TestCase
         $messages = $parser->parse($file);
         $this->assertCount(3, $messages);
         $expected = [
-            'Plural Rule 1 (from core)' => 'Plural Rule 0 (from core translated)',
-            '%d = 1 (from core)' => '%d ends with any # (from core translated)',
+            'Plural Rule 1 (from core)' => [
+                '_context' => [
+                    '' => 'Plural Rule 0 (from core translated)'
+                ]
+            ],
+            '%d = 1 (from core)' => [
+                '_context' => [
+                    '' => '%d ends with any # (from core translated)'
+                ]
+            ],
             '%d = 0 or > 1 (from core)' => [
-                '%d ends with any # (from core translated)',
+                '_context' => [
+                    '' => [
+                        '%d ends with any # (from core translated)',
+                    ]
+                ]
             ],
         ];
         $this->assertEquals($expected, $messages);
@@ -78,13 +102,25 @@ class MoFileParserTest extends TestCase
         $messages = $parser->parse($file);
         $this->assertCount(3, $messages);
         $expected = [
-            '%d = 1 (from core)' => '%d is 1 (from core translated)',
+            '%d = 1 (from core)' => [
+                '_context' => [
+                    '' => '%d is 1 (from core translated)'
+                ]
+            ],
             '%d = 0 or > 1 (from core)' => [
-                '%d is 1 (from core translated)',
-                '%d ends in 2-4, not 12-14 (from core translated)',
-                '%d everything else (from core translated)'
+                '_context' => [
+                    '' => [
+                        '%d is 1 (from core translated)',
+                        '%d ends in 2-4, not 12-14 (from core translated)',
+                        '%d everything else (from core translated)'
+                    ]
+                ]
             ],
-            'Plural Rule 1 (from core)' => 'Plural Rule 9 (from core translated)'
+            'Plural Rule 1 (from core)' => [
+                '_context' => [
+                    '' => 'Plural Rule 9 (from core translated)'
+                ]
+            ]
         ];
         $this->assertEquals($expected, $messages);
     }
@@ -101,7 +137,11 @@ class MoFileParserTest extends TestCase
         $messages = $parser->parse($file);
         $this->assertCount(5, $messages);
         $expected = [
-            'Plural Rule 1' => 'Plural Rule 1 (translated)',
+            'Plural Rule 1' => [
+                '_context' => [
+                    '' => 'Plural Rule 1 (translated)'
+                ]
+            ],
             '%d = 1' => [
                 '_context' => [
                     'This is the context' => 'First Context trasnlation',
@@ -116,10 +156,18 @@ class MoFileParserTest extends TestCase
                     ]
                 ]
             ],
-            '%-5d = 1' => '%-5d = 1 (translated)',
+            '%-5d = 1' => [
+                '_context' => [
+                    '' => '%-5d = 1 (translated)'
+                ]
+            ],
             '%-5d = 0 or > 1' => [
-                '%-5d = 1 (translated)',
-                '%-5d = 0 or > 1 (translated)'
+                '_context' => [
+                    '' => [
+                        '%-5d = 1 (translated)',
+                        '%-5d = 0 or > 1 (translated)'
+                    ]
+                ]
             ]
         ];
         $this->assertEquals($expected, $messages);

+ 38 - 0
tests/TestCase/ORM/ResultSetTest.php

@@ -21,6 +21,7 @@ use Cake\ORM\Entity;
 use Cake\ORM\ResultSet;
 use Cake\ORM\Table;
 use Cake\TestSuite\TestCase;
+use TestApp\Model\Entity\Article;
 
 /**
  * ResultSet test case.
@@ -417,4 +418,41 @@ class ResultSetTest extends TestCase
         $res->isEmpty();
         $this->assertCount(6, $res->toArray());
     }
+
+    /**
+     * Test that ResultSet
+     *
+     * @return void
+     */
+    public function testCollectionMinAndMax()
+    {
+        $query = $this->table->find('all');
+
+        $min = $query->min('id');
+        $minExpected = $this->table->get(1);
+
+        $max = $query->max('id');
+        $maxExpected = $this->table->get(3);
+
+        $this->assertEquals($minExpected, $min);
+        $this->assertEquals($maxExpected, $max);
+    }
+
+    /**
+     * Test that ResultSet
+     *
+     * @return void
+     */
+    public function testCollectionMinAndMaxWithAggregateField()
+    {
+        $query = $this->table->find();
+        $query->select([
+            'counter' => 'COUNT(*)'
+        ])->group('author_id');
+
+        $min = $query->min('counter');
+        $max = $query->max('counter');
+
+        $this->assertTrue($max > $min);
+    }
 }