<?php
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\DB;
use App\User;
use App\GroupMaster;
use App\UserGroup;
class SubAdminTest extends TestCase
{
    /**
     * Test to check get subadmins
     *
     * @return void
     */
    public function testSubAdmin()
    {
        $response = $this->call('GET', 'api/v1/sub-admin');
        $this->assertEquals(200, $response->status());
    }
    
    /**
     * Test to check get sub admin
     *
     * @return void
     */
    public function testGetSubAdmin()
    {
        $email = str_random(5).'@admin.com';
        $subadmin = new User();
        $subadmin->name = 'sample admin';
        $subadmin->email = $email;
        $subadmin->role = 'ROLE_ADMIN';
        $subadmin->password = Hash::make('123456');

        $subadmin->status = 1;
        $date = new \DateTime();
        $ddf = $date->format('Y-m-d H:i:s');
        $subadmin->created_at = $ddf;
        $subadmin->save();
        $Id = $subadmin->id;

        $response = $this->call('GET', "api/v1/sub-admin/$Id");
        $this->assertEquals(200, $response->status());
       
        $this->get('api/v1/sub-admin/0000')
             ->seeJson([
                'status' => 'fail',
             ]);

    }
    
    
    /**
     * Test to check save template
     *
     * @return void
     */
    public function testSaveSubAdmin()
    {

        $email = str_random(5).'@admin123.com';
        $this->post('api/v1/sub-admin', [
             'name'     => 'qwqw',
             'email'    => $email,
             'status'   => '1',
             'role'     => '2',
             'password' => '123456'
           ])->seeJson([
                'status' => 'success',
             ]);

    }
    
    
    /**
     * Test to check update template
     *
     * @return void
     */
    public function testUpdateSubAdmin()
    {

       $last = User::where('role', 'ROLE_ADMIN')->first();
       $email = str_random(5).'@gmail.com';
       //echo $email;exit;
       $this->put("api/v1/sub-admin/$last->id", [
           'name'     => 'qwqw',
           'email'    => $email,
           'status'   => '1',
           'role'     => '1',
           'password' => '123456'
       ])->seeJson([
                'status' => 'success',
             ]);
       
       $this->put('api/v1/sub-admin/0', [
           'name'     => 'qwqw',
           'email'    => str_random(4).'@gmail.com',
           'status'   => '1',
           'role'     => '1',
           'password' => '123456'
               ])
             ->seeJson([
                'status' => 'fail',
             ]);
       
       // $response1 = $this->call('PUT', 'api/v1/sub-admin/0', [
       //     'name'     => 'qwqw',
       //     'email'    => 'test@test.com',
       //     'status'   => '1',
       //     'role'     => '1',
       //     'password' => '123456'
       //     ]); 
       // $this->assertNotEquals(200, $response1->status());
       
    }
    
    
     /**
     * Test to check change status
     *
     * @return void
     */
    public function testChangeSubAdminStatus()
    {
        $last = User::max('id');
        $this->put('api/v1/sub-admin', ['id' => $last, 'status' => 1])
             ->seeJson([
                'status' => 'success',
             ]);
       
        $this->put('api/v1/sub-admin', ['id' => 0, 'status' => 1])
             ->seeJson([
                'status' => 'fail',
             ]);
    }
    
    
    /**
     * Test to check delete user
     *
     * @return void
     */
    public function testDeleteSubAdmin()
    {
        $email = str_random(5).'@admin123.com';
        $this->post('api/v1/sub-admin', [
             'name'     => 'qwqw',
             'email'    => $email,
             'status'   => '1',
             'role'     => '2',
             'password' => '123456'
           ])->seeJson([
                'status' => 'success',
             ]);
 
       $user = User::max('id');
       $this->delete("api/v1/sub-admin/$user")
             ->seeJson([
                'status' => 'success',
             ]);
       $this->delete("api/v1/sub-admin/0")
             ->seeJson([
                'status' => 'fail',
             ]);
       $this->delete('api/v1/sub-admin/32323')
             ->seeJson([
                'status' => 'fail',
             ]);
    }
    
    
}
