apsconnect / connect-quickstart-template
APS Connect QuickStart Template
Installs: 149
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 4
Forks: 2
Type:project
pkg:composer/apsconnect/connect-quickstart-template
Requires
- php: >=5.6.0
- apsconnect/connect-sdk: >=19.0
Requires (Dev)
- mockery/mockery: ^0.9
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2025-10-29 02:16:01 UTC
README
The Connect SDK Template for php provides developers an complete skeleton to start their automation project using the Connect Fulfillment API together with the Connect SDK for PHP.
Requirements
In order to use this template you will need an environment capable to run PHP scripts, any version starting PHP 5.6 is supported. Additionally please ensure that composer it's functional.
Installation
You can download the quick start template with Composer create-project command in your terminal:
composer create-project --prefer-dist apsconnect/connect-quickstart-template project-name
Once you have the skeleton project ready you can start developing your custom code
in app/ProductFulfillment.php file in the processRequest() method.
<?php namespace App; /** * Class ProductFulfillment * @package App */ class ProductFulfillment extends \Connect\FulfillmentAutomation { /** * Process each pending request * @param \Connect\Request $request */ public function processRequest($request) { // TODO: Implement processRequest() method. } /** * Run the Product Fulfillment Request Processor * @return bool * @throws \GuzzleHttp\Exception\GuzzleException */ public function run() { try { /** * run the application in custom context, any error * handling customization should be done here */ $this->process(); return true; } catch (\Exception $e) { $this->logger->error($e->getMessage()); if (is_callable([$this->logger, 'dump'])) { $this->logger->dump(); } } return false; } }
Testing your project
Test the ProductFulfillment class is quite easy, you just need to create your tests in tests/Feature/ directory
by default the skeleton have some common tests.
Mocking the FulFillment API calls
To mock the fulfillment API, and with that test like if a request is retrived, you only have to create a valid json file with the response that you want in the tests/Feature/
directory with the name YOUR-TEST-NAME.http.json where YOUR-TEST-NAME is the name of the test file in where you want to
use that fake response, for example:
ProcessSkipTest.http.jsonwill be injected inProcessSkipTest.phptest.RunAndFailTest.http.jsonwill be injected inRunAndFailTest.phptest.
Mocking other services
The skeleton also provides a easy way to mock other services, for this you only need to create a new service provider in
tests/Providers, this new service provider MUST extends the MockServiceProvider. Inside this file you should configure
your mocked service using the static property $scope to retrieve any auxiliary file like a fake json.
<?php namespace Test\Providers; use Pimple\Container; /** * Class HttpServiceProvider * @package Test\Unit\Runtime\Providers */ class HttpServiceProvider extends MockServiceProvider { public function register(Container $container) { $content = '[]'; $fakeRequestFile = dirname(__DIR__) . '/Feature/' . self::$scope . '.json'; if (is_readable($fakeRequestFile)) { $content = trim(file_get_contents($fakeRequestFile)); } $body = \Mockery::mock('\Psr\Http\Message\StreamInterface'); $body->shouldReceive('getContents') ->andReturn($content); $response = \Mockery::mock('\Psr\Http\Message\ResponseInterface'); $response->shouldReceive('getStatusCode') ->andReturn(200); $response->shouldReceive('getBody') ->andReturn($body); $client = \Mockery::mock('GuzzleHttp\ClientInterface'); $client->shouldReceive('request') ->withAnyArgs() ->andReturn($response); return $client; } }
Finally you need to register your mocked service in the $providers property of tests/TestCase file.
/** * List of Mocked Service Providers * @var MockServiceProvider[] */ protected $providers = [ 'logger' => '\Test\Providers\LoggerServiceProvider', 'http' => '\Test\Providers\HttpServiceProvider' ];
The scope id has the format YOUR-TEST-NAME.serviceId.json where:
YOUR-TEST-NAMEis the filename of the test that is running.serviceIdis the id of the service for exampleloggeris the logger service id andhttpis the default Http service for the FulFillment API.