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