33use GeneaLabs \LaravelModelCaching \Tests \Fixtures \Author ;
44use GeneaLabs \LaravelModelCaching \Tests \Fixtures \Book ;
55use GeneaLabs \LaravelModelCaching \Tests \Fixtures \Profile ;
6+ use GeneaLabs \LaravelModelCaching \Tests \Fixtures \Publisher ;
67use GeneaLabs \LaravelModelCaching \Tests \Fixtures \Store ;
78use GeneaLabs \LaravelModelCaching \Tests \Fixtures \UncachedAuthor ;
89use GeneaLabs \LaravelModelCaching \Tests \Fixtures \UncachedBook ;
910use GeneaLabs \LaravelModelCaching \Tests \Fixtures \UncachedProfile ;
11+ use GeneaLabs \LaravelModelCaching \Tests \Fixtures \UncachedPublisher ;
1012use GeneaLabs \LaravelModelCaching \Tests \Fixtures \UncachedStore ;
1113use GeneaLabs \LaravelModelCaching \Tests \TestCase ;
1214use Illuminate \Foundation \Testing \RefreshDatabase ;
@@ -23,11 +25,13 @@ public function setUp()
2325 parent ::setUp ();
2426
2527 cache ()->flush ();
28+ $ publishers = factory (Publisher::class, 10 )->create ();
2629 factory (Author::class, 10 )->create ()
27- ->each (function ($ author ) {
30+ ->each (function ($ author ) use ( $ publishers ) {
2831 factory (Book::class, random_int (2 , 10 ))->make ()
29- ->each (function ($ book ) use ($ author ) {
32+ ->each (function ($ book ) use ($ author, $ publishers ) {
3033 $ book ->author ()->associate ($ author );
34+ $ book ->publisher ()->associate ($ publishers [rand (0 , 9 )]);
3135 $ book ->save ();
3236 });
3337 factory (Profile::class)->make ([
@@ -407,4 +411,31 @@ public function testValueModelResultsCreatesCache()
407411 $ this ->assertEquals ($ authors , $ cachedResults );
408412 $ this ->assertEquals ($ liveResults , $ cachedResults );
409413 }
414+
415+ public function testNestedRelationshipEagerloading ()
416+ {
417+ $ authors = collect ()->push (
418+ (new Author )->with ('books.publisher ' )
419+ ->first ()
420+ );
421+ $ key = 'genealabslaravelmodelcachingtestsfixturesauthor-books-books.publisher-first ' ;
422+ $ tags = [
423+ 'genealabslaravelmodelcachingtestsfixturesauthor ' ,
424+ 'genealabslaravelmodelcachingtestsfixturesbook ' ,
425+ 'genealabslaravelmodelcachingtestsfixturespublisher ' ,
426+ ];
427+
428+ $ cachedResults = collect ()->push (
429+ cache ()->tags ($ tags )
430+ ->get ($ key )
431+ );
432+
433+ $ liveResults = collect ()->push (
434+ (new UncachedAuthor )->with ('books.publisher ' )
435+ ->first ()
436+ );
437+
438+ $ this ->assertEmpty ($ authors ->diffAssoc ($ cachedResults ));
439+ $ this ->assertEmpty ($ liveResults ->diffAssoc ($ cachedResults ));
440+ }
410441}
0 commit comments