@@ -2106,6 +2106,20 @@ public function testModelObserversCanBeAttachedToModelsThroughAnArrayUsingAttrib
2106
2106
EloquentModelWithObserveAttributeUsingArrayStub::flushEventListeners ();
2107
2107
}
2108
2108
2109
+ public function testModelObserversCanBeAttachedToModelsThroughAttributesOnParentClasses ()
2110
+ {
2111
+ EloquentModelWithObserveAttributeGrandchildStub::setEventDispatcher ($ events = m::mock (Dispatcher::class));
2112
+ $ events ->shouldReceive ('dispatch ' );
2113
+ $ events ->shouldReceive ('listen ' )->once ()->with ('eloquent.creating: Illuminate\Tests\Database\EloquentModelWithObserveAttributeGrandchildStub ' , EloquentTestObserverStub::class.'@creating ' );
2114
+ $ events ->shouldReceive ('listen ' )->once ()->with ('eloquent.saved: Illuminate\Tests\Database\EloquentModelWithObserveAttributeGrandchildStub ' , EloquentTestObserverStub::class.'@saved ' );
2115
+ $ events ->shouldReceive ('listen ' )->once ()->with ('eloquent.creating: Illuminate\Tests\Database\EloquentModelWithObserveAttributeGrandchildStub ' , EloquentTestAnotherObserverStub::class.'@creating ' );
2116
+ $ events ->shouldReceive ('listen ' )->once ()->with ('eloquent.saved: Illuminate\Tests\Database\EloquentModelWithObserveAttributeGrandchildStub ' , EloquentTestAnotherObserverStub::class.'@saved ' );
2117
+ $ events ->shouldReceive ('listen ' )->once ()->with ('eloquent.creating: Illuminate\Tests\Database\EloquentModelWithObserveAttributeGrandchildStub ' , EloquentTestThirdObserverStub::class.'@creating ' );
2118
+ $ events ->shouldReceive ('listen ' )->once ()->with ('eloquent.saved: Illuminate\Tests\Database\EloquentModelWithObserveAttributeGrandchildStub ' , EloquentTestThirdObserverStub::class.'@saved ' );
2119
+ $ events ->shouldReceive ('forget ' );
2120
+ EloquentModelWithObserveAttributeGrandchildStub::flushEventListeners ();
2121
+ }
2122
+
2109
2123
public function testThrowExceptionOnAttachingNotExistsModelObserverWithString ()
2110
2124
{
2111
2125
$ this ->expectException (InvalidArgumentException::class);
@@ -3206,6 +3220,19 @@ public function saved()
3206
3220
}
3207
3221
}
3208
3222
3223
+ class EloquentTestThirdObserverStub
3224
+ {
3225
+ public function creating ()
3226
+ {
3227
+ //
3228
+ }
3229
+
3230
+ public function saved ()
3231
+ {
3232
+ //
3233
+ }
3234
+ }
3235
+
3209
3236
class EloquentModelStub extends Model
3210
3237
{
3211
3238
public $ connection ;
@@ -3699,6 +3726,24 @@ class EloquentModelWithObserveAttributeUsingArrayStub extends EloquentModelStub
3699
3726
//
3700
3727
}
3701
3728
3729
+ #[ObservedBy([EloquentTestObserverStub::class])]
3730
+ class EloquentModelWithObserveAttributeGrandparentStub extends EloquentModelStub
3731
+ {
3732
+ //
3733
+ }
3734
+
3735
+ #[ObservedBy([EloquentTestAnotherObserverStub::class])]
3736
+ class EloquentModelWithObserveAttributeParentStub extends EloquentModelWithObserveAttributeGrandparentStub
3737
+ {
3738
+ //
3739
+ }
3740
+
3741
+ #[ObservedBy([EloquentTestThirdObserverStub::class])]
3742
+ class EloquentModelWithObserveAttributeGrandchildStub extends EloquentModelWithObserveAttributeParentStub
3743
+ {
3744
+ //
3745
+ }
3746
+
3702
3747
class EloquentModelSavingEventStub
3703
3748
{
3704
3749
//
0 commit comments