Testing Suite for OpenCart Development
OpenCart version | opencart-test-suite version | build status |
---|---|---|
~3.0 | ~3.0 | |
~2.2.0 | ~2.2.0 | |
~2.3.0 | ~2.3.0 |
The intend of this project is to provide a simple approach for setting up a test suite for custom OpenCart development.
opencart-test-suite
as a dependency composer require beyondit/opencart-test-suite --dev
composer require beyondit/opencart-test-suite:3.0 --dev
for OpenCart version 3.0 respectivelytests
folder and add respective tests (see examples below)phpunit.xml
which includes testsuites (e.g. admin and catalog) and set an env variable to the opencart root directory (see example phpunit.xml below)vendor/bin/phpunit --testsuite catalog-tests
commandOur OpenCart project template might simplify setup for you.
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="catalog-tests">
<directory suffix="Test.php">./tests/catalog/</directory>
</testsuite>
<testsuite name="admin-tests">
<directory suffix="AdminTest.php">./tests/admin/</directory>
</testsuite>
</testsuites>
<php>
<env name="OC_ROOT" value="/../opencart/root-folder" />
<env name="HTTP_SERVER" value="http://localhost:8080/" />
<env name="TEST_CONFIG" value="test-config" />
</php>
</phpunit>
namespace Tests;
class ModelCatalogManufacturerTest extends OpenCartTest
{
public function testASpecificManufacturer()
{
// load the manufacturer model
$model = $this->loadModel("catalog/manufacturer");
$manufacturer = $model->getManufacturer(5);
// test a specific assertion
$this->assertEquals('HTC', $manufacturer['name']);
}
}
namespace Tests;
class ControllerCheckoutCartTest extends OpenCartTest
{
public function testAddingASpecificProductToTheCart()
{
$response = $this->dispatchAction('checkout/cart/add','POST',['product_id' => 28]);
$output = json_decode($response->getOutput(),true);
$this->assertTrue(isset($output['success']) && isset($output['total']));
$this->assertRegExp('/HTC Touch HD/', $output['success']);
}
}
class ControllerAccountEditTest extends OpenCartTest {
public function testEditAccountWithLoggedInCustomer() {
$this->login('[email protected]','password');
$response = $this->dispatchAction('account/edit');
$this->assertRegExp('/Your Personal Details/',$response->getOutput());
$this->logout();
}
}
In order to test classes inside the admin folder just call your test class ending with AdminTest
e.g. ModelCatalogCategoryAdminTest
class ControllerCommonDashboardAdminTest extends OpenCartTest {
public function testShowDashboardWithLoggedInUser() {
$this->login('admin','admin');
$response = $this->dispatchAction('common/dashboard');
$this->assertRegExp('/Total Sales/', $response->getOutput());
$this->logout();
}
}