Uname: Linux peekpos.com 6.8.0-1060-aws #63~22.04.1-Ubuntu SMP Tue Jun 30 02:32:53 UTC 2026 x86_64
Software: Apache
PHP version: 8.3.25 [ PHP INFO ] PHP os: Linux
Server Ip: 47.130.192.226
Your Ip: 10.1.31.86
User: www (1001) | Group: www (1001)
Safe Mode: OFF
Disable Function:
passthru,putenv,chroot,chgrp,chown,shell_exec,popen,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv

name : ShippingMyfatoorahApiV2Test.php
<?php

namespace MyFatoorah\Test;

use MyFatoorah\Library\ShippingMyfatoorahApiV2;

class ShippingMyfatoorahApiV2Test extends \PHPUnit\Framework\TestCase {

    private $keys;

//-----------------------------------------------------------------------------------------------------------------------------------------
    public function __construct() {
        parent::__construct();
        $this->keys = include('apiKeys.php');
    }

//-----------------------------------------------------------------------------------------------------------------------------------------
    public function testGetShippingCountries() {
        foreach ($this->keys as $token) {
            try {
                $mfObj = new ShippingMyfatoorahApiV2($token['apiKey'], $token['countryMode'], $token['isTest']);
                $json  = $mfObj->getShippingCountries();

                $this->assertEquals('AD', $json->Data[0]->CountryCode);
                $this->assertEquals('ANDORRA', $json->Data[0]->CountryName);
            } catch (\Exception $ex) {
                $this->assertEquals($token['exception'], $ex->getMessage(), $token['message']);
            }
        }
    }

//-----------------------------------------------------------------------------------------------------------------------------------------
    public function testGetShippingCities() {
        foreach ($this->keys as $token) {
            try {
                $mfObj = new ShippingMyfatoorahApiV2($token['apiKey'], $token['countryMode'], $token['isTest']);
                $json  = $mfObj->getShippingCities(1, 'KW', 'ada');

                $this->assertEquals('KW', $json->Data->CountryCode);
                $this->assertEquals('ADAN', $json->Data->CityNames[0]);
                $this->assertEquals('SHUHADA', $json->Data->CityNames[1]);
            } catch (\Exception $ex) {
                $this->assertEquals($token['exception'], $ex->getMessage(), $token['message']);
            }
        }
    }

//-----------------------------------------------------------------------------------------------------------------------------------------
    public function testCalculateShippingCharge() {
        $mfObj = new ShippingMyfatoorahApiV2($this->keys['valid']['apiKey'], $this->keys['valid']['countryMode'], $this->keys['valid']['isTest']);

        $shippingData = [
            'ShippingMethod' => 1,
            'Items'          => [[
            'ProductName' => 'product',
            'Description' => 'product',
            'Weight'      => 10,
            'Width'       => 10,
            'Height'      => 10,
            'Depth'       => 10,
            'Quantity'    => 1,
            'UnitPrice'   => '17.234',
                ]],
            'CountryCode'    => 'KW',
            'CityName'       => 'adan',
            'PostalCode'     => '12345',
        ];

        $json = $mfObj->calculateShippingCharge($shippingData);
        $this->assertEquals('KD', $json->Data->Currency);
    }

    public function testCalculateShippingChargeExceptionProductName() {
        $mfObj = new ShippingMyfatoorahApiV2($this->keys['valid']['apiKey'], $this->keys['valid']['countryMode'], $this->keys['valid']['isTest']);

        //test empty ProductName
        $shippingData1 = [
            'ShippingMethod' => 1,
            'Items'          => [[
            'ProductName' => '',
            'Description' => 'product',
            'Weight'      => 10,
            'Width'       => 10,
            'Height'      => 10,
            'Depth'       => 10,
            'Quantity'    => 1,
            'UnitPrice'   => '17.234',
                ]],
            'CountryCode'    => 'KW',
            'CityName'       => 'adan',
            'PostalCode'     => '12345',
        ];

        $this->expectException(\Exception::class);
        $this->expectExceptionMessage('model.Items[0].ProductName: The field Product Name (En) is mandatory.');
        $mfObj->calculateShippingCharge($shippingData1);
    }

//-----------------------------------------------------------------------------------------------------------------------------------------
}
© 2026 GrazzMean