Browse Source

Passed ManageProjectTest suite with database migration and sqlite in memory test

pull/1/head
Nafies Luthfi 9 years ago
parent
commit
c4f2241647
  1. 15
      app/Providers/AuthServiceProvider.php
  2. 2
      config/database.php
  3. 11
      database/factories/ModelFactory.php
  4. 3
      phpunit.xml
  5. 2
      tests/TestCase.php
  6. 13
      tests/functional/ManageProjectsTest.php

15
app/Providers/AuthServiceProvider.php

@ -28,8 +28,8 @@ class AuthServiceProvider extends ServiceProvider
// Dynamically register permissions with Laravel's Gate.
foreach ($this->getPermissions() as $permission) {
Gate::define($permission->name, function ($user) use ($permission) {
return $user->hasPermission($permission);
Gate::define($permission, function ($user) {
return $user->hasRole('admin');
});
}
@ -57,6 +57,15 @@ class AuthServiceProvider extends ServiceProvider
*/
protected function getPermissions()
{
return Permission::with('roles')->get();
return [
'manage_users',
'manage_role_permissions',
'manage_backups',
'manage_options',
'manage_projects',
'manage_payments',
'manage_subscriptions',
'see_reports',
];
}
}

2
config/database.php

@ -48,7 +48,7 @@ return [
'sqlite' => [
'driver' => 'sqlite',
'database' => database_path('database.sqlite'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],

11
database/factories/ModelFactory.php

@ -6,6 +6,7 @@ use App\Entities\Projects\Project;
use App\Entities\Projects\Task;
use App\Entities\Subscriptions\Subscription;
use App\Entities\Users\Event;
use App\Entities\Users\Role;
use App\Entities\Users\User;
$factory->define(User::class, function (Faker\Generator $faker) {
@ -15,7 +16,15 @@ $factory->define(User::class, function (Faker\Generator $faker) {
'email' => $email = $faker->unique()->email,
'password' => 'member',
'remember_token' => str_random(10),
'api_token' => bcrypt($email),
'api_token' => str_random(40),
];
});
$factory->define(Role::class, function (Faker\Generator $faker) {
return [
'type' => 0,
'name' => $faker->word,
'label' => $faker->sentence,
];
});

3
phpunit.xml

@ -23,7 +23,8 @@
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_DATABASE" value="test_lv_myproject"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
</php>
<listeners>
<listener class="JohnKary\PHPUnit\Listener\SpeedTrapListener">

2
tests/TestCase.php

@ -1,5 +1,6 @@
<?php
use App\Entities\Users\Role;
use App\Entities\Users\User;
class TestCase extends Illuminate\Foundation\Testing\TestCase
@ -28,6 +29,7 @@ class TestCase extends Illuminate\Foundation\Testing\TestCase
protected function adminUserSigningIn()
{
factory(Role::class)->create(['name' => 'admin']);
$user = factory(User::class)->create();
$user->assignRole('admin');
$this->actingAs($user);

13
tests/functional/ManageProjectsTest.php

@ -4,6 +4,7 @@ use App\Entities\Payments\Payment;
use App\Entities\Projects\Feature;
use App\Entities\Projects\Project;
use App\Entities\Projects\Task;
use App\Entities\Users\Role;
use App\Entities\Users\User;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
@ -11,11 +12,14 @@ use Illuminate\Foundation\Testing\WithoutMiddleware;
class ManageProjectsTest extends TestCase
{
use DatabaseTransactions;
use DatabaseMigrations;
/** @test */
public function admin_can_input_new_project_with_existing_customer()
{
$adminRole = factory(Role::class)->create(['name' => 'admin']);
$customerRole = factory(Role::class)->create(['name' => 'customer']);
$users = factory(User::class, 2)->create();
$users[0]->assignRole('admin');
$this->actingAs($users[0]);
@ -42,6 +46,7 @@ class ManageProjectsTest extends TestCase
public function admin_can_input_new_project_with_new_customer()
{
$this->adminUserSigningIn();
$customerRole = factory(Role::class)->create(['name' => 'customer']);
$this->visit(route('projects.index'));
$this->seePageIs(route('projects.index'));
@ -107,6 +112,9 @@ class ManageProjectsTest extends TestCase
/** @test */
public function admin_can_edit_a_project()
{
$adminRole = factory(Role::class)->create(['name' => 'admin']);
$customerRole = factory(Role::class)->create(['name' => 'customer']);
$users = factory(User::class, 2)->create();
$users[0]->assignRole('admin');
$this->actingAs($users[0]);
@ -142,6 +150,9 @@ class ManageProjectsTest extends TestCase
/** @test */
public function form_is_validated_on_invalid_project_entry()
{
$adminRole = factory(Role::class)->create(['name' => 'admin']);
$customerRole = factory(Role::class)->create(['name' => 'customer']);
$users = factory(User::class, 2)->create();
$users[0]->assignRole('admin');
$this->actingAs($users[0]);

Loading…
Cancel
Save