Skip to content

Commit 60692ec

Browse files
committed
Improve execution time of test suite
1 parent adc1c8e commit 60692ec

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+401
-360
lines changed

phpunit.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<env name="CACHE_DRIVER" value="redis"/>
3131
<env name="SESSION_DRIVER" value="array"/>
3232
<env name="QUEUE_DRIVER" value="sync"/>
33-
<env name="DB_CONNECTION" value="testing"/>
33+
<env name="DB_CONNECTION" value="sqlite"/>
3434
<env name="DB_HOST" value="192.168.10.10"/>
3535
<env name="DB_DATABASE" value="testing"/>
3636
<env name="DB_USERNAME" value="homestead"/>

tests/AlwaysRunFirstTest.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php namespace GeneaLabs\LaravelModelCaching\Tests;
2+
3+
use Orchestra\Testbench\TestCase as BaseTestCase;
4+
5+
class AlwaysRunFirstTest extends BaseTestCase
6+
{
7+
use EnvironmentSetup;
8+
9+
public function setUp() : void
10+
{
11+
parent::setUp();
12+
13+
$this->createBaselineSqliteDatabase();
14+
15+
$this->withFactories(__DIR__ . '/database/factories');
16+
$this->loadMigrationsFrom(__DIR__ . '/database/migrations');
17+
18+
$this
19+
->artisan(
20+
'db:seed',
21+
[
22+
'--class' => 'DatabaseSeeder',
23+
'--database' => 'baseline',
24+
]
25+
)
26+
->run();
27+
}
28+
29+
protected function getEnvironmentSetUp($app)
30+
{
31+
parent::getEnvironmentSetUp($app);
32+
33+
$app['config']->set('database.default', 'baseline');
34+
$app['config']->set('database.connections.baseline', [
35+
'driver' => 'sqlite',
36+
"url" => null,
37+
'database' => __DIR__ . '/database/baseline.sqlite',
38+
'prefix' => '',
39+
"foreign_key_constraints" => false,
40+
]);
41+
}
42+
43+
44+
/** @test */
45+
public function migrateAndInstallTheDatabase()
46+
{
47+
$this->assertTrue(true);
48+
}
49+
}

tests/CreatesApplication.php

Lines changed: 12 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
<?php namespace GeneaLabs\LaravelModelCaching\Tests;
22

33
use GeneaLabs\LaravelModelCaching\Providers\Service as LaravelModelCachingService;
4-
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Author;
5-
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Book;
6-
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Observers\AuthorObserver;
7-
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Profile;
8-
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Publisher;
9-
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Store;
104
use Orchestra\Database\ConsoleServiceProvider;
115

126
trait CreatesApplication
137
{
8+
use EnvironmentSetup;
9+
1410
protected $cache;
1511

1612
protected function cache()
@@ -26,43 +22,27 @@ protected function cache()
2622

2723
public function setUp() : void
2824
{
25+
$databasePath = __DIR__ . "/database";
26+
$baselinePath = "{$databasePath}/baseline.sqlite";
27+
$testingPath = "{$databasePath}/testing.sqlite";
28+
29+
if (file_exists($testingPath)) {
30+
unlink($testingPath);
31+
}
32+
33+
shell_exec("cp {$baselinePath} {$testingPath}");
34+
2935
parent::setUp();
3036

3137
require(__DIR__ . '/routes/web.php');
3238

3339
$this->withFactories(__DIR__ . '/database/factories');
34-
$this->loadMigrationsFrom(__DIR__ . '/database/migrations');
3540
view()->addLocation(__DIR__ . '/resources/views', 'laravel-model-caching');
3641

3742
$this->cache = app('cache')
3843
->store(config('laravel-model-caching.store'));
3944

4045
$this->cache()->flush();
41-
$publishers = factory(Publisher::class, 10)->create();
42-
(new Author)->observe(AuthorObserver::class);
43-
factory(Author::class, 10)->create()
44-
->each(function ($author) use ($publishers) {
45-
$profile = factory(Profile::class)
46-
->make();
47-
$profile->author_id = $author->id;
48-
$profile->save();
49-
factory(Book::class, random_int(5, 25))->make()
50-
->each(function ($book) use ($author, $publishers) {
51-
$book->author()->associate($author);
52-
$book->publisher()->associate($publishers[rand(0, 9)]);
53-
$book->save();
54-
});
55-
factory(Profile::class)->make([
56-
'author_id' => $author->id,
57-
]);
58-
});
59-
60-
$bookIds = (new Book)->all()->pluck('id');
61-
factory(Store::class, 10)->create()
62-
->each(function ($store) use ($bookIds) {
63-
$store->books()->sync(rand($bookIds->min(), $bookIds->max()));
64-
});
65-
$this->cache()->flush();
6646
}
6747

6848
/**
@@ -75,31 +55,4 @@ protected function getPackageProviders($app)
7555
ConsoleServiceProvider::class,
7656
];
7757
}
78-
79-
protected function getEnvironmentSetUp($app)
80-
{
81-
$app['config']->set('database.default', 'testing');
82-
$app['config']->set('database.connections.testbench', [
83-
'driver' => 'sqlite',
84-
'database' => ':memory:',
85-
'prefix' => '',
86-
]);
87-
$app['config']->set('database.redis.cache', [
88-
'host' => env('REDIS_HOST', '192.168.10.10'),
89-
]);
90-
$app['config']->set('database.redis.default', [
91-
'host' => env('REDIS_HOST', '192.168.10.10'),
92-
]);
93-
$app['config']->set('database.redis.model-cache', [
94-
'host' => env('REDIS_HOST', '192.168.10.10'),
95-
'password' => env('REDIS_PASSWORD', null),
96-
'port' => env('REDIS_PORT', 6379),
97-
'database' => 1,
98-
]);
99-
$app['config']->set('cache.stores.model', [
100-
'driver' => 'redis',
101-
'connection' => 'model-cache',
102-
]);
103-
$app['config']->set('laravel-model-caching.store', 'model');
104-
}
10558
}

tests/EnvironmentSetup.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php namespace GeneaLabs\LaravelModelCaching\Tests;
2+
3+
trait EnvironmentSetup
4+
{
5+
protected function getEnvironmentSetUp($app)
6+
{
7+
$app['config']->set('database.default', 'testing');
8+
$app['config']->set('database.connections.testing', [
9+
'driver' => 'sqlite',
10+
'database' => __DIR__ . '/database/testing.sqlite',
11+
'prefix' => '',
12+
"foreign_key_constraints" => false,
13+
]);
14+
$app['config']->set('database.redis.cache', [
15+
'host' => env('REDIS_HOST', '192.168.10.10'),
16+
]);
17+
$app['config']->set('database.redis.default', [
18+
'host' => env('REDIS_HOST', '192.168.10.10'),
19+
]);
20+
$app['config']->set('database.redis.model-cache', [
21+
'host' => env('REDIS_HOST', '192.168.10.10'),
22+
'password' => env('REDIS_PASSWORD', null),
23+
'port' => env('REDIS_PORT', 6379),
24+
'database' => 1,
25+
]);
26+
$app['config']->set('cache.stores.model', [
27+
'driver' => 'redis',
28+
'connection' => 'model-cache',
29+
]);
30+
$app['config']->set('laravel-model-caching.store', 'model');
31+
}
32+
}

tests/Integration/CachedBuilder/BelongsToManyTest.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ public function testLazyLoadingRelationship()
1616
->books
1717
->first()
1818
->id;
19-
$key = sha1("genealabs:laravel-model-caching:testing::memory::book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
19+
$key = sha1("genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
2020
$tags = [
21-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesstore',
21+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesstore',
2222
];
2323

2424
$stores = (new Book)
@@ -47,9 +47,9 @@ public function testInvalidatingCacheWhenAttaching()
4747
->books
4848
->first()
4949
->id;
50-
$key = sha1("genealabs:laravel-model-caching:testing::memory::book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
50+
$key = sha1("genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
5151
$tags = [
52-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesstore',
52+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesstore',
5353
];
5454
$newStore = factory(Store::class)
5555
->create();
@@ -79,9 +79,9 @@ public function testInvalidatingCacheWhenDetaching()
7979
->books
8080
->first()
8181
->id;
82-
$key = sha1("genealabs:laravel-model-caching:testing::memory::book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
82+
$key = sha1("genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
8383
$tags = [
84-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesstore',
84+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesstore',
8585
];
8686
$result = (new Book)
8787
->find($bookId)
@@ -109,9 +109,9 @@ public function testInvalidatingCacheWhenUpdating()
109109
->books
110110
->first()
111111
->id;
112-
$key = sha1("genealabs:laravel-model-caching:testing::memory::book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
112+
$key = sha1("genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
113113
$tags = [
114-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesstore',
114+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesstore',
115115
];
116116
$result = (new Book)
117117
->find($bookId)
@@ -138,9 +138,9 @@ public function testUncachedRelatedModelDoesntCache()
138138
->books
139139
->first()
140140
->id;
141-
$key = sha1("genealabs:laravel-model-caching:testing::memory::book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
141+
$key = sha1("genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:book-store:genealabslaravelmodelcachingcachedbelongstomany-book_store.book_id_=_{$bookId}");
142142
$tags = [
143-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesuncachedstore',
143+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesuncachedstore',
144144
];
145145

146146
$result = (new Book)

tests/Integration/CachedBuilder/BooleanTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ class BooleanTest extends IntegrationTestCase
88
{
99
public function testBooleanWhereCreatesCorrectCacheKey()
1010
{
11-
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-is_famous_=_1');
11+
$key = sha1('genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:authors:genealabslaravelmodelcachingtestsfixturesauthor-is_famous_=_1');
1212
$tags = [
13-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
13+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesauthor',
1414
];
1515

1616
$authors = (new Author)

tests/Integration/CachedBuilder/DateTimeTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ class DateTimeTest extends IntegrationTestCase
88
{
99
public function testDateWhereCreatesCorrectCacheKey()
1010
{
11-
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-publish_at_>_2009-05-18');
11+
$dateTime = now()->subYears(10)->toDateString();
12+
$key = sha1("genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:books:genealabslaravelmodelcachingtestsfixturesbook-publish_at_>_{$dateTime}");
1213
$tags = [
13-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
14+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesbook',
1415
];
15-
$dateTime = now()->subYears(10)->toDateString();
1616

1717
$results = (new Book)
1818
->where("publish_at", ">", $dateTime)

tests/Integration/CachedBuilder/FindOrFailTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ public function testFindOrFailCachesModels()
1111
$author = (new Author)
1212
->findOrFail(1);
1313

14-
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-find_1');
14+
$key = sha1('genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:authors:genealabslaravelmodelcachingtestsfixturesauthor-find_1');
1515
$tags = [
16-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
16+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesauthor',
1717
];
1818

1919
$cachedResults = $this->cache()

tests/Integration/CachedBuilder/FindTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ class FindTest extends IntegrationTestCase
99
public function testFindModelResultsCreatesCache()
1010
{
1111
$author = collect()->push((new Author)->find(1));
12-
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor_1');
12+
$key = sha1('genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:authors:genealabslaravelmodelcachingtestsfixturesauthor_1');
1313
$tags = [
14-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
14+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesauthor',
1515
];
1616

1717
$cachedResults = collect()->push($this->cache()->tags($tags)
@@ -26,9 +26,9 @@ public function testFindMultipleModelResultsCreatesCache()
2626
{
2727
$authors = (new Author)
2828
->find([1, 2, 3]);
29-
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-find_list_1_2_3');
29+
$key = sha1('genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:authors:genealabslaravelmodelcachingtestsfixturesauthor-find_list_1_2_3');
3030
$tags = [
31-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
31+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesauthor',
3232
];
3333

3434
$cachedResults = $this

tests/Integration/CachedBuilder/ForceDeleteTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public function testForceDeleteClearsCache()
1414
$resultsBefore = $this
1515
->cache()
1616
->tags([
17-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
17+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesauthor',
1818
])
1919
->get(sha1(
20-
'genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-id_=_1'
20+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:authors:genealabslaravelmodelcachingtestsfixturesauthor-id_=_1'
2121
))["value"];
2222

2323
(new Author)
@@ -26,10 +26,10 @@ public function testForceDeleteClearsCache()
2626
$resultsAfter = $this
2727
->cache()
2828
->tags([
29-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
29+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:genealabslaravelmodelcachingtestsfixturesauthor',
3030
])
3131
->get(sha1(
32-
'genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-id_=_1'
32+
'genealabs:laravel-model-caching:testing:/Users/mike/Developer/Sites/laravel-model-caching/tests/database/testing.sqlite:authors:genealabslaravelmodelcachingtestsfixturesauthor-id_=_1'
3333
))["value"];
3434

3535
$this->assertEquals(get_class($resultsBefore), get_class($author));

0 commit comments

Comments
 (0)