|
3 | 3 | namespace Illuminate\Tests\Database;
|
4 | 4 |
|
5 | 5 | use Exception;
|
| 6 | +use Illuminate\Database\ConnectionInterface; |
| 7 | +use Illuminate\Database\ConnectionResolverInterface; |
6 | 8 | use Illuminate\Database\Eloquent\Builder;
|
7 | 9 | use Illuminate\Database\Eloquent\Collection;
|
8 | 10 | use Illuminate\Database\Eloquent\Model;
|
9 | 11 | use Illuminate\Database\Eloquent\Relations\HasMany;
|
| 12 | +use Illuminate\Database\Query\Builder as BaseBuilder; |
10 | 13 | use Illuminate\Database\UniqueConstraintViolationException;
|
11 | 14 | use Mockery as m;
|
12 | 15 | use PHPUnit\Framework\TestCase;
|
@@ -356,6 +359,22 @@ protected function getRelation()
|
356 | 359 | return new HasMany($builder, $parent, 'table.foreign_key', 'id');
|
357 | 360 | }
|
358 | 361 |
|
| 362 | + protected function mockConnectionForModel($model, $database) |
| 363 | + { |
| 364 | + $grammarClass = 'Illuminate\Database\Query\Grammars\\'.$database.'Grammar'; |
| 365 | + $processorClass = 'Illuminate\Database\Query\Processors\\'.$database.'Processor'; |
| 366 | + $grammar = new $grammarClass; |
| 367 | + $processor = new $processorClass; |
| 368 | + $connection = m::mock(ConnectionInterface::class, ['getQueryGrammar' => $grammar, 'getPostProcessor' => $processor]); |
| 369 | + $connection->shouldReceive('query')->andReturnUsing(function () use ($connection, $grammar, $processor) { |
| 370 | + return new BaseBuilder($connection, $grammar, $processor); |
| 371 | + }); |
| 372 | + $connection->shouldReceive('getDatabaseName')->andReturn('database'); |
| 373 | + $resolver = m::mock(ConnectionResolverInterface::class, ['connection' => $connection]); |
| 374 | + $class = get_class($model); |
| 375 | + $class::setConnectionResolver($resolver); |
| 376 | + } |
| 377 | + |
359 | 378 | protected function expectNewModel($relation, $attributes = null)
|
360 | 379 | {
|
361 | 380 | $model = $this->getMockBuilder(Model::class)->onlyMethods(['setAttribute', 'save'])->getMock();
|
@@ -390,3 +409,26 @@ class EloquentHasManyModelStub extends Model
|
390 | 409 | {
|
391 | 410 | public $foreign_key = 'foreign.value';
|
392 | 411 | }
|
| 412 | + |
| 413 | +class EloquentHasManyModelStubWithRelation extends Model |
| 414 | +{ |
| 415 | + public $incrementing = false; |
| 416 | + |
| 417 | + protected $table = 'parent_table'; |
| 418 | + |
| 419 | + protected $keyType = 'string'; |
| 420 | + |
| 421 | + public function child() |
| 422 | + { |
| 423 | + return $this->hasMany(EloquentHasManyChildModelStub::class, 'foreign_key'); |
| 424 | + } |
| 425 | +} |
| 426 | + |
| 427 | +class EloquentHasManyChildModelStub extends Model |
| 428 | +{ |
| 429 | + public $incrementing = false; |
| 430 | + |
| 431 | + protected $table = 'child_table'; |
| 432 | + |
| 433 | + protected $keyType = 'string'; |
| 434 | +} |
0 commit comments