22
33namespace Yajra \DataTables \Buttons \Tests ;
44
5+ use Illuminate \Database \Schema \Blueprint ;
6+ use Illuminate \Testing \TestResponse ;
57use Orchestra \Testbench \TestCase as BaseTestCase ;
8+ use Yajra \DataTables \Buttons \Tests \Models \Role ;
9+ use Yajra \DataTables \Buttons \Tests \Models \User ;
10+ use Yajra \DataTables \Buttons \Tests \Providers \TestServiceProvider ;
11+ use Yajra \DataTables \ButtonsServiceProvider ;
12+ use Yajra \DataTables \DataTablesServiceProvider ;
13+ use Yajra \DataTables \HtmlServiceProvider ;
614
715abstract class TestCase extends BaseTestCase
816{
17+ protected function setUp (): void
18+ {
19+ parent ::setUp ();
20+
21+ $ this ->migrateDatabase ();
22+ $ this ->seedDatabase ();
23+ }
24+
25+ protected function migrateDatabase ()
26+ {
27+ /** @var \Illuminate\Database\Schema\Builder $schemaBuilder */
28+ $ schemaBuilder = $ this ->app ['db ' ]->connection ()->getSchemaBuilder ();
29+ if (! $ schemaBuilder ->hasTable ('users ' )) {
30+ $ schemaBuilder ->create ('users ' , function (Blueprint $ table ) {
31+ $ table ->increments ('id ' );
32+ $ table ->string ('name ' );
33+ $ table ->string ('email ' );
34+ $ table ->string ('user_type ' )->nullable ();
35+ $ table ->unsignedInteger ('user_id ' )->nullable ();
36+ $ table ->timestamps ();
37+ });
38+ }
39+ if (! $ schemaBuilder ->hasTable ('posts ' )) {
40+ $ schemaBuilder ->create ('posts ' , function (Blueprint $ table ) {
41+ $ table ->increments ('id ' );
42+ $ table ->string ('title ' );
43+ $ table ->unsignedInteger ('user_id ' );
44+ $ table ->timestamps ();
45+ $ table ->softDeletes ();
46+ });
47+ }
48+ if (! $ schemaBuilder ->hasTable ('roles ' )) {
49+ $ schemaBuilder ->create ('roles ' , function (Blueprint $ table ) {
50+ $ table ->increments ('id ' );
51+ $ table ->string ('role ' );
52+ $ table ->timestamps ();
53+ });
54+ }
55+ if (! $ schemaBuilder ->hasTable ('role_user ' )) {
56+ $ schemaBuilder ->create ('role_user ' , function (Blueprint $ table ) {
57+ $ table ->unsignedInteger ('role_id ' );
58+ $ table ->unsignedInteger ('user_id ' );
59+ $ table ->timestamps ();
60+ });
61+ }
62+ }
63+
64+ protected function seedDatabase ()
65+ {
66+ $ adminRole = Role::create (['role ' => 'Administrator ' ]);
67+ $ userRole = Role::create (['role ' => 'User ' ]);
68+
69+ collect (range (1 , 20 ))->each (function ($ i ) use ($ userRole ) {
70+ /** @var User $user */
71+ $ user = User::query ()->create ([
72+ 'name ' => 'Record- ' .$ i ,
73+ 'email ' => 'Email- ' .$ i .'@example.com ' ,
74+ ]);
75+
76+ collect (range (1 , 3 ))->each (function ($ i ) use ($ user ) {
77+ $ user ->posts ()->create ([
78+ 'title ' => "User- {$ user ->id } Post- {$ i }" ,
79+ ]);
80+ });
81+
82+ if ($ i % 2 ) {
83+ $ user ->roles ()->attach (Role::all ());
84+ } else {
85+ $ user ->roles ()->attach ($ userRole );
86+ }
87+ });
88+ }
89+
990 /**
1091 * Set up the environment.
1192 *
@@ -25,9 +106,20 @@ protected function getEnvironmentSetUp($app)
25106 protected function getPackageProviders ($ app ): array
26107 {
27108 return [
28- \Yajra \DataTables \DataTablesServiceProvider::class,
29- \Yajra \DataTables \ButtonsServiceProvider::class,
30- \Yajra \DataTables \HtmlServiceProvider::class,
109+ TestServiceProvider::class,
110+ DataTablesServiceProvider::class,
111+ ButtonsServiceProvider::class,
112+ HtmlServiceProvider::class,
31113 ];
32114 }
115+
116+ public function getAjax ($ uri , array $ headers = []): TestResponse
117+ {
118+ return $ this ->getJson ($ uri , array_merge (['X-Requested-With ' => 'XMLHttpRequest ' ], $ headers ));
119+ }
120+
121+ public function postAjax ($ uri , array $ headers = []): TestResponse
122+ {
123+ return $ this ->postJson ($ uri , array_merge (['X-Requested-With ' => 'XMLHttpRequest ' ], $ headers ));
124+ }
33125}
0 commit comments