Skip to content

Commit c8d6c42

Browse files
committed
Use the trait for every test model
1 parent 855ff8e commit c8d6c42

27 files changed

+203
-105
lines changed

src/Eloquent/DocumentModel.php

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,10 @@ trait DocumentModel
5353
use HybridRelations;
5454
use EmbedsRelations;
5555

56-
/**
57-
* The collection associated with the model.
58-
*
59-
* @var string
60-
*/
61-
protected $collection;
62-
6356
/**
6457
* The parent relation instance.
65-
*
66-
* @var Relation
6758
*/
68-
protected $parentRelation;
59+
private Relation $parentRelation;
6960

7061
/**
7162
* List of field names to unset from the document on save.
@@ -150,7 +141,7 @@ public function freshTimestamp()
150141
/** @inheritdoc */
151142
public function getTable()
152143
{
153-
return $this->collection ?: parent::getTable();
144+
return $this->collection ?? parent::getTable();
154145
}
155146

156147
/** @inheritdoc */
@@ -552,12 +543,10 @@ public function setParentRelation(Relation $relation)
552543

553544
/**
554545
* Get the parent relation.
555-
*
556-
* @return Relation
557546
*/
558-
public function getParentRelation()
547+
public function getParentRelation(): ?Relation
559548
{
560-
return $this->parentRelation;
549+
return $this->parentRelation ?? null;
561550
}
562551

563552
/** @inheritdoc */

src/Eloquent/Model.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,13 @@ abstract class Model extends BaseModel
2828
*/
2929
protected $keyType = 'string';
3030

31-
/** @param class-string|object $related */
31+
/**
32+
* Indicates if the given model class is a MongoDB document model.
33+
* It must be a subclass of {@see BaseModel} and use the
34+
* {@see DocumentModel} trait.
35+
*
36+
* @param class-string|object $related
37+
*/
3238
public static function isDocumentModel(string|object $related): bool
3339
{
3440
return is_subclass_of($related, BaseModel::class)

tests/Models/Address.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
7+
use Illuminate\Database\Eloquent\Model;
8+
use MongoDB\Laravel\Eloquent\DocumentModel;
89
use MongoDB\Laravel\Relations\EmbedsMany;
910

10-
class Address extends Eloquent
11+
class Address extends Model
1112
{
12-
protected $connection = 'mongodb';
13+
use DocumentModel;
14+
15+
protected $primaryKey = '_id';
16+
protected $keyType = 'string';
17+
protected $connection = 'mongodb';
1318
protected static $unguarded = true;
1419

1520
public function addresses(): EmbedsMany

tests/Models/Birthday.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,22 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
7+
use Illuminate\Database\Eloquent\Model;
8+
use MongoDB\Laravel\Eloquent\DocumentModel;
89

910
/**
1011
* @property string $name
1112
* @property string $birthday
1213
* @property string $time
1314
*/
14-
class Birthday extends Eloquent
15+
class Birthday extends Model
1516
{
17+
use DocumentModel;
18+
19+
protected $primaryKey = '_id';
20+
protected $keyType = 'string';
1621
protected $connection = 'mongodb';
17-
protected $collection = 'birthday';
22+
protected string $collection = 'birthday';
1823
protected $fillable = ['name', 'birthday'];
1924

2025
protected $casts = ['birthday' => 'datetime'];

tests/Models/Book.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,24 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7+
use Illuminate\Database\Eloquent\Model;
78
use Illuminate\Database\Eloquent\Relations\BelongsTo;
8-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
9+
use MongoDB\Laravel\Eloquent\DocumentModel;
910

1011
/**
1112
* @property string $title
1213
* @property string $author
1314
* @property array $chapters
1415
*/
15-
class Book extends Eloquent
16+
class Book extends Model
1617
{
17-
protected $connection = 'mongodb';
18-
protected $collection = 'books';
18+
use DocumentModel;
19+
20+
protected $primaryKey = 'title';
21+
protected $keyType = 'string';
22+
protected $connection = 'mongodb';
23+
protected string $collection = 'books';
1924
protected static $unguarded = true;
20-
protected $primaryKey = 'title';
2125

2226
public function author(): BelongsTo
2327
{

tests/Models/CastObjectId.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7+
use Illuminate\Database\Eloquent\Model;
78
use MongoDB\Laravel\Eloquent\Casts\ObjectId;
8-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
9+
use MongoDB\Laravel\Eloquent\DocumentModel;
910

10-
class CastObjectId extends Eloquent
11+
class CastObjectId extends Model
1112
{
12-
protected $connection = 'mongodb';
13+
use DocumentModel;
14+
15+
protected $primaryKey = '_id';
16+
protected $keyType = 'string';
17+
protected $connection = 'mongodb';
1318
protected static $unguarded = true;
1419
protected $casts = [
1520
'oid' => ObjectId::class,

tests/Models/Casting.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,18 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7+
use Illuminate\Database\Eloquent\Model;
78
use MongoDB\Laravel\Eloquent\Casts\BinaryUuid;
8-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
9+
use MongoDB\Laravel\Eloquent\DocumentModel;
910

10-
class Casting extends Eloquent
11+
class Casting extends Model
1112
{
13+
use DocumentModel;
14+
15+
protected $primaryKey = '_id';
16+
protected $keyType = 'string';
1217
protected $connection = 'mongodb';
13-
protected $collection = 'casting';
18+
protected string $collection = 'casting';
1419

1520
protected $fillable = [
1621
'uuid',

tests/Models/Client.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,20 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7+
use Illuminate\Database\Eloquent\Model;
78
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
89
use Illuminate\Database\Eloquent\Relations\HasMany;
910
use Illuminate\Database\Eloquent\Relations\MorphOne;
10-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
11+
use MongoDB\Laravel\Eloquent\DocumentModel;
1112

12-
class Client extends Eloquent
13+
class Client extends Model
1314
{
14-
protected $connection = 'mongodb';
15-
protected $collection = 'clients';
15+
use DocumentModel;
16+
17+
protected $primaryKey = '_id';
18+
protected $keyType = 'string';
19+
protected $connection = 'mongodb';
20+
protected string $collection = 'clients';
1621
protected static $unguarded = true;
1722

1823
public function users(): BelongsToMany

tests/Models/Experience.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,18 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7+
use Illuminate\Database\Eloquent\Model;
78
use Illuminate\Database\Eloquent\Relations\MorphToMany;
8-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
9+
use MongoDB\Laravel\Eloquent\DocumentModel;
910

10-
class Experience extends Eloquent
11+
class Experience extends Model
1112
{
12-
protected $connection = 'mongodb';
13-
protected $collection = 'experiences';
13+
use DocumentModel;
14+
15+
protected $primaryKey = '_id';
16+
protected $keyType = 'string';
17+
protected $connection = 'mongodb';
18+
protected string $collection = 'experiences';
1419
protected static $unguarded = true;
1520

1621
protected $casts = ['years' => 'int'];

tests/Models/Group.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,18 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7+
use Illuminate\Database\Eloquent\Model;
78
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
8-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
9+
use MongoDB\Laravel\Eloquent\DocumentModel;
910

10-
class Group extends Eloquent
11+
class Group extends Model
1112
{
12-
protected $connection = 'mongodb';
13-
protected $collection = 'groups';
13+
use DocumentModel;
14+
15+
protected $primaryKey = '_id';
16+
protected $keyType = 'string';
17+
protected $connection = 'mongodb';
18+
protected string $collection = 'groups';
1419
protected static $unguarded = true;
1520

1621
public function users(): BelongsToMany

tests/Models/Guarded.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
7+
use Illuminate\Database\Eloquent\Model;
8+
use MongoDB\Laravel\Eloquent\DocumentModel;
89

9-
class Guarded extends Eloquent
10+
class Guarded extends Model
1011
{
12+
use DocumentModel;
13+
14+
protected $primaryKey = '_id';
15+
protected $keyType = 'string';
1116
protected $connection = 'mongodb';
12-
protected $collection = 'guarded';
13-
protected $guarded = ['foobar', 'level1->level2'];
17+
protected string $collection = 'guarded';
18+
protected $guarded = ['foobar', 'level1->level2'];
1419
}

tests/Models/HiddenAnimal.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7+
use Illuminate\Database\Eloquent\Model;
8+
use MongoDB\Laravel\Eloquent\DocumentModel;
79
use MongoDB\Laravel\Eloquent\Model as Eloquent;
810
use MongoDB\Laravel\Query\Builder;
911

@@ -16,8 +18,12 @@
1618
* @method static Builder truncate()
1719
* @method static Eloquent sole(...$parameters)
1820
*/
19-
final class HiddenAnimal extends Eloquent
21+
final class HiddenAnimal extends Model
2022
{
23+
use DocumentModel;
24+
25+
protected $primaryKey = '_id';
26+
protected $keyType = 'string';
2127
protected $fillable = [
2228
'name',
2329
'country',

tests/Models/IdIsBinaryUuid.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7+
use Illuminate\Database\Eloquent\Model;
78
use MongoDB\Laravel\Eloquent\Casts\BinaryUuid;
8-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
9+
use MongoDB\Laravel\Eloquent\DocumentModel;
910

10-
class IdIsBinaryUuid extends Eloquent
11+
class IdIsBinaryUuid extends Model
1112
{
12-
protected $connection = 'mongodb';
13+
use DocumentModel;
14+
15+
protected $primaryKey = '_id';
16+
protected $keyType = 'string';
17+
protected $connection = 'mongodb';
1318
protected static $unguarded = true;
14-
protected $casts = [
19+
protected $casts = [
1520
'_id' => BinaryUuid::class,
1621
];
1722
}

tests/Models/IdIsInt.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,16 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
7+
use Illuminate\Database\Eloquent\Model;
8+
use MongoDB\Laravel\Eloquent\DocumentModel;
89

9-
class IdIsInt extends Eloquent
10+
class IdIsInt extends Model
1011
{
11-
protected $keyType = 'int';
12-
protected $connection = 'mongodb';
12+
use DocumentModel;
13+
14+
protected $primaryKey = '_id';
15+
protected $keyType = 'int';
16+
protected $connection = 'mongodb';
1317
protected static $unguarded = true;
14-
protected $casts = ['_id' => 'int'];
18+
protected $casts = ['_id' => 'int'];
1519
}

tests/Models/IdIsString.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@
44

55
namespace MongoDB\Laravel\Tests\Models;
66

7-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
7+
use Illuminate\Database\Eloquent\Model;
8+
use MongoDB\Laravel\Eloquent\DocumentModel;
89

9-
class IdIsString extends Eloquent
10+
class IdIsString extends Model
1011
{
11-
protected $connection = 'mongodb';
12+
use DocumentModel;
13+
14+
protected $primaryKey = '_id';
15+
protected $keyType = 'string';
16+
protected $connection = 'mongodb';
1217
protected static $unguarded = true;
13-
protected $casts = ['_id' => 'string'];
18+
protected $casts = ['_id' => 'string'];
1419
}

tests/Models/Item.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,20 @@
55
namespace MongoDB\Laravel\Tests\Models;
66

77
use Carbon\Carbon;
8+
use Illuminate\Database\Eloquent\Model;
89
use Illuminate\Database\Eloquent\Relations\BelongsTo;
910
use MongoDB\Laravel\Eloquent\Builder;
10-
use MongoDB\Laravel\Eloquent\Model as Eloquent;
11+
use MongoDB\Laravel\Eloquent\DocumentModel;
1112

1213
/** @property Carbon $created_at */
13-
class Item extends Eloquent
14+
class Item extends Model
1415
{
15-
protected $connection = 'mongodb';
16-
protected $collection = 'items';
16+
use DocumentModel;
17+
18+
protected $primaryKey = '_id';
19+
protected $keyType = 'string';
20+
protected $connection = 'mongodb';
21+
protected string $collection = 'items';
1722
protected static $unguarded = true;
1823

1924
public function user(): BelongsTo

0 commit comments

Comments
 (0)