/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
tests/Database/DatabaseEloquentBelongsToManyWithoutTouchingTest.php
70 строк
2 KB
Jason McCreary
[13.x] Mockery cleanup (#61117)
10 авг 2026, 20:23
Не верифицирован
10 авг 2026, 20:23
2ee40ee
Код
Авторство
О чём код?
<?php declare(strict_types=1); namespace Illuminate\Tests\Database; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Query\Builder as QueryBuilder; use Illuminate\Database\Query\Grammars\Grammar; use Mockery; use PHPUnit\Framework\TestCase; class DatabaseEloquentBelongsToManyWithoutTouchingTest extends TestCase { public function testItWillNotTouchRelatedModelsWhenUpdatingChild(): void { /** @var Article $related */ $related = Mockery::mock(Article::class)->makePartial(); $related->shouldReceive('getUpdatedAtColumn')->never(); $related->shouldReceive('freshTimestampString')->never(); $this->assertFalse($related::isIgnoringTouch()); Model::withoutTouching(function () use ($related) { $this->assertTrue($related::isIgnoringTouch()); $builder = Mockery::mock(Builder::class); $builder->expects('join'); $parent = Mockery::mock(User::class); $parent->expects('getAttribute')->with('id')->andReturn(1); $builder->expects('getModel')->andReturn($related); $builder->expects('where'); $builder->expects('getQuery')->times(2)->andReturn( Mockery::mock(QueryBuilder::class, ['getGrammar' => Mockery::mock(Grammar::class, ['isExpression' => false])]) ); $relation = new BelongsToMany($builder, $parent, 'article_users', 'user_id', 'article_id', 'id', 'id'); $builder->shouldReceive('update')->never(); $relation->touch(); }); $this->assertFalse($related::isIgnoringTouch()); } } class User extends Model { protected $table = 'users'; protected $fillable = ['id', 'email']; public function articles(): BelongsToMany { return $this->belongsToMany(Article::class, 'article_user', 'user_id', 'article_id'); } } class Article extends Model { protected $table = 'articles'; protected $fillable = ['id', 'title']; protected $touches = ['user']; public function users(): BelongsToMany { return $this->belongsToMany(User::class, 'article_user', 'article_id', 'user_id'); } }