Skip to content

Commit

Permalink
Add customers service test
Browse files Browse the repository at this point in the history
  • Loading branch information
nfourtythree committed Jun 23, 2023
1 parent c51f365 commit 1ff098f
Showing 1 changed file with 114 additions and 0 deletions.
114 changes: 114 additions & 0 deletions tests/unit/services/CustomersTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
<?php
/**
* @link https://craftcms.com/
* @copyright Copyright (c) Pixel & Tonic, Inc.
* @license https://craftcms.github.io/license/
*/

namespace unit\services;

use Codeception\Test\Unit;
use craft\commerce\elements\Order;
use craft\commerce\Plugin;
use craft\commerce\services\Customers;
use craftcommercetests\fixtures\CustomerFixture;
use craftcommercetests\fixtures\OrdersFixture;
use UnitTester;

/**
* CustomersTest
*
* @author Pixel & Tonic, Inc. <support@pixelandtonic.com>
* @since 4.3.0
*/
class CustomersTest extends Unit
{
/**
* @var UnitTester
*/
protected UnitTester $tester;

/**
* @var OrdersFixture
*/
protected OrdersFixture $fixtureData;

/**
* @var array
*/
private array $_deleteElementIds = [];

/**
* @return array
*/
public function _fixtures(): array
{
return [
'customer' => [
'class' => CustomerFixture::class,
],
'orders' => [
'class' => OrdersFixture::class,
],
];
}

protected function _before(): void
{
parent::_before();

$this->fixtureData = $this->tester->grabFixture('orders');
}

public function testOrderCompleteHandlerNotCalled(): void
{
Plugin::getInstance()->set('customers', $this->make(Customers::class, [
'orderCompleteHandler' => function() {
self::never();
},
]));

/** @var Order $completedOrder */
$completedOrder = $this->fixtureData->getElement('completed-new');

self::assertTrue($completedOrder->markAsComplete());
}

public function testOrderCompleteHandlerCalled(): void
{
Plugin::getInstance()->set('customers', $this->make(Customers::class, [
'orderCompleteHandler' => function() {
self::once();
},
]));

$order = new Order();
$email = 'test@newemailaddress.xyz';
$order->setEmail($email);

/** @var Order $order */
$completedOrder = $this->fixtureData->getElement('completed-new');
$lineItem = $completedOrder->getLineItems()[0];
$qty = 4;
$note = 'My note';
$lineItem = Plugin::getInstance()->getLineItems()->createLineItem($order, $lineItem->purchasableId, [], $qty, $note);
$order->setLineItems([$lineItem]);

self::assertTrue($order->markAsComplete());

$this->_deleteElementIds[] = $order->id;
}

/**
* @inheritdoc
*/
protected function _after(): void
{
parent::_after();

// Cleanup data.
foreach ($this->_deleteElementIds as $elementId) {
\Craft::$app->getElements()->deleteElementById($elementId, null, null, true);
}
}
}

0 comments on commit 1ff098f

Please sign in to comment.