Skip to content

Commit 6c22213

Browse files
committed
test: add unit tests for BuilderMakeCommand functionality
1 parent 4db105c commit 6c22213

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
use Orchestra\Testbench\Concerns\InteractsWithPublishedFiles;
4+
5+
uses(InteractsWithPublishedFiles::class);
6+
7+
beforeEach(function () {
8+
$this->files = [
9+
'app/Models/Builders/FooBuilder.php',
10+
'app/Models/Builders/Foo/BarBuilder.php',
11+
];
12+
});
13+
14+
it('can generate builder file', function () {
15+
$this->artisan('make:builder', ['name' => 'FooBuilder'])
16+
->assertExitCode(0);
17+
18+
$this->assertFileContains([
19+
'namespace App\Models\Builders;',
20+
'use Illuminate\Database\Eloquent\Builder;',
21+
'class FooBuilder extends Builder',
22+
], 'app/Models/Builders/FooBuilder.php');
23+
24+
$this->assertFilenameNotExists('app/Models/Builders/Foo/BarBuilder.php');
25+
});
26+
27+
it('can generate builder file with namespace', function () {
28+
$this->artisan('make:builder', ['name' => 'Foo\BarBuilder'])
29+
->assertExitCode(0);
30+
31+
$this->assertFileContains([
32+
'namespace App\Models\Builders\Foo;',
33+
'use Illuminate\Database\Eloquent\Builder;',
34+
'class BarBuilder extends Builder',
35+
], 'app/Models/Builders/Foo/BarBuilder.php');
36+
37+
$this->assertFilenameNotExists('app/Models/Builders/FooBuilder.php');
38+
});
39+
40+
it('can generate builder file with model option', function () : void {
41+
$this->artisan('make:builder', ['name' => 'FooBuilder', '--model' => 'Foo'])
42+
->assertExitCode(0);
43+
44+
$this->assertFileContains([
45+
'namespace App\Models\Builders;',
46+
'class FooBuilder extends Builder',
47+
'@template TModel of Foo',
48+
'@extends Builder<Foo>',
49+
], 'app/Models/Builders/FooBuilder.php');
50+
});

0 commit comments

Comments
 (0)