forked from nWidart/laravel-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRuleMakeCommandTest.php
84 lines (65 loc) · 2.49 KB
/
RuleMakeCommandTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
namespace Nwidart\Modules\Tests\Commands;
use Nwidart\Modules\Contracts\RepositoryInterface;
use Nwidart\Modules\Tests\BaseTestCase;
use Spatie\Snapshots\MatchesSnapshots;
class RuleMakeCommandTest extends BaseTestCase
{
use MatchesSnapshots;
/**
* @var \Illuminate\Filesystem\Filesystem
*/
private $finder;
/**
* @var string
*/
private $modulePath;
public function setUp(): void
{
parent::setUp();
$this->modulePath = base_path('modules/Blog');
$this->finder = $this->app['files'];
$this->artisan('module:make', ['name' => ['Blog']]);
}
public function tearDown(): void
{
$this->app[RepositoryInterface::class]->delete('Blog');
parent::tearDown();
}
/** @test */
public function it_makes_rule()
{
$code = $this->artisan('module:make-rule', ['name' => 'UniqueRule', 'module' => 'Blog']);
$ruleFile = $this->modulePath . '/Rules/UniqueRule.php';
$this->assertTrue(is_file($ruleFile), 'Rule file was not created.');
$this->assertMatchesSnapshot($this->finder->get($ruleFile));
$this->assertSame(0, $code);
}
/** @test */
public function it_makes_implicit_rule()
{
$code = $this->artisan('module:make-rule', ['name' => 'ImplicitUniqueRule', 'module' => 'Blog', '--implicit' => true]);
$ruleFile = $this->modulePath . '/Rules/ImplicitUniqueRule.php';
$this->assertTrue(is_file($ruleFile), 'Rule file was not created.');
$this->assertMatchesSnapshot($this->finder->get($ruleFile));
$this->assertSame(0, $code);
}
/** @test */
public function it_can_change_the_default_namespace()
{
$this->app['config']->set('modules.paths.generator.rules.path', 'SuperRules');
$code = $this->artisan('module:make-rule', ['name' => 'UniqueRule', 'module' => 'Blog']);
$file = $this->finder->get($this->modulePath . '/SuperRules/UniqueRule.php');
$this->assertMatchesSnapshot($file);
$this->assertSame(0, $code);
}
/** @test */
public function it_can_change_the_default_namespace_specific()
{
$this->app['config']->set('modules.paths.generator.rules.namespace', 'SuperRules');
$code = $this->artisan('module:make-rule', ['name' => 'UniqueRule', 'module' => 'Blog']);
$file = $this->finder->get($this->modulePath . '/Rules/UniqueRule.php');
$this->assertMatchesSnapshot($file);
$this->assertSame(0, $code);
}
}