<?php
use App\GroupMaster;
class RoleTest extends TestCase
{
    /**
     * Test to check get managers
     *
     * @return void
     */
    public function testRole()
    {
        $response = $this->call('GET', 'api/v1/role/');
        $this->assertEquals(200, $response->status());
    }
    
    
    /**
     * Test to check get manager
     *
     * @return void
     */
    public function testGetRole()
    {

        $group = new GroupMaster();
        $group->name = 'admin';
        $group->roles = 'ROLE_ADMIN';
        $date = new \DateTime();
        $ddf = $date->format('Y-m-d');
        $group->created_at = $ddf;
        $group->save();

        $lastId = $group->id;



        $response = $this->call('GET', "api/v1/role/$lastId");
        $this->assertEquals(200, $response->status());
        
        $this->json('GET', "api/v1/role/000")
            ->seeJson([
               'status' => 'fail',
            ]);

       


    }
    
    /**
     * Test to check get manager
     *
     * @return void
     */
    public function testGetNotAdminRole()
    {
        $response = $this->call('GET', 'api/v1/role/get');
        $this->assertEquals(200, $response->status());
    }
    
    
     /**
     * Test to check update manager
     *
     * @return void
     */
    public function testUpdateManager()
    {

        $group = new GroupMaster();
        $group->name = 'admin';
        $group->roles = 'ROLE_ADMIN';
        $date = new \DateTime();
        $ddf = $date->format('Y-m-d');
        $group->created_at = $ddf;
        $group->save();

        $name = str_random(5);
        $role = GroupMaster::where('id', '>', '0')
                ->orderBy('id', 'desc')->first();
        $roleId = $role->id;
        
        $this->put("api/v1/role/$roleId", [
                'name'        => $name
               ])
             ->seeJson([
                'status' => 'success',
             ]);

        $this->put('api/v1/role/111111', [
            'name'         => 'sample',
               ])
             ->seeJson([
                'status' => 'fail',
             ]);

        GroupMaster::destroy($roleId);

    }
    
    
    /**
     * Test to check save manager
     *
     * @return void
     */
    public function testAddRole()
    {
       $name = str_random(5);
       $this->post('api/v1/role/addRole', [
              'name'         => $name,
              'roles'        => 'ROLE_ADMIN'
            ])
             ->seeJson([
                'status' => 'success',
             ]);
       
       $response = $this->call('POST', 'api/v1/role/addRole', ['name' => $name, 'roles' => 'ROLE_ADMIN']); 
       $this->assertNotEquals(200, $response->status());


       $last = GroupMaster::max('id');
       GroupMaster::destroy($last);
       
    }
    
    
    /**
     * Test to check save manager
     *
     * @return void
     */
    public function testGetPermissionsList()
    {
        
        $last = GroupMaster::max('id');

       $response = $this->call('POST', 'api/v1/role/permissions', ['roleId' =>  $last]); 
       $this->assertEquals(200, $response->status());

       

    }
    
    
    /**
     * Test to check save manager
     *
     * @return void
     */
    public function testUpdatePermissionsList()
    {

       $last = GroupMaster::max('id');

       $permissions =  json_encode(array('1','2'));
       $response = $this->call('POST', 'api/v1/role/update', ['group_id' => $last, 'permission' => $permissions]); 
       $this->assertEquals(200, $response->status());

       
       

    }
    
}
