<?php 
/** 
 * @author: stev leibelt <[email protected]> 
 * @since: 2015-12-14 
 */ 
 
namespace Test\Net\Bazzline\Component\Curl; 
 
use Mockery; 
use Net\Bazzline\Component\Curl\Builder\Builder; 
use Net\Bazzline\Component\Curl\Dispatcher\DispatcherInterface; 
use Net\Bazzline\Component\Curl\Request\Request; 
use Net\Bazzline\Component\Curl\Response\Response; 
use Net\Bazzline\Component\Toolbox\HashMap\Merge; 
use PHPUnit_Framework_TestCase; 
 
abstract class AbstractTestCase extends PHPUnit_Framework_TestCase 
{ 
 
    /** 
     * @param string $method 
     * @param array $headerLines 
     * @param array $options 
     * @param null|mixed $data 
     * @return array 
     */ 
    protected function buildDispatcherOptions($method, array $headerLines = [], array $options = [], $data = null) 
    { 
        $isDataProvided         = (!is_null($data)); 
        $headerLines[]          = 'X-HTTP-Method-Override: ' . $method; //@see: http://tr.php.net/curl_setopt#109634 
        $dispatcherOptions      = $options; 
 
        $dispatcherOptions[CURLOPT_CUSTOMREQUEST]   = $method; 
        $dispatcherOptions[CURLOPT_HTTPHEADER]      = $headerLines; 
 
        if ($isDataProvided) { 
            $dispatcherOptions[CURLOPT_POSTFIELDS] = $data; 
        } 
 
        return $dispatcherOptions; 
    } 
 
    /** 
     * @return Mockery\MockInterface|\Net\Bazzline\Component\Curl\ResponseBehaviour\ResponseBehaviourInterface' 
     */ 
    protected function getMockOfTheBehaviour() 
    { 
        return Mockery::mock('Net\Bazzline\Component\Curl\ResponseBehaviour\ResponseBehaviourInterface'); 
    } 
 
    /** 
     * @return Mockery\MockInterface|DispatcherInterface 
     */ 
    protected function getMockOfTheDispatcher() 
    { 
        return Mockery::mock('Net\Bazzline\Component\Curl\Dispatcher\DispatcherInterface'); 
    } 
 
    /** 
     * @param Request $request 
     * @param array $defaultResponseBehaviours 
     * @return Builder 
     */ 
    protected function getNewBuilder(Request $request, array $defaultResponseBehaviours = []) 
    { 
        return new Builder($request, new Merge(), $defaultResponseBehaviours); 
    } 
 
    /** 
     * @param DispatcherInterface $dispatcher 
     * @param array $defaultHeaderLines 
     * @param array $defaultOptions 
     * @return Request 
     */ 
    protected function getNewRequest(DispatcherInterface $dispatcher, array $defaultHeaderLines = [], array $defaultOptions = []) 
    { 
        return new Request($dispatcher, new Merge(), $defaultHeaderLines, $defaultOptions); 
    } 
 
    /** 
     * @param mixed $content 
     * @param string $contentType 
     * @param string $error 
     * @param int $errorCode 
     * @param array $headLines 
     * @param int $statusCode 
     * @return Response 
     */ 
    protected function getNewResponse($content = 'example content', $contentType = 'example content type', $error = '', $errorCode = 0, array $headLines = [], $statusCode = 200) 
    { 
        return new Response($content, $contentType, $error, $errorCode, $headLines, $statusCode); 
    } 
 
    /** 
     * @return string 
     */ 
    protected function getUrl() 
    { 
        return 'http://www.foo.bar'; 
    } 
} 
 
 |