Completed
Push — master ( 1ee71b...37d1e0 )
by Freek
01:43
created

MailableTestServiceProvider::register()   B

Complexity

Conditions 2
Paths 1

Size

Total Lines 28
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 28
rs 8.8571
c 0
b 0
f 0
cc 2
eloc 13
nc 1
nop 0
1
<?php
2
3
namespace Spatie\MailableTest;
4
5
use Faker\Factory;
6
use Illuminate\Support\ServiceProvider;
7
use Spatie\MailableTest\Exceptions\InvalidConfiguration;
8
9
class MailableTestServiceProvider extends ServiceProvider
10
{
11
    public function boot()
12
    {
13
        $this->publishes([
14
            __DIR__ . '/config/laravel-mailable-test.php' => config_path('laravel-mailable-test.php'),
15
        ], 'config');
16
    }
17
18
    public function register()
19
    {
20
        $this->mergeConfigFrom(__DIR__.'/../config/laravel-mailable-test.php', 'laravel-mailable-test');
21
22
        $this->app->bind(MailableFactory::class, function() {
23
24
            $argumentValueProviderClass = config('laravel-mailable-test.argument_value_provider_class');
25
26
            if (! is_a($argumentValueProviderClass, ArgumentValueProvider::class, true)) {
27
28
                throw InvalidConfiguration::invalidValueProviderClass($argumentValueProviderClass);
29
            }
30
31
            $argumentValueProvider = app($argumentValueProviderClass);
32
33
            return new MailableFactory($argumentValueProvider);
34
        });
35
36
        $this->app->bind(ArgumentValueProvider::class, function() {
37
           $faker = Factory::create();
38
39
           return new ArgumentValueProvider($faker);
40
        });
41
42
        $this->commands([
43
            SendTestMail::class,
44
        ]);
45
    }
46
47
    public function provides()
48
    {
49
        return ['command.mail.send.test'];
50
    }
51
}
52