|
28 | 28 | use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
|
29 | 29 | use Illuminate\Database\Eloquent\Casts\AsHtmlString;
|
30 | 30 | use Illuminate\Database\Eloquent\Casts\AsStringable;
|
| 31 | +use Illuminate\Database\Eloquent\Casts\AsUri; |
31 | 32 | use Illuminate\Database\Eloquent\Casts\Attribute;
|
32 | 33 | use Illuminate\Database\Eloquent\Collection;
|
33 | 34 | use Illuminate\Database\Eloquent\Concerns\HasUlids;
|
|
49 | 50 | use Illuminate\Support\HtmlString;
|
50 | 51 | use Illuminate\Support\InteractsWithTime;
|
51 | 52 | use Illuminate\Support\Stringable;
|
| 53 | +use Illuminate\Support\Uri; |
52 | 54 | use InvalidArgumentException;
|
53 | 55 | use LogicException;
|
54 | 56 | use Mockery as m;
|
@@ -284,6 +286,24 @@ public function testDirtyOnCastedHtmlString()
|
284 | 286 | $this->assertTrue($model->isDirty('asHtmlStringAttribute'));
|
285 | 287 | }
|
286 | 288 |
|
| 289 | + public function testDirtyOnCastedUri() |
| 290 | + { |
| 291 | + $model = new EloquentModelCastingStub; |
| 292 | + $model->setRawAttributes([ |
| 293 | + 'asUriAttribute' => 'https://www.example.com:1234?query=param&another=value', |
| 294 | + ]); |
| 295 | + $model->syncOriginal(); |
| 296 | + |
| 297 | + $this->assertInstanceOf(Uri::class, $model->asUriAttribute); |
| 298 | + $this->assertFalse($model->isDirty('asUriAttribute')); |
| 299 | + |
| 300 | + $model->asUriAttribute = new Uri('https://www.example.com:1234?query=param&another=value'); |
| 301 | + $this->assertFalse($model->isDirty('asUriAttribute')); |
| 302 | + |
| 303 | + $model->asUriAttribute = new Uri('https://www.updated.com:1234?query=param&another=value'); |
| 304 | + $this->assertTrue($model->isDirty('asUriAttribute')); |
| 305 | + } |
| 306 | + |
287 | 307 | // public function testDirtyOnCastedEncryptedCollection()
|
288 | 308 | // {
|
289 | 309 | // $this->encrypter = m::mock(Encrypter::class);
|
@@ -3733,6 +3753,7 @@ protected function casts(): array
|
3733 | 3753 | 'asarrayobjectAttribute' => AsArrayObject::class,
|
3734 | 3754 | 'asStringableAttribute' => AsStringable::class,
|
3735 | 3755 | 'asHtmlStringAttribute' => AsHtmlString::class,
|
| 3756 | + 'asUriAttribute' => AsUri::class, |
3736 | 3757 | 'asCustomCollectionAttribute' => AsCollection::using(CustomCollection::class),
|
3737 | 3758 | 'asEncryptedArrayObjectAttribute' => AsEncryptedArrayObject::class,
|
3738 | 3759 | 'asEncryptedCustomCollectionAttribute' => AsEncryptedCollection::using(CustomCollection::class),
|
|
0 commit comments