|
2 | 2 |
|
3 | 3 | use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Author;
|
4 | 4 | use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Book;
|
| 5 | +use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Post; |
| 6 | +use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Publisher; |
| 7 | +use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedPublisher; |
| 8 | +use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedPost; |
5 | 9 | use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedAuthor;
|
6 | 10 | use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedBook;
|
7 | 11 | use GeneaLabs\LaravelModelCaching\Tests\IntegrationTestCase;
|
@@ -99,4 +103,46 @@ public function testWhereInUsesCorrectBindings()
|
99 | 103 | $this->assertEmpty($authors->diffKeys($cachedResults));
|
100 | 104 | $this->assertEmpty($liveResults->diffKeys($cachedResults));
|
101 | 105 | }
|
| 106 | + |
| 107 | + public function testWhereInSubQueryUsesCorrectBindings() |
| 108 | + { |
| 109 | + $key = sha1("genealabs:laravel-model-caching:testing:{$this->testingSqlitePath}testing.sqlite:books:genealabslaravelmodelcachingtestsfixturesbook-publisher_id_in_select_id_from_publishers_where_name_=_Publisher_Foo_or_name_=_Publisher_Bar-id_>_0"); |
| 110 | + $tags = [ |
| 111 | + "genealabs:laravel-model-caching:testing:{$this->testingSqlitePath}testing.sqlite:genealabslaravelmodelcachingtestsfixturesbook", |
| 112 | + ]; |
| 113 | + |
| 114 | + /** @var Collection $publishers */ |
| 115 | + $publishers = factory(UncachedPublisher::class, 5)->create(); |
| 116 | + $publishers->get(1)->update(['name' => 'Publisher Foo']); |
| 117 | + $publishers->get(3)->update(['name' => 'Publisher Bar']); |
| 118 | + |
| 119 | + $publishers->each(function (UncachedPublisher $publisher) { |
| 120 | + factory(UncachedBook::class, 2)->create(['publisher_id' => $publisher->id]); |
| 121 | + }); |
| 122 | + |
| 123 | + $books = Book::query() |
| 124 | + ->whereIn('publisher_id', |
| 125 | + Publisher::select('id') |
| 126 | + ->where('name', 'Publisher Foo') |
| 127 | + ->orWhere('name', 'Publisher Bar') |
| 128 | + ) |
| 129 | + ->where('id', '>', 0) |
| 130 | + ->get()->pluck('id')->toArray(); |
| 131 | + |
| 132 | + $cachedResults = $this |
| 133 | + ->cache() |
| 134 | + ->tags($tags) |
| 135 | + ->get($key)['value']; |
| 136 | + |
| 137 | + $liveResults = Book::query() |
| 138 | + ->whereIn('publisher_id', |
| 139 | + Publisher::select('id') |
| 140 | + ->where('name', 'Publisher Foo') |
| 141 | + ->orWhere('name', 'Publisher Bar') |
| 142 | + )->get()->pluck('id')->toArray(); |
| 143 | + |
| 144 | + $this->assertCount(4, $books); |
| 145 | + $this->assertSame($liveResults, $books); |
| 146 | + $this->assertSame($liveResults, $cachedResults->pluck('id')->filter()->toArray()); |
| 147 | + } |
102 | 148 | }
|
0 commit comments