acquia_commercemanager-8.x-1.122/modules/acm_customer/tests/src/Unit/CustomerDeleteResourceTest.php
modules/acm_customer/tests/src/Unit/CustomerDeleteResourceTest.php
<?php
namespace Drupal\Tests\acm_customer\Unit;
use Drupal\Core\Entity\EntityStorageException;
use Drupal\Tests\UnitTestCase;
use Drupal\acm_customer\Plugin\rest\resource\CustomerDeleteResource;
/**
* @coversDefaultClass \Drupal\acm_customer\Plugin\rest\resource\CustomerDeleteResource
* @group acm_cart
*
* @todo Test with short sessions to make sure they expire properly.
*/
class CustomerDeleteResourceTest extends UnitTestCase {
/**
* The mock logger.
*
* @var \Drupal\Core\Logger\LoggerChannelFactoryInterface|\PHPUnit_Framework_MockObject_MockObject
*/
protected $logger;
/**
* The customer delete resource.
*
* @var \Drupal\acm_customer\Plugin\rest\resource\CustomerDeleteResource|\PHPUnit_Framework_MockObject_MockObject
*/
protected $customerDeleteResource;
/**
* A user object.
*
* @var \Drupal\user\Entity\User|\PHPUnit_Framework_MockObject_MockObject
*/
public $userMock;
/**
* A response object.
*
* @var \Drupal\rest\ModifiedResourceResponse
*/
protected $response;
/**
* Generate a User mock.
*/
private function createUserMock() {
$userMock = $this->createMock('Drupal\user\Entity\User');
$userMock->method('delete')
->willReturn(TRUE);
return $userMock;
}
/**
* Generate a User mock with an error on the delete method.
*/
private function createUserErrorMock() {
$userMock = $this->createMock('Drupal\user\Entity\User');
$userMock->method('delete')
->will($this->throwException(new EntityStorageException('error during delete')));
return $userMock;
}
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
// Create Mock of logger.
$this->logger = $this->createMock('Psr\Log\LoggerInterface');
// Create Mock of CustomerDeleteResource.
$configuration = [];
$plugin_id = 'acm_customer_delete';
$plugin_definition = 'acm_customer_delete';
$serializer_formats = [];
$constructorArgs = [
$configuration,
$plugin_id,
$plugin_definition,
$serializer_formats,
$this->logger,
];
$customerDeleteResourceStub = $this->getMockBuilder('Drupal\acm_customer\Plugin\rest\resource\CustomerDeleteResource')
->setConstructorArgs($constructorArgs)
->setMethods(['myUserLoadByMail'])
->getMock();
$returnValueMap = [
['badUser@bad.com', $this->createUserErrorMock()],
['validEmail@valid.com', $this->createUserMock()],
['invalidEmail@invalid.com', ''],
];
$customerDeleteResourceStub->method('myUserLoadByMail')
->will($this->returnValueMap($returnValueMap));
$this->customerDeleteResource = $customerDeleteResourceStub;
}
/**
* Tests the post() method with no data passed.
*
* @covers ::post
*/
public function testPostNoData() {
$response = $this->customerDeleteResource->post([]);
$content = $response->getResponseData();
$this->assertSame(FALSE, $content['success']);
}
/**
* Tests the post() method with empty email passed.
*
* @covers ::post
*/
public function testPostEmptyEmail() {
$response = $this->customerDeleteResource->post(['email' => '']);
$content = $response->getResponseData();
$this->assertSame(TRUE, $content['success']);
}
/**
* Tests an invalid email on the post() method.
*
* @covers ::post
*/
public function testPostInvalidEmail() {
$response = $this->customerDeleteResource->post(['email' => 'invalidEmail@invalid.com']);
$content = $response->getResponseData();
$this->assertSame(TRUE, $content['success']);
}
/**
* Tests an error on the user delete in the post() method.
*
* @covers ::post
*/
public function testErrorOnDelete() {
$response = $this->customerDeleteResource->post(['email' => 'badUser@bad.com']);
$content = $response->getResponseData();
$this->assertSame(TRUE, $content['success']);
}
/**
* Tests a successful delete on the post() method.
*
* @covers ::post
*/
public function testSuccessfulDelete() {
$response = $this->customerDeleteResource->post(['email' => 'validEmail@valid.com']);
$content = $response->getResponseData();
$this->assertSame(TRUE, $content['success']);
}
}
