|
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