Commit 344655cd authored by Viral Solani's avatar Viral Solani

More Test Cases For User Module

parent 18250270
...@@ -97,8 +97,6 @@ class UserRepository extends BaseRepository ...@@ -97,8 +97,6 @@ class UserRepository extends BaseRepository
$user = $this->createUserStub($data); $user = $this->createUserStub($data);
DB::transaction(function () use ($user, $data, $roles, $permissions) { DB::transaction(function () use ($user, $data, $roles, $permissions) {
// Set email type 2
$email_type = 2;
if ($user->save()) { if ($user->save()) {
...@@ -120,18 +118,6 @@ class UserRepository extends BaseRepository ...@@ -120,18 +118,6 @@ class UserRepository extends BaseRepository
event(new UserCreated($user)); event(new UserCreated($user));
/*if (isset($data['confirmation_email']) && $user->confirmed == 0) {
$email_type = 1;
}*/
// Send email to the user
/* $options = [
'data' => $user->toArray(),
'email_template_type' => $email_type,
];*/
//createNotification('', 1, 2, $options);
return true; return true;
} }
......
...@@ -2,10 +2,14 @@ ...@@ -2,10 +2,14 @@
namespace Tests\Feature\Backend; namespace Tests\Feature\Backend;
use App\Models\Access\Permission\Permission; use Tests\TestCase;
use App\Models\Access\Role\Role; use App\Models\Access\Role\Role;
use App\Models\Access\User\User; use App\Models\Access\User\User;
use Tests\TestCase; use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Notification;
use App\Models\Access\Permission\Permission;
use App\Events\Backend\Access\User\UserCreated;
use App\Notifications\Frontend\Auth\UserNeedsConfirmation;
class ManageUsersTest extends TestCase class ManageUsersTest extends TestCase
{ {
...@@ -87,6 +91,21 @@ class ManageUsersTest extends TestCase ...@@ -87,6 +91,21 @@ class ManageUsersTest extends TestCase
->assertSessionHasErrors('password'); ->assertSessionHasErrors('password');
} }
/** @test */
function a_user_requires_a_confirm_password()
{
$user = factory(User::class)->states('active', 'confirmed')->make()->toArray();
$user['password'] = 'Viral@1234';
$user['password_confirmation'] = 'Viral@1235';
$this->withExceptionHandling()
->actingAs($this->admin)
->post(route('admin.access.user.store'), $user)
->assertSessionHasErrors('password');
}
/** @test */ /** @test */
function a_user_requires_a_role() function a_user_requires_a_role()
{ {
...@@ -104,12 +123,54 @@ class ManageUsersTest extends TestCase ...@@ -104,12 +123,54 @@ class ManageUsersTest extends TestCase
/** @test */ /** @test */
public function a_user_can_create_new_user() public function a_user_can_create_new_user()
{ {
// Make sure our events are fired
Event::fake();
$user = factory(User::class)->states('active', 'confirmed')->make()->toArray(); $user = factory(User::class)->states('active', 'confirmed')->make()->toArray();
$role = create(Role::class); $role = create(Role::class);
$permission = create(Permission::class);
$user['password'] = 'Viral@1234';
$user['password_confirmation'] = 'Viral@1234';
$user['assignees_roles'] = [$role->id];
$user['permissions'] = [$permission->id];
$this->actingAs($this->admin)
->post(route('admin.access.user.store'), $user)
->assertRedirect(route('admin.access.user.index'));
$this->assertDatabaseHas(config('access.users_table'), [
'first_name' => $user['first_name'],
'last_name' => $user['last_name'],
'email' => $user['email'],
'status' => 1,
'confirmed' => 1,
]);
$this->assertDatabaseHas(config('access.roles_table'), ['name' => $role->name]);
$this->assertDatabaseHas(config('access.permissions_table'), ['name' => $permission->name]);
$this->assertDatabaseHas(config('access.role_user_table'), ['role_id' => $role->id]);
Event::assertDispatched(UserCreated::class);
}
/** @test */
public function an_email_will_be_sent_to_uncomfirmed_user()
{
// Make sure our events are fired
Event::fake();
// Make sure our notifications are sent
Notification::fake();
$user = factory(User::class)->states('active')->make()->toArray();
$role = create(Role::class);
$permission = create(Permission::class); $permission = create(Permission::class);
$user['password'] = 'Viral@1234'; $user['password'] = 'Viral@1234';
$user['password_confirmation'] = 'Viral@1234'; $user['password_confirmation'] = 'Viral@1234';
$user['confirmation_email'] = 1;
$user['assignees_roles'] = [$role->id]; $user['assignees_roles'] = [$role->id];
$user['permissions'] = [$permission->id]; $user['permissions'] = [$permission->id];
...@@ -117,9 +178,24 @@ class ManageUsersTest extends TestCase ...@@ -117,9 +178,24 @@ class ManageUsersTest extends TestCase
->post(route('admin.access.user.store'), $user) ->post(route('admin.access.user.store'), $user)
->assertRedirect(route('admin.access.user.index')); ->assertRedirect(route('admin.access.user.index'));
$this->assertDatabaseHas('users', ['first_name' => $user['first_name'], 'last_name' => $user['last_name']]); $this->assertDatabaseHas(config('access.users_table'), [
$this->assertDatabaseHas('roles', ['name' => $role->name]); 'first_name' => $user['first_name'],
$this->assertDatabaseHas('permissions', ['name' => $permission->name]); 'last_name' => $user['last_name'],
'email' => $user['email'],
'status' => 1,
'confirmed' => 0,
]);
$this->assertDatabaseHas(config('access.roles_table'), ['name' => $role->name]);
$this->assertDatabaseHas(config('access.permissions_table'), ['name' => $permission->name]);
$this->assertDatabaseHas(config('access.role_user_table'), ['role_id' => $role->id]);
// Get the user that was inserted into the database
$insertedUser = User::where('email', $user['email'])->first();
// Check that the user was sent the confirmation email
Notification::assertSentTo([$insertedUser], UserNeedsConfirmation::class);
Event::assertDispatched(UserCreated::class);
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment