Skip to content

Commit e9f41c1

Browse files
committed
Add MenuElementTest.php
1 parent 101c584 commit e9f41c1

File tree

4 files changed

+260
-4
lines changed

4 files changed

+260
-4
lines changed

app/Http/Controllers/MenuElementController.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,16 @@ public function getValidateArray(){
105105
return $result;
106106
}
107107

108-
public function getLastSequence( $menuId ){
108+
public function getNextSequence( $menuId ){
109109
$result = Menus::select('menus.sequence')
110110
->where('menus.menu_id', '=', $menuId)
111111
->orderBy('menus.sequence', 'desc')->first();
112-
return (integer)$result['sequence'];
112+
if(empty($result)){
113+
$result = 1;
114+
}else{
115+
$result = (integer)$result['sequence'] + 1;
116+
}
117+
return $result;
113118
}
114119

115120
public function store(Request $request){
@@ -127,7 +132,7 @@ public function store(Request $request){
127132
if($request->input('type') !== 'title' && $request->input('parent') !== 'none'){
128133
$menus->parent_id = $request->input('parent');
129134
}
130-
$menus->sequence = $this->getLastSequence( $request->input('menu') ) + 1;
135+
$menus->sequence = $this->getNextSequence( $request->input('menu') );
131136
$menus->save();
132137
foreach($request->input('role') as $role){
133138
$menuRole = new Menurole();
@@ -140,6 +145,8 @@ public function store(Request $request){
140145
}
141146

142147
public function edit(Request $request){
148+
149+
143150
return view('dashboard.editmenu.edit',[
144151
'roles' => RolesService::get(),
145152
'menulist' => Menulist::all(),

resources/views/dashboard/editmenu/edit.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<div class="row">
99
<div class="col-sm-12">
1010
<div class="card">
11-
<div class="card-header"><h4>Create menu element</h4></div>
11+
<div class="card-header"><h4>Edit menu element</h4></div>
1212
<div class="card-body">
1313
@if(Session::has('message'))
1414
<div class="alert alert-success" role="alert">{{ Session::get('message') }}</div>

tests/Unit/MenuElementTest.php

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
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+
$menulist = new Menulist();
26+
$menulist->name = 'test3';
27+
$menulist->save();
28+
$response = $this->actingAs($user)->get('/menu/element?menu=2');
29+
$response->assertSee('<option value="1">test2</option>');
30+
$response->assertSee('<option value="2" selected>test3</option>');
31+
$response->assertSee('Menu Elements');
32+
}
33+
34+
public function testMenuCreate(){
35+
$user = factory('App\User')->states('admin')->create();
36+
Role::create(['name' => 'admin']);
37+
$user->assignRole('admin');
38+
$menulist = new Menulist();
39+
$menulist->name = 'test2';
40+
$menulist->save();
41+
$response = $this->actingAs($user)->get('/menu/element/create');
42+
$response->assertSee('<option value="1">test2</option>');
43+
$response->assertSee('<input type="checkbox" name="role[]" value="admin" class="form-control"/>');
44+
$response->assertSee('Create menu element');
45+
}
46+
47+
public function testMenuStore(){
48+
$user = factory('App\User')->states('admin')->create();
49+
Role::create(['name' => 'admin']);
50+
$user->assignRole('admin');
51+
$menulist = new Menulist();
52+
$menulist->name = 'test2';
53+
$menulist->save();
54+
$postArray = [
55+
'menu' => '1',
56+
'role' => [
57+
'admin'
58+
],
59+
'name' => 'test2',
60+
'type' => 'link',
61+
'href' => 'test3',
62+
'parent' => '1',
63+
'icon' => 'test4',
64+
];
65+
$response = $this->actingAs($user)->post('/menu/element/store', $postArray);
66+
$this->assertDatabaseHas('menu_role',[
67+
'role_name' => 'admin',
68+
'menus_id' => 1,
69+
]);
70+
$this->assertDatabaseHas('menus',[
71+
'slug' => 'link',
72+
'menu_id' => 1,
73+
'name' => 'test2',
74+
'icon' => 'test4',
75+
'href' => 'test3',
76+
'parent_id' => 1,
77+
'sequence' => 1,
78+
]);
79+
}
80+
81+
public function testMenuEdit(){
82+
$user = factory('App\User')->states('admin')->create();
83+
Role::create(['name' => 'admin']);
84+
$user->assignRole('admin');
85+
$menulist = new Menulist();
86+
$menulist->name = 'test2';
87+
$menulist->save();
88+
$menus = new Menus();
89+
$menus->slug = 'link';
90+
$menus->menu_id = 1;
91+
$menus->name = 'test2';
92+
$menus->icon = 'test4';
93+
$menus->href = 'test3';
94+
$menus->parent_id = 1;
95+
$menus->sequence = 1;
96+
$menus->save();
97+
$response = $this->actingAs($user)->get('/menu/element/edit?id=1' );
98+
$response->assertSee('<option value="1" selected>test2</option>');
99+
$response->assertSee('<input type="checkbox" name="role[]" value="admin" class="form-control"/>');
100+
$response->assertSee('test2');
101+
$response->assertSee('test4');
102+
$response->assertSee('test3');
103+
$response->assertSee('Edit menu element');
104+
}
105+
106+
public function testMenuUpdate(){
107+
$user = factory('App\User')->states('admin')->create();
108+
Role::create(['name' => 'admin']);
109+
$user->assignRole('admin');
110+
$menulist = new Menulist();
111+
$menulist->name = 'test2';
112+
$menulist->save();
113+
$menus = new Menus();
114+
$menus->slug = 'link';
115+
$menus->menu_id = 1;
116+
$menus->name = 'test2';
117+
$menus->icon = 'test4';
118+
$menus->href = 'test3';
119+
$menus->parent_id = 1;
120+
$menus->sequence = 1;
121+
$menus->save();
122+
$postArray = [
123+
'id' => '1',
124+
'menu' => '1',
125+
'role' => [
126+
'admin'
127+
],
128+
'name' => 'test22',
129+
'type' => 'link',
130+
'href' => 'test33',
131+
'parent' => '2',
132+
'icon' => 'test44',
133+
];
134+
$this->assertDatabaseHas('menus',[
135+
'slug' => 'link',
136+
'menu_id' => 1,
137+
'name' => 'test2',
138+
'icon' => 'test4',
139+
'href' => 'test3',
140+
'parent_id' => 1,
141+
'sequence' => 1,
142+
]);
143+
$response = $this->actingAs($user)->post('/menu/element/update', $postArray);
144+
$this->assertDatabaseHas('menu_role',[
145+
'role_name' => 'admin',
146+
'menus_id' => 1,
147+
]);
148+
$this->assertDatabaseHas('menus',[
149+
'slug' => 'link',
150+
'menu_id' => 1,
151+
'name' => 'test22',
152+
'icon' => 'test44',
153+
'href' => 'test33',
154+
'parent_id' => 2,
155+
'sequence' => 1,
156+
]);
157+
}
158+
159+
public function testMenuDelete(){
160+
$user = factory('App\User')->states('admin')->create();
161+
Role::create(['name' => 'admin']);
162+
$user->assignRole('admin');
163+
$menus = new Menus();
164+
$menus->slug = 'link';
165+
$menus->menu_id = 1;
166+
$menus->name = 'test2';
167+
$menus->icon = 'test4';
168+
$menus->href = 'test3';
169+
$menus->parent_id = 1;
170+
$menus->sequence = 1;
171+
$menus->save();
172+
$menuRole = new Menurole();
173+
$menuRole->role_name = 'admin';
174+
$menuRole->menus_id = $menus->id;
175+
$menuRole->save();
176+
$this->assertDatabaseHas('menus',['id' => $menus->id]);
177+
$response = $this->actingAs($user)->get('/menu/element/delete?id=' . $menus->id);
178+
$this->assertDatabaseMissing('menus',['id' => $menus->id]);
179+
$this->assertDatabaseMissing('menu_role',['menus_id' => $menus->id]);
180+
}
181+
}

tests/Unit/MenuTest.php

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,79 @@
77
use Illuminate\Foundation\Testing\WithFaker;
88
use Spatie\Permission\Models\Role;
99
use Tests\TestCase;
10+
use App\Models\Menulist;
1011

1112
class MenuTest extends TestCase
1213
{
1314
use DatabaseMigrations;
1415

16+
17+
public function testMenuIndex(){
18+
$user = factory('App\User')->states('admin')->create();
19+
Role::create(['name' => 'admin']);
20+
$user->assignRole('admin');
21+
$menulist = new Menulist();
22+
$menulist->name = 'test2';
23+
$menulist->save();
24+
$response = $this->actingAs($user)->get('/menu/menu');
25+
$response->assertSee('test2');
26+
$response->assertSee('<a class="btn btn-primary" href="http://localhost/menu/element?menu=1">Show</a>');
27+
$response->assertSee('Add new menu');
28+
$response->assertSee('Menus list');
29+
}
30+
31+
public function testMenuCreate(){
32+
$user = factory('App\User')->states('admin')->create();
33+
Role::create(['name' => 'admin']);
34+
$user->assignRole('admin');
35+
$response = $this->actingAs($user)->get('/menu/menu/create');
36+
$response->assertSee('Create menu');
37+
}
38+
39+
public function testMenuStore(){
40+
$user = factory('App\User')->states('admin')->create();
41+
Role::create(['name' => 'admin']);
42+
$user->assignRole('admin');
43+
$response = $this->actingAs($user)->post('/menu/menu/store', ['name' => 'test3']);
44+
$this->assertDatabaseHas('menulist',['name' => 'test3']);
45+
}
46+
47+
public function testMenuEdit(){
48+
$user = factory('App\User')->states('admin')->create();
49+
Role::create(['name' => 'admin']);
50+
$user->assignRole('admin');
51+
$menulist = new Menulist();
52+
$menulist->name = 'test2';
53+
$menulist->save();
54+
$response = $this->actingAs($user)->get('/menu/menu/edit', ['id' => $menulist->id]);
55+
$response->assertSee('test2');
56+
}
57+
58+
public function testMenuUpdate(){
59+
$user = factory('App\User')->states('admin')->create();
60+
Role::create(['name' => 'admin']);
61+
$user->assignRole('admin');
62+
$menulist = new Menulist();
63+
$menulist->name = 'test2';
64+
$menulist->save();
65+
$this->assertDatabaseHas('menulist',['name' => 'test2']);
66+
$response = $this->actingAs($user)->post('/menu/menu/update', ['id' => $menulist->id, 'name' => 'test3']);
67+
$this->assertDatabaseHas('menulist',['name' => 'test3']);
68+
}
69+
70+
public function testMenuDelete(){
71+
$user = factory('App\User')->states('admin')->create();
72+
Role::create(['name' => 'admin']);
73+
$user->assignRole('admin');
74+
$menulist = new Menulist();
75+
$menulist->name = 'test2';
76+
$menulist->save();
77+
$this->assertDatabaseHas('menulist',['name' => 'test2']);
78+
$response = $this->actingAs($user)->get('/menu/menu/delete?id=' . $menulist->id);
79+
$response->assertStatus(200);
80+
$this->assertDatabaseMissing('menulist',['name' => 'test2']);
81+
}
82+
1583
/*
1684
Testing: Route::get('menu', 'MenuController@index');
1785
*/

0 commit comments

Comments
 (0)