forked from nWidart/laravel-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathResourceMakeCommandTest.php
91 lines (70 loc) · 2.82 KB
/
ResourceMakeCommandTest.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
85
86
87
88
89
90
91
<?php
namespace Nwidart\Modules\Tests\Commands;
use Nwidart\Modules\Contracts\RepositoryInterface;
use Nwidart\Modules\Tests\BaseTestCase;
use Spatie\Snapshots\MatchesSnapshots;
class ResourceMakeCommandTest 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_generates_a_new_resource_class()
{
$code = $this->artisan('module:make-resource', ['name' => 'PostsTransformer', 'module' => 'Blog']);
$this->assertTrue(is_file($this->modulePath . '/Transformers/PostsTransformer.php'));
$this->assertSame(0, $code);
}
/** @test */
public function it_generated_correct_file_with_content()
{
$code = $this->artisan('module:make-resource', ['name' => 'PostsTransformer', 'module' => 'Blog']);
$file = $this->finder->get($this->modulePath . '/Transformers/PostsTransformer.php');
$this->assertMatchesSnapshot($file);
$this->assertSame(0, $code);
}
/** @test */
public function it_can_generate_a_collection_resource_class()
{
$code = $this->artisan('module:make-resource', ['name' => 'PostsTransformer', 'module' => 'Blog', '--collection' => true]);
$file = $this->finder->get($this->modulePath . '/Transformers/PostsTransformer.php');
$this->assertMatchesSnapshot($file);
$this->assertSame(0, $code);
}
/** @test */
public function it_can_change_the_default_namespace()
{
$this->app['config']->set('modules.paths.generator.resource.path', 'Http/Resources');
$code = $this->artisan('module:make-resource', ['name' => 'PostsTransformer', 'module' => 'Blog', '--collection' => true]);
$file = $this->finder->get($this->modulePath . '/Http/Resources/PostsTransformer.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.resource.namespace', 'Http\\Resources');
$code = $this->artisan('module:make-resource', ['name' => 'PostsTransformer', 'module' => 'Blog', '--collection' => true]);
$file = $this->finder->get($this->modulePath . '/Transformers/PostsTransformer.php');
$this->assertMatchesSnapshot($file);
$this->assertSame(0, $code);
}
}