<?php
use App\ManagerPlan;
use App\SubscriptionPlans;
use App\Manager;

class PlanTest extends TestCase
{
    /**
     * Test to check get plans
     *
     * @return void
     */
    public function testPlan()
    {
       $response = $this->call('GET', 'api/v1/plan/');
       $this->assertEquals(200, $response->status());
    }
    
    /**
     * Test to check get admin plans
     *
     * @return void
     */
    public function testAdminPlan()
    {
       $response = $this->call('GET', 'api/v1/admin/subscriptions');
       $this->assertEquals(200, $response->status());
    }
    
    /**
     * Test to check get templates
     *
     * @return void
     */
    public function testGetPlan()
    {
        $manager = Manager::max('id');
        $last = SubscriptionPlans::max('id');
        //echo $managerPlan->manager_id.'r'.$managerPlan->plan_id;exit;
       
        $this->post('api/v1/plan/show', [
            'manager_id'     => $manager,
            'plan_id'    => $last,
            ])
             ->seeJson([
                'status' => 'success',
             ]);
       
        
        $this->post('api/v1/plan/show', [
            'manager_id' => $manager+1,
            'plan_id'    => $last+1,
            ])
             ->seeJson([
                'status' => 'fail',
             ]);
    }
    
     /**
     * Test to check save plan
     *
     * @return void
     */
    public function testSavePlan()
    {
        $deviceId = str_random(20);
        $this->post('api/v1/plan', [
            'name'     => $deviceId,
            'price'    => '12',
            'validity' => 'year',
            'status'   => '1',
            'noOfUsers' => 1000
            ])
             ->seeJson([
                'status' => 'success',
            ]);
    }
    
    /**
     * Test to check save plan
     *
     * @return void
     */
    public function testUpdatePlan()
    {
        $deviceId = str_random(20);
        $last = SubscriptionPlans::max('id');
        $planid = $last+1;
        $response =$this->put("api/v1/plan/$last", [
           'name'     => $deviceId,
           'price'    => '12',
           'validity' => '12',
           'status'   => '1'
           ])->seeJson([
                'status' => 'success',
           ]);
        
        $response = $this->put("api/v1/plan/$planid", [
           'name'     => 'aaa',
           'price'    => '12',
           'validity' => '12',
           'status'   => '1'
           ])->seeJson([
                'status' => 'fail',
           ]);
    }
    
     /**
     * Test to customer subscription
     *
     * @return void
     */
    public function testCustomerSubscription()
    {
       $plan = DB::table('subscription_plans')
                    ->select('id')->where('stripe_plan_id','!=','')->first();
       $manager =DB::table('managers')->select('id','user_id')->where('stripe_cust_id','!=','')->first();
       
       $managerPlan =  ManagerPlan::where('manager_id', $manager->user_id)->get()->where('status', 'current')->first();
       if($managerPlan){
       $response = $this->post('api/v1/plan/paybycard', [
            'manager_id' => $manager->user_id,
            'plan_id'    => $plan->id,
            ])
             ->seeJson([
                'status' => 'fail',
       ]);}
//       else{
//           //echo $manager->user_id.'k'.$plan->id;exit;
//           $response = $this->post('api/v1/plan/paybycard', [
//            'manager_id' => $manager->user_id,
//            'plan_id'    => $plan->id,
//            ])
//             ->seeJson([
//                'status' => 'success',
//             ]);
//       }
    }
    /**
     * Test to delete plan
     *
     * @return void
     */
    public function testDeletePlan()
    {
        $deviceId = str_random(20);
        $this->post('api/v1/plan', [
            'name'     => $deviceId,
            'price'    => '12',
            'validity' => 'year',
            'status'   => '1',
            'noOfUsers' => 1000
            ])
             ->seeJson([
                'status' => 'success',
            ]);
        $last = SubscriptionPlans::max('id');
       
        $this->delete("api/v1/plan/$last")
             ->seeJson([
                'status' => 'success',
             ]);
    }
    
}
