Completed
Push — 2.0 ( b89c7a...2290fb )
by Nicolas
12:29
created

BaseMenuTest::resetDatabase()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 5
Bugs 0 Features 0
Metric Value
c 5
b 0
f 0
dl 0
loc 23
rs 9.0856
cc 1
eloc 13
nc 1
nop 0
1
<?php
2
3
namespace Modules\Menu\Tests;
4
5
use Faker\Factory;
6
use Illuminate\Contracts\Console\Kernel;
7
use Illuminate\Database\Eloquent\Model;
8
use Illuminate\Support\Str;
9
use Maatwebsite\Sidebar\SidebarServiceProvider;
10
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
11
use Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider;
12
use Modules\Core\Providers\CoreServiceProvider;
13
use Modules\Menu\Providers\MenuServiceProvider;
14
use Modules\Menu\Repositories\MenuItemRepository;
15
use Modules\Menu\Repositories\MenuRepository;
16
use Modules\Page\Providers\PageServiceProvider;
17
use Modules\Tag\Providers\TagServiceProvider;
18
use Nwidart\Modules\LaravelModulesServiceProvider;
19
use Orchestra\Testbench\TestCase;
20
21
abstract class BaseMenuTest extends TestCase
22
{
23
    /**
24
     * @var MenuRepository
25
     */
26
    protected $menu;
27
    /**
28
     * @var MenuItemRepository
29
     */
30
    protected $menuItem;
31
32
    /**
33
     *
34
     */
35
    public function setUp()
36
    {
37
        parent::setUp();
38
39
        $this->resetDatabase();
40
41
        $this->menu = app(MenuRepository::class);
42
        $this->menuItem = app(MenuItemRepository::class);
43
    }
44
45
    protected function getPackageProviders($app)
46
    {
47
        return [
48
            LaravelModulesServiceProvider::class,
49
            CoreServiceProvider::class,
50
            TagServiceProvider::class,
51
            PageServiceProvider::class,
52
            MenuServiceProvider::class,
53
            LaravelLocalizationServiceProvider::class,
54
            SidebarServiceProvider::class,
55
        ];
56
    }
57
58
    protected function getPackageAliases($app)
59
    {
60
        return [
61
            'Eloquent' => Model::class,
62
            'LaravelLocalization' => LaravelLocalization::class,
63
        ];
64
    }
65
66
    protected function getEnvironmentSetUp($app)
67
    {
68
        $app['path.base'] = __DIR__ . '/..';
69
        $app['config']->set('database.default', 'sqlite');
70
        $app['config']->set('database.connections.sqlite', array(
71
            'driver' => 'sqlite',
72
            'database' => ':memory:',
73
            'prefix' => '',
74
        ));
75
        $app['config']->set('translatable.locales', ['en', 'fr']);
76
    }
77
78
    private function resetDatabase()
79
    {
80
        // Makes sure the migrations table is created
81
        $this->artisan('migrate', [
82
            '--database' => 'sqlite',
83
        ]);
84
        // We empty all tables
85
        $this->artisan('migrate:reset', [
86
            '--database' => 'sqlite',
87
        ]);
88
        // Migrate
89
        $this->artisan('migrate', [
90
            '--database' => 'sqlite',
91
        ]);
92
        $this->artisan('migrate', [
93
            '--database' => 'sqlite',
94
            '--path'     => 'Modules/Page/Database/Migrations',
95
        ]);
96
        $this->artisan('migrate', [
97
            '--database' => 'sqlite',
98
            '--path'     => 'Modules/Tag/Database/Migrations',
99
        ]);
100
    }
101
102
    public function createMenu($name, $title)
103
    {
104
        $data = [
105
            'name' => $name,
106
            'primary' => true,
107
            'en' => [
108
                'title' => $title,
109
                'status' => 1,
110
            ],
111
        ];
112
113
        return $this->menu->create($data);
114
    }
115
116
    /**
117
     * Create a menu item for the given menu and position
118
     *
119
     * @param  int    $menuId
120
     * @param  int    $position
121
     * @param  null   $parentId
122
     * @return object
123
     */
124
    protected function createMenuItemForMenu($menuId, $position, $parentId = null)
125
    {
126
        $faker = Factory::create();
127
128
        $title = implode(' ', $faker->words(3));
129
        $slug = Str::slug($title);
130
131
        $data = [
132
            'menu_id' => $menuId,
133
            'position' => $position,
134
            'parent_id' => $parentId,
135
            'target' => '_self',
136
            'module_name' => 'blog',
137
            'en' => [
138
                'status' => 1,
139
                'title' => $title,
140
                'uri' => $slug,
141
            ],
142
            'fr' => [
143
                'status' => 1,
144
                'title' => $title,
145
                'uri' => $slug,
146
            ],
147
        ];
148
149
        return $this->menuItem->create($data);
150
    }
151
}
152