-
Notifications
You must be signed in to change notification settings - Fork 11.3k
/
Copy pathDatabaseEloquentResourceModelTest.php
67 lines (51 loc) · 2.56 KB
/
DatabaseEloquentResourceModelTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
namespace Illuminate\Tests\Database;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Tests\Database\Fixtures\Models\EloquentResourceTestResourceModel;
use Illuminate\Tests\Database\Fixtures\Models\EloquentResourceTestResourceModelWithGuessableResource;
use PHPUnit\Framework\TestCase;
class DatabaseEloquentResourceModelTest extends TestCase
{
public function testItCanTransformToExplicitResource()
{
$model = new EloquentResourceTestResourceModel();
$resource = $model->toResource(EloquentResourceTestJsonResource::class);
$this->assertInstanceOf(EloquentResourceTestJsonResource::class, $resource);
$this->assertSame($model, $resource->resource);
}
public function testItThrowsExceptionWhenResourceCannotBeFound()
{
$this->expectException(\LogicException::class);
$this->expectExceptionMessage('Failed to find resource class for model [Illuminate\Tests\Database\Fixtures\Models\EloquentResourceTestResourceModel].');
$model = new EloquentResourceTestResourceModel();
$model->toResource();
}
public function testItCanGuessResourceWhenNotProvided()
{
$model = new EloquentResourceTestResourceModelWithGuessableResource();
class_alias(EloquentResourceTestJsonResource::class, 'Illuminate\Tests\Database\Fixtures\Http\Resources\EloquentResourceTestResourceModelWithGuessableResourceResource');
$resource = $model->toResource();
$this->assertInstanceOf(EloquentResourceTestJsonResource::class, $resource);
$this->assertSame($model, $resource->resource);
}
public function testItCanGuessResourceWhenNotProvidedWithNonResourceSuffix()
{
$model = new EloquentResourceTestResourceModelWithGuessableResource();
class_alias(EloquentResourceTestJsonResource::class, 'Illuminate\Tests\Database\Fixtures\Http\Resources\EloquentResourceTestResourceModelWithGuessableResource');
$resource = $model->toResource();
$this->assertInstanceOf(EloquentResourceTestJsonResource::class, $resource);
$this->assertSame($model, $resource->resource);
}
public function testItCanGuessResourceName()
{
$model = new EloquentResourceTestResourceModel();
$this->assertEquals([
'Illuminate\Tests\Database\Fixtures\Http\Resources\EloquentResourceTestResourceModelResource',
'Illuminate\Tests\Database\Fixtures\Http\Resources\EloquentResourceTestResourceModel',
], $model::guessResourceName());
}
}
class EloquentResourceTestJsonResource extends JsonResource
{
//
}