/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
tests/Testing/Concerns/InteractsWithDatabaseTest.php
161 строка
4 KB
Jason McCreary
[13.x] Mockery cleanup (#61117)
10 авг 2026, 20:23
Не верифицирован
10 авг 2026, 20:23
2ee40ee
Код
Авторство
О чём код?
<?php namespace Illuminate\Tests\Testing\Concerns; use Illuminate\Database\Connection; use Illuminate\Database\Query\Expression; use Illuminate\Foundation\Testing\Concerns\InteractsWithDatabase; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Facade; use Mockery; use PHPUnit\Framework\TestCase; class InteractsWithDatabaseTest extends TestCase { protected function setUp(): void { Facade::clearResolvedInstances(); Facade::setFacadeApplication(null); } public function testCastToJsonSqlite() { $grammar = 'SQLite'; $this->assertEquals(<<<'TEXT' '["foo","bar"]' TEXT, $this->castAsJson(['foo', 'bar'], $grammar) ); $this->assertEquals(<<<'TEXT' '["foo","bar"]' TEXT, $this->castAsJson(collect(['foo', 'bar']), $grammar) ); $this->assertEquals(<<<'TEXT' '{"foo":"bar"}' TEXT, $this->castAsJson((object) ['foo' => 'bar'], $grammar) ); } public function testCastToJsonPostgres() { $grammar = 'Postgres'; $this->assertEquals(<<<'TEXT' '["foo","bar"]' TEXT, $this->castAsJson(['foo', 'bar'], $grammar) ); $this->assertEquals(<<<'TEXT' '["foo","bar"]' TEXT, $this->castAsJson(collect(['foo', 'bar']), $grammar) ); $this->assertEquals(<<<'TEXT' '{"foo":"bar"}' TEXT, $this->castAsJson((object) ['foo' => 'bar'], $grammar) ); } public function testCastToJsonSqlServer() { $grammar = 'SqlServer'; $this->assertEquals(<<<'TEXT' json_query('["foo","bar"]') TEXT, $this->castAsJson(['foo', 'bar'], $grammar) ); $this->assertEquals(<<<'TEXT' json_query('["foo","bar"]') TEXT, $this->castAsJson(collect(['foo', 'bar']), $grammar) ); $this->assertEquals(<<<'TEXT' json_query('{"foo":"bar"}') TEXT, $this->castAsJson((object) ['foo' => 'bar'], $grammar) ); } public function testCastToJsonMySql() { $grammar = 'MySql'; $this->assertEquals(<<<'TEXT' cast('["foo","bar"]' as json) TEXT, $this->castAsJson(['foo', 'bar'], $grammar) ); $this->assertEquals(<<<'TEXT' cast('["foo","bar"]' as json) TEXT, $this->castAsJson(collect(['foo', 'bar']), $grammar) ); $this->assertEquals(<<<'TEXT' cast('{"foo":"bar"}' as json) TEXT, $this->castAsJson((object) ['foo' => 'bar'], $grammar) ); } public function testCastToJsonMariaDb() { $grammar = 'MariaDb'; $this->assertEquals(<<<'TEXT' json_query('["foo","bar"]', '$') TEXT, $this->castAsJson(['foo', 'bar'], $grammar) ); $this->assertEquals(<<<'TEXT' json_query('["foo","bar"]', '$') TEXT, $this->castAsJson(collect(['foo', 'bar']), $grammar) ); $this->assertEquals(<<<'TEXT' json_query('{"foo":"bar"}', '$') TEXT, $this->castAsJson((object) ['foo' => 'bar'], $grammar) ); } protected function castAsJson($value, $grammar) { $connection = Mockery::mock(Connection::class); $grammarClass = 'Illuminate\Database\Query\Grammars\\'.$grammar.'Grammar'; $grammar = new $grammarClass($connection); $connection->shouldReceive('getQueryGrammar')->andReturn($grammar); $connection->shouldReceive('raw')->andReturnUsing(function ($value) { return new Expression($value); }); $connection->shouldReceive('getPdo->quote')->andReturnUsing(function ($value) { return "'".$value."'"; }); DB::shouldReceive('connection')->with(null)->andReturn($connection); $instance = new class { use InteractsWithDatabase; }; return $instance->castAsJson($value)->getValue($grammar); } }