Skip to content

Commit 97cd280

Browse files
committed
tests: Add tests for edit menu and edit menu element
1 parent 318efe1 commit 97cd280

File tree

3 files changed

+405
-1
lines changed

3 files changed

+405
-1
lines changed

laravel/app/Http/Controllers/MenuEditController.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ public function store(Request $request){
8181
}
8282

8383
public function edit(Request $request){
84-
return response()->json( array('menulist' => Menulist::where('id', '=', $request->input('id'))->first() ) );
84+
return response()->json( array(
85+
'menulist' => Menulist::where('id', '=', $request->input('id'))->first()
86+
));
8587
}
8688

8789
public function update(Request $request){
Lines changed: 336 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,336 @@
1+
<?php
2+
3+
namespace Tests\Unit;
4+
5+
use Illuminate\Foundation\Testing\DatabaseMigrations;
6+
use Illuminate\Foundation\Testing\RefreshDatabase;
7+
use Illuminate\Foundation\Testing\WithFaker;
8+
use Spatie\Permission\Models\Role;
9+
use Tests\TestCase;
10+
use App\Models\Menulist;
11+
use App\Models\Menus;
12+
use App\Models\Menurole;
13+
14+
class MenuElementTest extends TestCase
15+
{
16+
use DatabaseMigrations;
17+
18+
public function testMenuElementsIndex(){
19+
$user = factory('App\User')->states('admin')->create();
20+
Role::create(['name' => 'admin']);
21+
$user->assignRole('admin');
22+
$menulist = new Menulist();
23+
$menulist->name = 'test2';
24+
$menulist->save();
25+
$menulist2 = new Menulist();
26+
$menulist2->name = 'test3';
27+
$menulist2->save();
28+
$menus = new Menus();
29+
$menus->slug = 'link';
30+
$menus->menu_id = $menulist2->id;
31+
$menus->name = 'test2';
32+
$menus->icon = 'test4';
33+
$menus->href = 'test3';
34+
$menus->parent_id = null;
35+
$menus->sequence = 1;
36+
$menus->save();
37+
$response = $this->actingAs($user)->get('/api/menu/element?menu=' . $menulist2->id);
38+
$response->assertStatus(200)->assertJson([
39+
'menuToEdit' => [
40+
[
41+
'name' => 'test2'
42+
]
43+
],
44+
'thisMenu' => '' . $menulist2->id,
45+
]);
46+
}
47+
48+
public function testMenuCreate(){
49+
$user = factory('App\User')->states('admin')->create();
50+
Role::create(['name' => 'admin']);
51+
Role::create(['name' => 'test']);
52+
$user->assignRole('admin');
53+
$menulist = new Menulist();
54+
$menulist->name = 'test2';
55+
$menulist->save();
56+
$response = $this->actingAs($user)->get('/api/menu/element/create');
57+
$response->assertStatus(200)->assertJson([
58+
'roles' => ['admin', 'test'],
59+
'menulist' => [
60+
['label' => 'test2']
61+
],
62+
]);
63+
}
64+
65+
public function testMenuStore(){
66+
$user = factory('App\User')->states('admin')->create();
67+
Role::create(['name' => 'admin']);
68+
$user->assignRole('admin');
69+
$menulist = new Menulist();
70+
$menulist->name = 'test2';
71+
$menulist->save();
72+
$postArray = [
73+
'menu' => '1',
74+
'role' => [
75+
'admin'
76+
],
77+
'name' => 'test2',
78+
'type' => 'link',
79+
'href' => 'test3',
80+
'parent' => '1',
81+
'icon' => 'test4',
82+
];
83+
$response = $this->actingAs($user)->post('/api/menu/element/store', $postArray);
84+
$this->assertDatabaseHas('menu_role',[
85+
'role_name' => 'admin',
86+
'menus_id' => 1,
87+
]);
88+
$this->assertDatabaseHas('menus',[
89+
'slug' => 'link',
90+
'menu_id' => 1,
91+
'name' => 'test2',
92+
'icon' => 'test4',
93+
'href' => 'test3',
94+
'parent_id' => 1,
95+
'sequence' => 1,
96+
]);
97+
}
98+
99+
public function testMenuEdit(){
100+
$user = factory('App\User')->states('admin')->create();
101+
Role::create(['name' => 'admin']);
102+
Role::create(['name' => 'test']);
103+
$user->assignRole('admin');
104+
$menulist = new Menulist();
105+
$menulist->name = 'test2';
106+
$menulist->save();
107+
$menus = new Menus();
108+
$menus->slug = 'link';
109+
$menus->menu_id = 1;
110+
$menus->name = 'test2menus';
111+
$menus->icon = 'test4';
112+
$menus->href = 'test3';
113+
$menus->parent_id = null;
114+
$menus->sequence = 1;
115+
$menus->save();
116+
$menuRole = new Menurole();
117+
$menuRole->role_name = 'admin';
118+
$menuRole->menus_id = $menus->id;
119+
$menuRole->save();
120+
$response = $this->actingAs($user)->get('/api/menu/element/edit?id=1' );
121+
$response->assertStatus(200)->assertJson([
122+
'roles' => ['admin', 'test'],
123+
'menulist' => [
124+
['label' => 'test2']
125+
],
126+
'menuElement' => ['name'=>'test2menus'],
127+
'menuroles' => [
128+
[
129+
'role_name' => 'admin',
130+
'menus_id' => '' . $menus->id,
131+
]
132+
],
133+
]);
134+
}
135+
136+
public function testMenuUpdate(){
137+
$user = factory('App\User')->states('admin')->create();
138+
Role::create(['name' => 'admin']);
139+
$user->assignRole('admin');
140+
$menulist = new Menulist();
141+
$menulist->name = 'test2';
142+
$menulist->save();
143+
$menus = new Menus();
144+
$menus->slug = 'link';
145+
$menus->menu_id = 1;
146+
$menus->name = 'test2';
147+
$menus->icon = 'test4';
148+
$menus->href = 'test3';
149+
$menus->parent_id = null;
150+
$menus->sequence = 1;
151+
$menus->save();
152+
$postArray = [
153+
'id' => '1',
154+
'menu' => '1',
155+
'role' => [
156+
'admin'
157+
],
158+
'name' => 'test22',
159+
'type' => 'link',
160+
'href' => 'test33',
161+
'parent' => '2',
162+
'icon' => 'test44',
163+
];
164+
$this->assertDatabaseHas('menus',[
165+
'slug' => 'link',
166+
'menu_id' => 1,
167+
'name' => 'test2',
168+
'icon' => 'test4',
169+
'href' => 'test3',
170+
'parent_id' => null,
171+
'sequence' => 1,
172+
]);
173+
$response = $this->actingAs($user)->post('/api/menu/element/update', $postArray);
174+
$this->assertDatabaseHas('menu_role',[
175+
'role_name' => 'admin',
176+
'menus_id' => 1,
177+
]);
178+
$this->assertDatabaseHas('menus',[
179+
'slug' => 'link',
180+
'menu_id' => 1,
181+
'name' => 'test22',
182+
'icon' => 'test44',
183+
'href' => 'test33',
184+
'parent_id' => 2,
185+
'sequence' => 1,
186+
]);
187+
}
188+
189+
public function testMenuDelete(){
190+
$user = factory('App\User')->states('admin')->create();
191+
Role::create(['name' => 'admin']);
192+
$user->assignRole('admin');
193+
$menus = new Menus();
194+
$menus->slug = 'link';
195+
$menus->menu_id = 1;
196+
$menus->name = 'test2';
197+
$menus->icon = 'test4';
198+
$menus->href = 'test3';
199+
$menus->parent_id = 1;
200+
$menus->sequence = 1;
201+
$menus->save();
202+
$menuRole = new Menurole();
203+
$menuRole->role_name = 'admin';
204+
$menuRole->menus_id = $menus->id;
205+
$menuRole->save();
206+
$this->assertDatabaseHas('menus',['id' => $menus->id]);
207+
$response = $this->actingAs($user)->get('/api/menu/element/delete?id=' . $menus->id);
208+
$this->assertDatabaseMissing('menus',['id' => $menus->id]);
209+
$this->assertDatabaseMissing('menu_role',['menus_id' => $menus->id]);
210+
}
211+
212+
public function testMoveUp(){
213+
$user = factory('App\User')->states('admin')->create();
214+
Role::create(['name' => 'admin']);
215+
$user->assignRole('admin');
216+
$menulist = new Menulist();
217+
$menulist->name = 'test2';
218+
$menulist->save();
219+
$menus1 = new Menus();
220+
$menus1->slug = 'link';
221+
$menus1->menu_id = 1;
222+
$menus1->name = 'test2';
223+
$menus1->icon = 'test4';
224+
$menus1->href = 'test3';
225+
$menus1->parent_id = null;
226+
$menus1->sequence = 10;
227+
$menus1->save();
228+
$menus2 = new Menus();
229+
$menus2->slug = 'link';
230+
$menus2->menu_id = 1;
231+
$menus2->name = 'test2';
232+
$menus2->icon = 'test4';
233+
$menus2->href = 'test3';
234+
$menus2->parent_id = null;
235+
$menus2->sequence = 11;
236+
$menus2->save();
237+
$menus3 = new Menus();
238+
$menus3->slug = 'link';
239+
$menus3->menu_id = 1;
240+
$menus3->name = 'test2';
241+
$menus3->icon = 'test4';
242+
$menus3->href = 'test3';
243+
$menus3->parent_id = null;
244+
$menus3->sequence = 12;
245+
$menus3->save();
246+
$this->assertDatabaseHas('menus',[
247+
'id' => $menus1->id,
248+
'sequence' => 10,
249+
]);
250+
$this->assertDatabaseHas('menus',[
251+
'id' => $menus2->id,
252+
'sequence' => 11,
253+
]);
254+
$this->assertDatabaseHas('menus',[
255+
'id' => $menus3->id,
256+
'sequence' => 12,
257+
]);
258+
$response = $this->actingAs($user)->get('/api/menu/element/move-up?id=' . $menus2->id);
259+
$response->assertStatus(200);
260+
$this->assertDatabaseHas('menus',[
261+
'id' => $menus1->id,
262+
'sequence' => 11,
263+
]);
264+
$this->assertDatabaseHas('menus',[
265+
'id' => $menus2->id,
266+
'sequence' => 10,
267+
]);
268+
$this->assertDatabaseHas('menus',[
269+
'id' => $menus3->id,
270+
'sequence' => 12,
271+
]);
272+
}
273+
274+
public function testMoveDown(){
275+
$user = factory('App\User')->states('admin')->create();
276+
Role::create(['name' => 'admin']);
277+
$user->assignRole('admin');
278+
$menulist = new Menulist();
279+
$menulist->name = 'test2';
280+
$menulist->save();
281+
$menus1 = new Menus();
282+
$menus1->slug = 'link';
283+
$menus1->menu_id = 1;
284+
$menus1->name = 'test2';
285+
$menus1->icon = 'test4';
286+
$menus1->href = 'test3';
287+
$menus1->parent_id = null;
288+
$menus1->sequence = 10;
289+
$menus1->save();
290+
$menus2 = new Menus();
291+
$menus2->slug = 'link';
292+
$menus2->menu_id = 1;
293+
$menus2->name = 'test2';
294+
$menus2->icon = 'test4';
295+
$menus2->href = 'test3';
296+
$menus2->parent_id = null;
297+
$menus2->sequence = 11;
298+
$menus2->save();
299+
$menus3 = new Menus();
300+
$menus3->slug = 'link';
301+
$menus3->menu_id = 1;
302+
$menus3->name = 'test2';
303+
$menus3->icon = 'test4';
304+
$menus3->href = 'test3';
305+
$menus3->parent_id = null;
306+
$menus3->sequence = 12;
307+
$menus3->save();
308+
$this->assertDatabaseHas('menus',[
309+
'id' => $menus1->id,
310+
'sequence' => 10,
311+
]);
312+
$this->assertDatabaseHas('menus',[
313+
'id' => $menus2->id,
314+
'sequence' => 11,
315+
]);
316+
$this->assertDatabaseHas('menus',[
317+
'id' => $menus3->id,
318+
'sequence' => 12,
319+
]);
320+
$response = $this->actingAs($user)->get('/api/menu/element/move-down?id=' . $menus2->id);
321+
$response->assertStatus(200);
322+
$this->assertDatabaseHas('menus',[
323+
'id' => $menus1->id,
324+
'sequence' => 10,
325+
]);
326+
$this->assertDatabaseHas('menus',[
327+
'id' => $menus2->id,
328+
'sequence' => 12,
329+
]);
330+
$this->assertDatabaseHas('menus',[
331+
'id' => $menus3->id,
332+
'sequence' => 11,
333+
]);
334+
}
335+
336+
}

0 commit comments

Comments
 (0)