Skip to content

Commit 0e9dbef

Browse files
committed
Leave legacy query as default runner for now
1 parent 1c46fc4 commit 0e9dbef

13 files changed

+118
-12
lines changed

src/Query/Argument.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* @copyright Bastian Allgeier
1616
* @license https://opensource.org/licenses/MIT
1717
*
18-
* @deprecated 6.0.0 Will be removed in Kirby 7
18+
* @todo Deprecate in v6
1919
*/
2020
class Argument
2121
{

src/Query/Arguments.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* @copyright Bastian Allgeier
1616
* @license https://opensource.org/licenses/MIT
1717
*
18-
* @deprecated 6.0.0 Will be removed in Kirby 7
18+
* @todo Deprecate in v6
1919
*
2020
* @extends \Kirby\Toolkit\Collection<\Kirby\Query\Argument>
2121
*/

src/Query/Expression.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* @copyright Bastian Allgeier
1616
* @license https://opensource.org/licenses/MIT
1717
*
18-
* @deprecated 6.0.0 Will be removed in Kirby 7
18+
* @todo Deprecate in v6
1919
*/
2020
class Expression
2121
{

src/Query/Query.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,10 @@ public function resolve(array|object $data = []): mixed
7676
return $data;
7777
}
7878

79+
// TODO: switch to 'interpreted' as default in v6
7980
// TODO: remove in v7
8081
// @codeCoverageIgnoreStart
81-
$mode = App::instance()->option('query.runner', 'interpreted');
82+
$mode = App::instance()->option('query.runner', 'legacy');
8283

8384
if ($mode === 'legacy') {
8485
return $this->resolve_legacy($data);

src/Query/Segment.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* @copyright Bastian Allgeier
1818
* @license https://opensource.org/licenses/MIT
1919
*
20-
* @deprecated 6.0.0 Will be removed in Kirby 7
20+
* @todo Deprecate in v6
2121
*/
2222
class Segment
2323
{

src/Query/Segments.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* @copyright Bastian Allgeier
1616
* @license https://opensource.org/licenses/MIT
1717
*
18-
* @deprecated 6.0.0 Will be removed in Kirby 7
18+
* @todo Deprecate in v6
1919
*
2020
* @extends \Kirby\Toolkit\Collection<\Kirby\Query\Segment>
2121
*/

tests/Query/ArgumentTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
/**
99
* @coversDefaultClass \Kirby\Query\Argument
10-
* @deprecated 6.0.0 Will be removed in Kirby 7
10+
* @todo Deprecate in v6
1111
*/
1212
class ArgumentTest extends TestCase
1313
{

tests/Query/ArgumentsTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
/**
88
* @coversDefaultClass \Kirby\Query\Arguments
9-
* @deprecated 6.0.0 Will be removed in Kirby 7
9+
* @todo Deprecate in v6
1010
*/
1111
class ArgumentsTest extends TestCase
1212
{

tests/Query/ExpressionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
/**
99
* @coversDefaultClass \Kirby\Query\Expression
10-
* @deprecated 6.0.0 Will be removed in Kirby 7
10+
* @todo Deprecate in v6
1111
*/
1212
class ExpressionTest extends TestCase
1313
{

tests/Query/QueryTest.php renamed to tests/Query/QueryInterpretedTest.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,19 @@
1212
/**
1313
* @coversDefaultClass \Kirby\Query\Query
1414
*/
15-
class QueryTest extends TestCase
15+
class QueryInterpretedTest extends TestCase
1616
{
17+
protected function setUp(): void
18+
{
19+
new App([
20+
'options' => [
21+
'query' => [
22+
'runner' => 'interpreted'
23+
]
24+
]
25+
]);
26+
}
27+
1728
protected function tearDown(): void
1829
{
1930
App::destroy();

tests/Query/QueryLegacyTest.php

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<?php
2+
3+
namespace Kirby\Query;
4+
5+
use Closure;
6+
7+
/**
8+
* @coversDefaultClass Kirby\Query\Query
9+
*/
10+
class QueryLegacyTest extends \PHPUnit\Framework\TestCase
11+
{
12+
/**
13+
* @covers ::__construct
14+
* @covers ::factory
15+
*/
16+
public function testFactory()
17+
{
18+
$query = Query::factory(' user.me ');
19+
$this->assertSame('user.me', $query->query);
20+
}
21+
22+
/**
23+
* @covers ::intercept
24+
*/
25+
public function testIntercept()
26+
{
27+
$query = new Query('kirby');
28+
$this->assertSame('foo', $query->intercept('foo'));
29+
}
30+
31+
/**
32+
* @covers ::resolve
33+
*/
34+
public function testResolve()
35+
{
36+
$query = new Query("user.self.likes(['(', ')']).self.drink");
37+
$data = ['user' => new TestUser()];
38+
$this->assertSame(['gin', 'tonic', 'cucumber'], $query->resolve($data));
39+
}
40+
41+
/**
42+
* @covers ::resolve
43+
*/
44+
public function testResolveWithEmptyQuery()
45+
{
46+
$query = new Query('');
47+
$data = ['foo' => 'bar'];
48+
$this->assertSame($data, $query->resolve($data));
49+
}
50+
51+
/**
52+
* @covers ::resolve
53+
*/
54+
public function testResolveWithComparisonExpresion()
55+
{
56+
$query = new Query('user.nothing ?? (user.nothing ?? user.isYello(false)) ? user.says("error") : (user.nothing ?? user.says("success"))');
57+
$data = ['user' => new TestUser()];
58+
$this->assertSame('success', $query->resolve($data));
59+
}
60+
61+
/**
62+
* @covers ::resolve
63+
*/
64+
public function testResolveWithExactArrayMatch()
65+
{
66+
$query = new Query('user');
67+
$this->assertSame('homer', $query->resolve(['user' => 'homer']));
68+
69+
$query = new Query('user.username');
70+
$this->assertSame('homer', $query->resolve(['user.username' => 'homer']));
71+
72+
$query = new Query('user.callback');
73+
$this->assertSame('homer', $query->resolve(['user.callback' => fn () => 'homer']));
74+
}
75+
76+
/**
77+
* @covers ::resolve
78+
*/
79+
public function testResolveWithClosureArgument()
80+
{
81+
$query = new Query('foo.bar(() => foo.homer)');
82+
$data = [
83+
'foo' => [
84+
'bar' => fn ($callback) => $callback,
85+
'homer' => 'simpson'
86+
]
87+
];
88+
89+
$bar = $query->resolve($data);
90+
$this->assertInstanceOf(Closure::class, $bar);
91+
$bar = $bar();
92+
$this->assertSame('simpson', $bar);
93+
}
94+
}

tests/Query/SegmentTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function __get($name)
3636

3737
/**
3838
* @coversDefaultClass \Kirby\Query\Segment
39-
* @deprecated 6.0.0 Will be removed in Kirby 7
39+
* @todo Deprecate in v6
4040
*/
4141
class SegmentTest extends TestCase
4242
{

tests/Query/SegmentsTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
/**
1111
* @coversDefaultClass \Kirby\Query\Segments
12-
* @deprecated 6.0.0 Will be removed in Kirby 7
12+
* @todo Deprecate in v6
1313
*/
1414
class SegmentsTest extends TestCase
1515
{

0 commit comments

Comments
 (0)