• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

orchestral / canvas / 5911693354

19 Aug 2023 01:25PM UTC coverage: 93.757% (-3.0%) from 96.723%
5911693354

push

github

web-flow
Workbench code generators (#22)

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

---------

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

47 of 47 new or added lines in 5 files covered. (100.0%)

811 of 865 relevant lines covered (93.76%)

20.83 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

76.27
/src/LaravelServiceProvider.php
1
<?php
2

3
namespace Orchestra\Canvas;
4

5
use Illuminate\Console\Application as Artisan;
6
use Illuminate\Contracts\Foundation\Application;
7
use Illuminate\Contracts\Support\DeferrableProvider;
8
use Illuminate\Filesystem\Filesystem;
9
use Illuminate\Support\Arr;
10
use Illuminate\Support\ServiceProvider;
11
use Orchestra\Canvas\Core\Presets\Preset;
12
use Orchestra\Workbench\Workbench;
13
use Symfony\Component\Yaml\Yaml;
14

15
class LaravelServiceProvider extends ServiceProvider implements DeferrableProvider
16
{
17
    use Core\CommandsProvider;
18

19
    /**
20
     * Register services.
21
     *
22
     * @return void
23
     */
24
    public function register()
25
    {
26
        $this->app->singleton('orchestra.canvas', function (Application $app) {
91✔
27
            $filesystem = $app->make('files');
70✔
28

29
            if (\defined('TESTBENCH_WORKING_PATH') && class_exists(Workbench::class)) {
70✔
30
                return $this->registerCanvasForWorkbench($filesystem);
×
31
            }
32

33
            $config = ['preset' => 'laravel'];
70✔
34

35
            if ($filesystem->exists($app->basePath('canvas.yaml'))) {
70✔
36
                $config = Yaml::parseFile($app->basePath('canvas.yaml'));
×
37
            } else {
38
                Arr::set($config, 'testing.extends', [
70✔
39
                    'unit' => 'PHPUnit\Framework\TestCase',
70✔
40
                    'feature' => 'Tests\TestCase',
70✔
41
                ]);
70✔
42

43
                $config['namespace'] = trim($this->app->getNamespace(), '\\');
70✔
44
            }
45

46
            $config['user-auth-provider'] = $this->userProviderModel();
70✔
47

48
            return Canvas::preset($config, $app->basePath(), $filesystem);
70✔
49
        });
91✔
50
    }
51

52
    /**
53
     * Bootstrap services.
54
     *
55
     * @return void
56
     */
57
    public function boot()
58
    {
59
        Artisan::starting(static function ($artisan) {
91✔
60
            $artisan->getLaravel()->booted(static function ($app) use ($artisan) {
90✔
61
                /**
62
                 * @var \Illuminate\Contracts\Foundation\Application $app
63
                 * @var \Illuminate\Console\Application $artisan
64
                 */
65
                $preset = $app->make('orchestra.canvas');
90✔
66

67
                if (\defined('TESTBENCH_WORKING_PATH') || $app->runningUnitTests()) {
90✔
68
                    $artisan->add(new Commands\Channel($preset));
90✔
69
                    $artisan->add(new Commands\Component($preset));
90✔
70
                    $artisan->add(new Commands\Console($preset));
90✔
71
                    $artisan->add(new Commands\Event($preset));
90✔
72
                    $artisan->add(new Commands\Exception($preset));
90✔
73
                    $artisan->add(new Commands\Database\Cast($preset));
90✔
74
                    $artisan->add(new Commands\Database\Eloquent($preset));
90✔
75
                    $artisan->add(new Commands\Database\Factory($preset));
90✔
76
                    $artisan->add(new Commands\Database\Migration($preset));
90✔
77
                    $artisan->add(new Commands\Database\Observer($preset));
90✔
78
                    $artisan->add(new Commands\Database\Seeder($preset));
90✔
79
                    $artisan->add(new Commands\Job($preset));
90✔
80
                    $artisan->add(new Commands\Listener($preset));
90✔
81
                    $artisan->add(new Commands\Mail($preset));
90✔
82
                    $artisan->add(new Commands\Notification($preset));
90✔
83
                    $artisan->add(new Commands\Policy($preset));
90✔
84
                    $artisan->add(new Commands\Provider($preset));
90✔
85
                    $artisan->add(new Commands\Request($preset));
90✔
86
                    $artisan->add(new Commands\Resource($preset));
90✔
87
                    $artisan->add(new Commands\Routing\Controller($preset));
90✔
88
                    $artisan->add(new Commands\Routing\Middleware($preset));
90✔
89
                    $artisan->add(new Commands\Rule($preset));
90✔
90
                    $artisan->add(new Commands\StubPublish($preset));
90✔
91
                    $artisan->add(new Commands\Testing($preset));
90✔
92
                }
93

94
                $preset->addAdditionalCommands($artisan);
90✔
95
            });
90✔
96
        });
91✔
97
    }
98

99
    /**
100
     * Regiseter canvas for workbench.
101
     */
102
    protected function registerCanvasForWorkbench(Filesystem $filesystem): Preset
103
    {
104
        return Canvas::preset(
×
105
            [
×
106
                'preset' => Presets\PackageWorkbench::class,
×
107
                'testing' => [
×
108
                    'extends' => ['unit' => 'PHPUnit\Framework\TestCase',
×
109
                        'feature' => 'Orchestra\Testbench\TestCase',
×
110
                    ],
×
111
                ],
×
112
            ],
×
113
            rtrim(Workbench::packagePath(), DIRECTORY_SEPARATOR),
×
114
            $filesystem
×
115
        );
×
116
    }
117

118
    /**
119
     * Get the services provided by the provider.
120
     *
121
     * @return array<int, string>
122
     */
123
    public function provides()
124
    {
125
        return ['orchestra.canvas'];
1✔
126
    }
127
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc