Skip to content
This repository was archived by the owner on Jun 29, 2021. It is now read-only.

Commit 96819eb

Browse files
ijpatricioJosé Postiga
and
José Postiga
authored
Adds seeders for Links and Tags. (#57)
* Adds seeders for and . * Ignores sqlite file. * Removes unnecessary (for now) Seeder call on the main database seeder file. * tests(Seeers): add basic test cases * refactor(Tags): optimized seeder class and add test coverage * refactor(Links): optimized seeder class and add test coverage Co-authored-by: José Postiga <[email protected]>
1 parent 6ad1629 commit 96819eb

File tree

8 files changed

+127
-0
lines changed

8 files changed

+127
-0
lines changed

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ Homestead.yaml
55
.env
66
.phpunit.result.cache
77
/.php_cs.cache
8+
database/database.sqlite

Diff for: database/seeders/.gitkeep

Whitespace-only changes.

Diff for: database/seeders/DatabaseSeeder.php

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace Database\Seeders;
4+
5+
use Domains\Links\Database\Seeders\LinksTableSeeder;
6+
use Exception;
7+
use Illuminate\Database\Seeder;
8+
9+
class DatabaseSeeder extends Seeder
10+
{
11+
public function run(): void
12+
{
13+
if ($this->container['config']->get('app.env') === 'production') {
14+
throw new Exception('This is not allowed when in production environment.');
15+
}
16+
17+
$this->call(LinksTableSeeder::class);
18+
}
19+
}

Diff for: domains/Links/Database/Seeders/LinksTableSeeder.php

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace Domains\Links\Database\Seeders;
4+
5+
use Domains\Links\Database\Factories\LinkFactory;
6+
use Illuminate\Database\Seeder;
7+
8+
class LinksTableSeeder extends Seeder
9+
{
10+
public function run(): void
11+
{
12+
LinkFactory::times(20)
13+
->approved()
14+
->create();
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Domains\Links\Tests\Feature\Database\Seeders;
4+
5+
use Domains\Links\Database\Seeders\LinksTableSeeder;
6+
use Domains\Links\Models\Link;
7+
use Laravel\Lumen\Testing\DatabaseMigrations;
8+
use Tests\TestCase;
9+
10+
class LinksTableSeederTest extends TestCase
11+
{
12+
use DatabaseMigrations;
13+
14+
/** @test */
15+
public function it_seeds_links_table(): void
16+
{
17+
$this->artisan('db:seed', ['--class' => LinksTableSeeder::class]);
18+
19+
self::assertEquals(20, Link::count());
20+
}
21+
}

Diff for: domains/Tags/Database/Seeders/TagsTableSeeder.php

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Domains\Tags\Database\Seeders;
4+
5+
use Domains\Tags\Database\Factories\TagFactory;
6+
use Illuminate\Database\Seeder;
7+
8+
class TagsTableSeeder extends Seeder
9+
{
10+
public function run(): void
11+
{
12+
TagFactory::new()
13+
->createMany([
14+
['name' => 'Eloquent'],
15+
['name' => 'Livewire'],
16+
['name' => 'Vue'],
17+
['name' => 'Testing'],
18+
]);
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace Domains\Tags\Tests\Features\Database\Seeders;
4+
5+
use Domains\Tags\Database\Seeders\TagsTableSeeder;
6+
use Laravel\Lumen\Testing\DatabaseMigrations;
7+
use Tests\TestCase;
8+
9+
class TagsTableSeederTest extends TestCase
10+
{
11+
use DatabaseMigrations;
12+
13+
/** @test */
14+
public function it_seeds_tags_table(): void
15+
{
16+
$this->artisan('db:seed', ['--class' => TagsTableSeeder::class]);
17+
18+
$this->seeInDatabase('tags', ['name' => 'Eloquent'])
19+
->seeInDatabase('tags', ['name' => 'Livewire'])
20+
->seeInDatabase('tags', ['name' => 'Vue'])
21+
->seeInDatabase('tags', ['name' => 'Testing']);
22+
}
23+
}
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace Tests\Feature\Database\Seeders;
4+
5+
use Laravel\Lumen\Testing\DatabaseMigrations;
6+
use Tests\TestCase;
7+
8+
class DatabaseSeederTest extends TestCase
9+
{
10+
use DatabaseMigrations;
11+
12+
/** @test */
13+
public function it_prevents_seeds_to_run_in_production(): void
14+
{
15+
$this->expectException(\Exception::class);
16+
17+
$this->app['config']->set('app.env', 'production');
18+
19+
$this->artisan('db:seed');
20+
}
21+
22+
/** @test */
23+
public function it_can_seed_database(): void
24+
{
25+
self::assertEquals(0, $this->artisan('db:seed'));
26+
}
27+
}

0 commit comments

Comments
 (0)