1 | <?php |
||
19 | abstract class BaseBlogTestCase extends TestCase |
||
20 | { |
||
21 | /** |
||
22 | * @var \Modules\Blog\Repositories\PostRepository |
||
23 | */ |
||
24 | protected $post; |
||
25 | |||
26 | /** |
||
27 | * @var \Modules\Blog\Repositories\TagRepository |
||
28 | */ |
||
29 | protected $tag; |
||
30 | |||
31 | public function setUp() |
||
32 | { |
||
33 | parent::setUp(); |
||
34 | |||
35 | $this->resetDatabase(); |
||
36 | |||
37 | $this->post = app('Modules\Blog\Repositories\PostRepository'); |
||
38 | $this->tag = app('Modules\Blog\Repositories\TagRepository'); |
||
39 | } |
||
40 | |||
41 | protected function getPackageProviders($app) |
||
42 | { |
||
43 | return [ |
||
44 | LaravelModulesServiceProvider::class, |
||
45 | LaravelLocalizationServiceProvider::class, |
||
46 | CoreServiceProvider::class, |
||
47 | ImageServiceProvider::class, |
||
48 | TagServiceProvider::class, |
||
49 | MediaServiceProvider::class, |
||
50 | BlogServiceProvider::class, |
||
51 | SidebarServiceProvider::class, |
||
52 | ]; |
||
53 | } |
||
54 | |||
55 | protected function getPackageAliases($app) |
||
56 | { |
||
57 | return [ |
||
58 | 'LaravelLocalization' => LaravelLocalization::class, |
||
59 | ]; |
||
60 | } |
||
61 | |||
62 | protected function getEnvironmentSetUp($app) |
||
63 | { |
||
64 | $app['path.base'] = __DIR__ . '/..'; |
||
65 | $app['config']->set('database.default', 'sqlite'); |
||
66 | $app['config']->set('database.connections.sqlite', array( |
||
67 | 'driver' => 'sqlite', |
||
68 | 'database' => ':memory:', |
||
69 | 'prefix' => '', |
||
70 | )); |
||
71 | $app['config']->set('translatable.locales', ['en', 'fr']); |
||
72 | } |
||
73 | |||
74 | /** |
||
75 | * Helper method to create a blog post |
||
76 | * @return object |
||
77 | */ |
||
78 | public function createBlogPost() |
||
79 | { |
||
80 | $faker = Factory::create(); |
||
81 | |||
82 | $title = implode(' ', $faker->words(3)); |
||
83 | $slug = Str::slug($title); |
||
84 | |||
85 | $data = [ |
||
86 | 'en' => [ |
||
87 | 'title' => $title, |
||
88 | 'slug' => $slug, |
||
89 | 'content' => $faker->paragraph(), |
||
90 | ], |
||
91 | 'fr' => [ |
||
92 | 'title' => $title, |
||
93 | 'slug' => $slug, |
||
94 | 'content' => $faker->paragraph(), |
||
95 | ], |
||
96 | 'category_id' => 1, |
||
97 | 'status' => Status::PUBLISHED, |
||
98 | ]; |
||
99 | |||
100 | return $this->post->create($data); |
||
101 | } |
||
102 | |||
103 | public function createTag() |
||
104 | { |
||
105 | $faker = Factory::create(); |
||
106 | |||
107 | $enName = $faker->word; |
||
108 | $enSlug = Str::slug($enName); |
||
109 | |||
110 | $frName = $faker->word; |
||
111 | $frSlug = Str::slug($enName); |
||
112 | |||
113 | $data = [ |
||
114 | 'en' => [ |
||
115 | 'name' => $enName, |
||
116 | 'slug' => $enSlug, |
||
117 | ], |
||
118 | 'fr' => [ |
||
119 | 'name' => $frName, |
||
120 | 'slug' => $frSlug, |
||
121 | ], |
||
122 | ]; |
||
123 | |||
124 | return $this->tag->create($data); |
||
125 | } |
||
126 | |||
127 | private function resetDatabase() |
||
128 | { |
||
129 | // Makes sure the migrations table is created |
||
130 | $this->artisan('migrate', [ |
||
131 | '--database' => 'sqlite', |
||
132 | ]); |
||
133 | // We empty all tables |
||
134 | $this->artisan('migrate:reset', [ |
||
135 | '--database' => 'sqlite', |
||
136 | ]); |
||
137 | // Migrate |
||
138 | $this->artisan('migrate', [ |
||
139 | '--database' => 'sqlite', |
||
140 | ]); |
||
141 | $this->artisan('migrate', [ |
||
142 | '--database' => 'sqlite', |
||
143 | '--path' => 'Modules/Media/Database/Migrations', |
||
144 | ]); |
||
145 | } |
||
146 | } |
||
147 |