Skip to content

Commit 6ea8fbd

Browse files
committed
Fixed #119
1 parent 8736fa3 commit 6ea8fbd

File tree

6 files changed

+99
-6
lines changed

6 files changed

+99
-6
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
55
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
66

7+
## [0.2.53] - 6 May 2018
8+
### Fixed
9+
- `->inRandomOrder()` to not cache the query.
10+
711
## [0.2.52] - 21 Mar 2018
812
### Changed
913
- `flush` console command to be called `clear`, to match other laravel commands.

composer.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@
1919
},
2020
"require-dev": {
2121
"codedungeon/phpunit-result-printer": "*",
22-
"fzaninotto/faker": "~1.4",
23-
"mockery/mockery": "0.9.*",
24-
"orchestra/database": "3.6.x-dev@dev",
22+
"fzaninotto/faker": "*",
23+
"mockery/mockery": "*",
24+
"orchestra/database": "^3.6",
2525
"orchestra/testbench": "^3.6",
2626
"orchestra/testbench-browser-kit": "^3.6",
2727
"php-coveralls/php-coveralls" : "*",
2828
"phpmd/phpmd": "*",
2929
"phpunit/phpunit": "*",
3030
"sebastian/phpcpd": "*",
31-
"symfony/thanks": "^1.0",
32-
"predis/predis": "^1.1"
31+
"symfony/thanks": "*",
32+
"predis/predis": "*"
3333
},
3434
"autoload": {
3535
"psr-4": {

phpunit.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
convertWarningsToExceptions="true"
1010
printerClass="Codedungeon\PHPUnitPrettyResultPrinter\Printer"
1111
processIsolation="false"
12-
stopOnFailure="false"
12+
stopOnFailure="true"
1313
syntaxCheck="false"
1414
>
1515
<testsuites>

src/CachedBuilder.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use GeneaLabs\LaravelModelCaching\Traits\BuilderCaching;
44
use GeneaLabs\LaravelModelCaching\Traits\Caching;
55
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
6+
use Illuminate\Support\Collection;
67

78
/**
89
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
@@ -78,6 +79,13 @@ public function get($columns = ["*"])
7879
return $this->cachedValue(func_get_args(), $cacheKey);
7980
}
8081

82+
public function inRandomOrder($seed = '')
83+
{
84+
$this->isCachable = false;
85+
86+
return parent::inRandomOrder($seed);
87+
}
88+
8189
public function insert(array $values)
8290
{
8391
$this->checkCooldownAndFlushAfterPersiting($this->model);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php namespace GeneaLabs\LaravelModelCaching\Tests\Integration;
2+
3+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Author;
4+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Book;
5+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Profile;
6+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Publisher;
7+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Store;
8+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedAuthor;
9+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedBook;
10+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedProfile;
11+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedPublisher;
12+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedStore;
13+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Http\Resources\Author as AuthorResource;
14+
use GeneaLabs\LaravelModelCaching\Tests\IntegrationTestCase;
15+
use Illuminate\Foundation\Testing\RefreshDatabase;
16+
use Illuminate\Support\Collection;
17+
18+
class CachedBuilderRelationshipsTest extends IntegrationTestCase
19+
{
20+
use RefreshDatabase;
21+
22+
public function testHasRelationshipResults()
23+
{
24+
$booksWithStores = (new Book)
25+
->with("stores")
26+
->has("stores")
27+
->get();
28+
$key = "genealabs:laravel-model-caching:testing:genealabslaravelmodelcachingtestsfixturesbook_exists_and_books.id_=_book_store.book_id-stores";
29+
$tags = [
30+
"genealabs:laravel-model-caching:testing:genealabslaravelmodelcachingtestsfixturesbook",
31+
"genealabs:laravel-model-caching:testing:genealabslaravelmodelcachingtestsfixturesstore",
32+
];
33+
$cachedResults = $this
34+
->cache()
35+
->tags($tags)
36+
->get(sha1($key))["value"];
37+
38+
$this->assertNotEmpty($booksWithStores);
39+
$this->assertEquals($booksWithStores, $cachedResults);
40+
}
41+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php namespace GeneaLabs\LaravelModelCaching\Tests\Integration;
2+
3+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Author;
4+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Book;
5+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Profile;
6+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Publisher;
7+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Store;
8+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedAuthor;
9+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedBook;
10+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedProfile;
11+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedPublisher;
12+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedStore;
13+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Http\Resources\Author as AuthorResource;
14+
use GeneaLabs\LaravelModelCaching\Tests\IntegrationTestCase;
15+
use Illuminate\Foundation\Testing\RefreshDatabase;
16+
use Illuminate\Support\Collection;
17+
18+
class InRandomOrderQueryTest extends IntegrationTestCase
19+
{
20+
use RefreshDatabase;
21+
22+
public function testInRandomOrderCachesResults()
23+
{
24+
$cachedBook1 = (new Book)
25+
->inRandomOrder()
26+
->first();
27+
$cachedBook2 = (new Book)
28+
->inRandomOrder()
29+
->first();
30+
$book1 = (new UncachedBook)
31+
->inRandomOrder()
32+
->first();
33+
$book2 = (new UncachedBook)
34+
->inRandomOrder()
35+
->first();
36+
37+
$this->assertNotEquals($book1, $book2);
38+
$this->assertNotEquals($cachedBook1, $cachedBook2);
39+
}
40+
}

0 commit comments

Comments
 (0)