<?php

namespace Razorpay\Tests;

use Razorpay\Api\Request;
use Razorpay\Api\Errors;

class ExceptionTest extends TestCase
{
    public function setUp(): void
    {
        parent::setUp();
    }
    
    /**
     * Create an order from json payload
     */
    public function testCreateJsonOrderException()
    {
        $payload = $this->payload();
        $attribute = json_encode($payload);
        try
        {
         $data = $this->api->order->create($attribute);

         $this->assertTrue(is_array($data->toArray()));

        }
        catch(Error $e){
            throw new InvalidArgumentException($e);
        }
    }

    /**
     * Create an order from set header application/json
     */
    public function testCreateOrderSetHeaderException()
    {
        $attribute = $this->payload();
        
        try
        {
         $this->api->setHeader('content-type', 'application/json');

         $data = $this->api->order->create($attribute);

         $this->assertTrue(is_array($data->toArray()));
        
        }
        catch(Error $e){
            throw new InvalidArgumentException($e);
        }
    }

    /**
     * Create an order
     */
    public function testCreateOrderSuccess()
    {
        $attribute = $this->payload();
        try
        {   
         $data = $this->api->order->create($attribute);

         $this->assertTrue(is_array($data->toArray()));

        }
        catch(Error $e){
            throw new InvalidArgumentException($e);
        }
    }
    
    private function payload(){
        $date = new \DateTime();
        $receiptId = $date->getTimestamp();
        return [
                 "receipt"=> (string) $receiptId,
                 "amount"=>54900,
                 "currency"=>"INR",
                 "payment_capture"=>1,
                 "app_offer"=>0,
                 "notes" => [
                    "woocommerce_order_number" => 240186
                 ],
                 "line_items_total" => 54900,
                 "line_items" => [
                        [
                            "type" => "e-commerce",
                            "sku"=> "",
                            "variant_id" => "211444",
                            "price" => "54900",
                            "offer_price" => "54900",
                            "quantity" => 1,
                            "name" => "Personalised Kids T-shirts",
                            "description" => "description"
                        ]
                    ]
                ];
    }
}