Skip to content

Commit d4a2f30

Browse files
authored
[12.x] Align Listener docblock and add unit test for query shape (#58040)
* Align Listener::queries() docblock; add ListenerTest * ListenerTest style fixed
1 parent 40506d8 commit d4a2f30

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

src/Illuminate/Foundation/Exceptions/Renderer/Listener.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function registerListeners(Dispatcher $events)
4444
/**
4545
* Returns the queries that have been executed.
4646
*
47-
* @return array<int, array{sql: string, time: float}>
47+
* @return array<int, array{connectionName: string, time: float, sql: string, bindings: array}>
4848
*/
4949
public function queries()
5050
{
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
namespace Illuminate\Tests\Foundation\Exceptions\Renderer;
4+
5+
use Illuminate\Database\Events\QueryExecuted;
6+
use Illuminate\Foundation\Exceptions\Renderer\Listener;
7+
use Mockery as m;
8+
use PHPUnit\Framework\TestCase;
9+
10+
class ListenerTest extends TestCase
11+
{
12+
protected function tearDown(): void
13+
{
14+
m::close();
15+
}
16+
17+
public function test_queries_returns_expected_shape_after_query_executed()
18+
{
19+
$connection = m::mock();
20+
21+
$connection->shouldReceive('getName')->andReturn('testing');
22+
$connection->shouldReceive('prepareBindings')->with(['foo'])->andReturn(['foo']);
23+
24+
$event = new QueryExecuted('select * from users where id = ?', ['foo'], 5.2, $connection);
25+
26+
$listener = new Listener();
27+
28+
$listener->onQueryExecuted($event);
29+
30+
$queries = $listener->queries();
31+
32+
$this->assertIsArray($queries);
33+
$this->assertCount(1, $queries);
34+
35+
$query = $queries[0];
36+
37+
$this->assertArrayHasKey('connectionName', $query);
38+
$this->assertArrayHasKey('time', $query);
39+
$this->assertArrayHasKey('sql', $query);
40+
$this->assertArrayHasKey('bindings', $query);
41+
42+
$this->assertEquals('testing', $query['connectionName']);
43+
$this->assertEquals(5.2, $query['time']);
44+
$this->assertEquals('select * from users where id = ?', $query['sql']);
45+
$this->assertEquals(['foo'], $query['bindings']);
46+
}
47+
}

0 commit comments

Comments
 (0)