This repository was archived by the owner on Jul 31, 2018. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +47
-2
lines changed
Expand file tree Collapse file tree 4 files changed +47
-2
lines changed Original file line number Diff line number Diff line change @@ -19,9 +19,30 @@ private function getIndexName(Model $model)
1919 return $ model ->getTable ();
2020 }
2121
22- private function hasAlgoliaTrait (Model $ model )
22+ private function hasAlgoliaTrait (Model $ class , $ autoload = false )
2323 {
24- return (isset (class_uses ($ model )['AlgoliaSearch\Laravel\AlgoliaEloquentTrait ' ]));
24+ $ traits = [];
25+
26+ // Get traits of all parent classes
27+ do {
28+ $ traits = array_merge (class_uses ($ class , $ autoload ), $ traits );
29+ } while ($ class = get_parent_class ($ class ));
30+
31+ // Get traits of all parent traits
32+ $ traitsToSearch = $ traits ;
33+ while (!empty ($ traitsToSearch )) {
34+ $ newTraits = class_uses (array_pop ($ traitsToSearch ), $ autoload );
35+ $ traits = array_merge ($ newTraits , $ traits );
36+ $ traitsToSearch = array_merge ($ newTraits , $ traitsToSearch );
37+ };
38+
39+ foreach ($ traits as $ trait => $ same ) {
40+ $ traits = array_merge (class_uses ($ trait , $ autoload ), $ traits );
41+ }
42+
43+ $ traits = array_unique ($ traits );
44+
45+ return (isset ($ traits ['AlgoliaSearch\Laravel\AlgoliaEloquentTrait ' ]));
2546 }
2647
2748 public function isAutoIndex (Model $ model )
Original file line number Diff line number Diff line change 77use AlgoliaSearch \Tests \Models \Model3 ;
88use AlgoliaSearch \Tests \Models \Model4 ;
99use AlgoliaSearch \Tests \Models \Model5 ;
10+ use AlgoliaSearch \Tests \Models \Model7 ;
1011use Orchestra \Testbench \TestCase ;
1112
1213class ModelHelperTest extends TestCase
@@ -27,10 +28,12 @@ public function testAutoIndexAndAutoDelete()
2728 $ this ->assertEquals (true , $ this ->modelHelper ->isAutoIndex (new Model1 ()));
2829 $ this ->assertEquals (false , $ this ->modelHelper ->isAutoIndex (new Model2 ()));
2930 $ this ->assertEquals (false , $ this ->modelHelper ->isAutoIndex (new Model3 ()));
31+ $ this ->assertEquals (true , $ this ->modelHelper ->isAutoIndex (new Model7 ()));
3032
3133 $ this ->assertEquals (true , $ this ->modelHelper ->isAutoDelete (new Model1 ()));
3234 $ this ->assertEquals (false , $ this ->modelHelper ->isAutoDelete (new Model2 ()));
3335 $ this ->assertEquals (false , $ this ->modelHelper ->isAutoDelete (new Model3 ()));
36+ $ this ->assertEquals (true , $ this ->modelHelper ->isAutoDelete (new Model7 ()));
3437 }
3538
3639 public function testGetKey ()
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace AlgoliaSearch \Tests \Models ;
4+
5+ use AlgoliaSearch \Tests \Traits \Trait1 ;
6+ use Illuminate \Database \Eloquent \Model ;
7+
8+ class Model7 extends Model
9+ {
10+ use Trait1;
11+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace AlgoliaSearch \Tests \Traits ;
4+
5+ use AlgoliaSearch \Laravel \AlgoliaEloquentTrait ;
6+
7+ trait Trait1
8+ {
9+ use AlgoliaEloquentTrait;
10+ }
You can’t perform that action at this time.
0 commit comments