/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
tests/Database/DatabaseEloquentWithCastsTest.php
132 строки
3 KB
Lucas Michot
Remove useless parent::setUp()/tearDown() calls in tests extending PHPUnit's TestCase directly (#60994)
03 авг 2026, 20:54
Не верифицирован
03 авг 2026, 20:54
14a6983
Код
Авторство
О чём код?
<?php namespace Illuminate\Tests\Database; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Eloquent\MissingAttributeException; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model as Eloquent; use Illuminate\Support\Carbon; use PHPUnit\Framework\TestCase; class DatabaseEloquentWithCastsTest extends TestCase { protected function setUp(): void { $db = new DB; $db->addConnection([ 'driver' => 'sqlite', 'database' => ':memory:', ]); $db->bootEloquent(); $db->setAsGlobal(); $this->createSchema(); } protected function createSchema() { $this->schema()->create('times', function ($table) { $table->increments('id'); $table->time('time'); $table->timestamps(); }); $this->schema()->create('unique_times', function ($table) { $table->increments('id'); $table->time('time')->unique(); $table->timestamps(); }); } public function testWithFirstOrNew() { $time1 = Time::query()->withCasts(['time' => 'string']) ->firstOrNew(['time' => '07:30']); Time::query()->insert(['time' => '07:30']); $time2 = Time::query()->withCasts(['time' => 'string']) ->firstOrNew(['time' => '07:30']); $this->assertSame('07:30', $time1->time); $this->assertSame($time1->time, $time2->time); } public function testWithFirstOrCreate() { $time1 = Time::query()->withCasts(['time' => 'string']) ->firstOrCreate(['time' => '07:30']); $time2 = Time::query()->withCasts(['time' => 'string']) ->firstOrCreate(['time' => '07:30']); $this->assertSame($time1->id, $time2->id); } public function testWithCreateOrFirst() { $time1 = UniqueTime::query()->withCasts(['time' => 'string']) ->createOrFirst(['time' => '07:30']); $time2 = UniqueTime::query()->withCasts(['time' => 'string']) ->createOrFirst(['time' => '07:30']); $this->assertSame($time1->id, $time2->id); } public function testThrowsExceptionIfCastableAttributeWasNotRetrievedAndPreventMissingAttributesIsEnabled() { Time::create(['time' => Carbon::now()]); $originalMode = Model::preventsAccessingMissingAttributes(); Model::preventAccessingMissingAttributes(); $this->expectException(MissingAttributeException::class); try { $time = Time::query()->select('id')->first(); $this->assertNull($time->time); } finally { Model::preventAccessingMissingAttributes($originalMode); } } /** * Get a database connection instance. * * @return \Illuminate\Database\Connection */ protected function connection() { return Eloquent::getConnectionResolver()->connection(); } /** * Get a schema builder instance. * * @return \Illuminate\Database\Schema\Builder */ protected function schema() { return $this->connection()->getSchemaBuilder(); } } class Time extends Eloquent { protected $guarded = []; protected $casts = [ 'time' => 'datetime', ]; } class UniqueTime extends Eloquent { protected $guarded = []; protected $casts = [ 'time' => 'datetime', ]; }