Files
domokits/tests/phpunit/Thelia/Tests/Action/CustomerTest.php
2019-11-21 12:25:31 +01:00

188 lines
8.3 KiB
PHP

<?php
/*************************************************************************************/
/* This file is part of the Thelia package. */
/* */
/* Copyright (c) OpenStudio */
/* email : dev@thelia.net */
/* web : http://www.thelia.net */
/* */
/* For the full copyright and license information, please view the LICENSE.txt */
/* file that was distributed with this source code. */
/*************************************************************************************/
namespace Thelia\Tests\Action;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Thelia\Action\Customer;
use Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent;
use Thelia\Core\HttpFoundation\Request;
use Thelia\Core\HttpFoundation\Session\Session;
use Thelia\Core\Security\SecurityContext;
use Thelia\Mailer\MailerFactory;
use Thelia\Model\CustomerQuery;
/**
* Class CustomerTest
* @package Thelia\Tests\Action\ImageTest
* @author Manuel Raynaud <manu@raynaud.io>
*/
class CustomerTest extends BaseAction
{
/**
* @var SecurityContext
*/
protected $securityContext;
protected $request;
protected $customerAction;
public static function setUpBeforeClass()
{
CustomerQuery::create()
->filterByRef('testRef')
->delete();
}
public function setUp()
{
$session = new Session(new MockArraySessionStorage());
$this->request = new Request();
$this->request->setSession($session);
$requestStack = new RequestStack();
$requestStack->push($this->request);
$this->securityContext = new SecurityContext($requestStack);
$this->customerAction = new Customer(
$this->securityContext,
new MailerFactory($this->getMockEventDispatcher(), $this->getMockParserInterface()),
$this->getMockEventDispatcher()
);
}
public function testCreatedCustomer()
{
$customerCreateEvent = new CustomerCreateOrUpdateEvent(
1,
"thelia",
"thelia",
"street address 1",
"street address 2",
"street address 3",
"0102030405",
"0607080910",
"63000",
"clermont-ferrand",
64,
sprintf("%s@thelia.fr", uniqid()),
uniqid(),
1,
0,
0,
0,
'My super company',
null
);
/** @var Customer $customerAction */
$customerAction = $this->customerAction;
$customerAction->create($customerCreateEvent, null, $this->getMockEventDispatcher());
$customerCreated = $customerCreateEvent->getCustomer();
$this->assertInstanceOf("Thelia\Model\Customer", $customerCreated, "new customer created must be an instance of Thelia\Model\Customer");
$this->assertFalse($customerCreated->isNew());
$this->assertEquals($customerCreateEvent->getFirstname(), $customerCreated->getFirstname());
$this->assertEquals($customerCreateEvent->getLastname(), $customerCreated->getLastname());
$this->assertEquals($customerCreateEvent->getTitle(), $customerCreated->getTitleId());
$this->assertEquals($customerCreateEvent->getEmail(), $customerCreated->getEmail());
$this->assertEquals($customerCreateEvent->getReseller(), $customerCreated->getReseller());
$this->assertEquals($customerCreateEvent->getSponsor(), $customerCreated->getSponsor());
$this->assertEquals($customerCreateEvent->getDiscount(), $customerCreated->getDiscount());
$addressCreated = $customerCreated->getDefaultAddress();
$this->assertInstanceOf("Thelia\Model\Address", $addressCreated);
$this->assertEquals($customerCreateEvent->getFirstname(), $addressCreated->getFirstname());
$this->assertEquals($customerCreateEvent->getLastname(), $addressCreated->getLastname());
$this->assertEquals($customerCreateEvent->getTitle(), $addressCreated->getTitleId());
$this->assertEquals($customerCreateEvent->getAddress1(), $addressCreated->getAddress1());
$this->assertEquals($customerCreateEvent->getAddress2(), $addressCreated->getAddress2());
$this->assertEquals($customerCreateEvent->getAddress3(), $addressCreated->getAddress3());
$this->assertEquals($customerCreateEvent->getZipcode(), $addressCreated->getZipcode());
$this->assertEquals($customerCreateEvent->getCity(), $addressCreated->getCity());
$this->assertEquals($customerCreateEvent->getCountry(), $addressCreated->getCountryId());
$this->assertEquals($customerCreateEvent->getPhone(), $addressCreated->getPhone());
$this->assertEquals($customerCreateEvent->getCellphone(), $addressCreated->getCellphone());
$this->assertEquals($customerCreateEvent->getCompany(), $addressCreated->getCompany());
}
public function testCreatedCustomerWithSpecifiedRef()
{
$customerCreateEvent = new CustomerCreateOrUpdateEvent(
1,
"thelia",
"thelia",
"street address 1",
"street address 2",
"street address 3",
"0102030405",
"0607080910",
"63000",
"clermont-ferrand",
64,
sprintf("%s@thelia.fr", uniqid()),
uniqid(),
1,
0,
0,
0,
'My super company',
'testRef'
);
/** @var Customer $customerAction */
$customerAction = $this->customerAction;
$customerAction->create($customerCreateEvent, null, $this->getMockEventDispatcher());
$customerCreated = $customerCreateEvent->getCustomer();
$this->assertInstanceOf("Thelia\Model\Customer", $customerCreated, "new customer created must be an instance of Thelia\Model\Customer");
$this->assertFalse($customerCreated->isNew());
$this->assertEquals($customerCreateEvent->getFirstname(), $customerCreated->getFirstname());
$this->assertEquals($customerCreateEvent->getLastname(), $customerCreated->getLastname());
$this->assertEquals($customerCreateEvent->getTitle(), $customerCreated->getTitleId());
$this->assertEquals($customerCreateEvent->getEmail(), $customerCreated->getEmail());
$this->assertEquals($customerCreateEvent->getReseller(), $customerCreated->getReseller());
$this->assertEquals($customerCreateEvent->getSponsor(), $customerCreated->getSponsor());
$this->assertEquals($customerCreateEvent->getDiscount(), $customerCreated->getDiscount());
$this->assertEquals($customerCreateEvent->getRef(), $customerCreated->getRef());
$addressCreated = $customerCreated->getDefaultAddress();
$this->assertInstanceOf("Thelia\Model\Address", $addressCreated);
$this->assertEquals($customerCreateEvent->getFirstname(), $addressCreated->getFirstname());
$this->assertEquals($customerCreateEvent->getLastname(), $addressCreated->getLastname());
$this->assertEquals($customerCreateEvent->getTitle(), $addressCreated->getTitleId());
$this->assertEquals($customerCreateEvent->getAddress1(), $addressCreated->getAddress1());
$this->assertEquals($customerCreateEvent->getAddress2(), $addressCreated->getAddress2());
$this->assertEquals($customerCreateEvent->getAddress3(), $addressCreated->getAddress3());
$this->assertEquals($customerCreateEvent->getZipcode(), $addressCreated->getZipcode());
$this->assertEquals($customerCreateEvent->getCity(), $addressCreated->getCity());
$this->assertEquals($customerCreateEvent->getCountry(), $addressCreated->getCountryId());
$this->assertEquals($customerCreateEvent->getPhone(), $addressCreated->getPhone());
$this->assertEquals($customerCreateEvent->getCellphone(), $addressCreated->getCellphone());
$this->assertEquals($customerCreateEvent->getCompany(), $addressCreated->getCompany());
}
}