From 6b9db1a162b07338f1109caa9d33378aa01042d3 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Thu, 12 Sep 2013 09:23:50 +0200 Subject: [PATCH] create test for customer creation --- core/lib/Thelia/Action/Customer.php | 3 +- .../Controller/Front/CustomerController.php | 3 +- .../Event/CustomerCreateOrUpdateEvent.php | 20 +++- core/lib/Thelia/Model/Customer.php | 4 +- core/lib/Thelia/Tests/Action/CustomerTest.php | 102 ++++++++++++++++++ 5 files changed, 124 insertions(+), 8 deletions(-) create mode 100644 core/lib/Thelia/Tests/Action/CustomerTest.php diff --git a/core/lib/Thelia/Action/Customer.php b/core/lib/Thelia/Action/Customer.php index 1b3ac6909..8dd2eebee 100755 --- a/core/lib/Thelia/Action/Customer.php +++ b/core/lib/Thelia/Action/Customer.php @@ -80,7 +80,8 @@ class Customer extends BaseAction implements EventSubscriberInterface $event->getLang(), $event->getReseller(), $event->getSponsor(), - $event->getDiscount() + $event->getDiscount(), + $event->getCompany() ); $event->setCustomer($customer); diff --git a/core/lib/Thelia/Controller/Front/CustomerController.php b/core/lib/Thelia/Controller/Front/CustomerController.php index a0fd74abc..3b8c2ccff 100755 --- a/core/lib/Thelia/Controller/Front/CustomerController.php +++ b/core/lib/Thelia/Controller/Front/CustomerController.php @@ -278,7 +278,8 @@ class CustomerController extends BaseFrontController $this->getRequest()->getSession()->getLang()->getId(), isset($data["reseller"])?$data["reseller"]:null, isset($data["sponsor"])?$data["sponsor"]:null, - isset($data["discount"])?$data["discount"]:null + isset($data["discount"])?$data["discount"]:null, + isset($data["company"])?$data["company"]:null ); return $customerCreateEvent; diff --git a/core/lib/Thelia/Core/Event/CustomerCreateOrUpdateEvent.php b/core/lib/Thelia/Core/Event/CustomerCreateOrUpdateEvent.php index 3a57d53a4..c0de9075f 100755 --- a/core/lib/Thelia/Core/Event/CustomerCreateOrUpdateEvent.php +++ b/core/lib/Thelia/Core/Event/CustomerCreateOrUpdateEvent.php @@ -32,6 +32,7 @@ class CustomerCreateOrUpdateEvent extends ActionEvent protected $reseller; protected $sponsor; protected $discount; + protected $company; /** * @var \Thelia\Model\Customer @@ -39,7 +40,7 @@ class CustomerCreateOrUpdateEvent extends ActionEvent protected $customer; /** - * @param int $title the title customer id + * @param int $title the title customer id * @param string $firstname * @param string $lastname * @param string $address1 @@ -49,15 +50,16 @@ class CustomerCreateOrUpdateEvent extends ActionEvent * @param string $cellphone * @param string $zipcode * @param string $city - * @param int $country the country id + * @param int $country the country id * @param string $email * @param string $password plain password, don't put hash password, it will hashes again * @param $lang - * @param int $reseller if customer is a reseller - * @param int $sponsor customer's id sponsor + * @param int $reseller if customer is a reseller + * @param int $sponsor customer's id sponsor * @param float $discount + * @param string $company */ - public function __construct($title, $firstname, $lastname, $address1, $address2, $address3, $phone, $cellphone, $zipcode, $city, $country, $email, $password, $lang, $reseller, $sponsor, $discount) + public function __construct($title, $firstname, $lastname, $address1, $address2, $address3, $phone, $cellphone, $zipcode, $city, $country, $email, $password, $lang, $reseller, $sponsor, $discount, $company) { $this->address1 = $address1; $this->address2 = $address2; @@ -75,6 +77,14 @@ class CustomerCreateOrUpdateEvent extends ActionEvent $this->reseller = $reseller; $this->sponsor = $sponsor; $this->discount = $discount; + $this->company = $company; + } + /** + * @return mixed + */ + public function getCompany() + { + return $this->company; } /** diff --git a/core/lib/Thelia/Model/Customer.php b/core/lib/Thelia/Model/Customer.php index 965b2176d..bb30d18e2 100755 --- a/core/lib/Thelia/Model/Customer.php +++ b/core/lib/Thelia/Model/Customer.php @@ -54,7 +54,7 @@ class Customer extends BaseCustomer implements UserInterface * @param int $discount * @throws \Exception|\Symfony\Component\Config\Definition\Exception\Exception */ - public function createOrUpdate($titleId, $firstname, $lastname, $address1, $address2, $address3, $phone, $cellphone, $zipcode, $city, $countryId, $email = null, $plainPassword = null, $lang = null, $reseller = 0, $sponsor = null, $discount = 0) + public function createOrUpdate($titleId, $firstname, $lastname, $address1, $address2, $address3, $phone, $cellphone, $zipcode, $city, $countryId, $email = null, $plainPassword = null, $lang = null, $reseller = 0, $sponsor = null, $discount = 0, $company = null) { $this ->setTitleId($titleId) @@ -79,6 +79,7 @@ class Customer extends BaseCustomer implements UserInterface $address = new Address(); $address + ->setCompany($company) ->setTitleId($titleId) ->setFirstname($firstname) ->setLastname($lastname) @@ -99,6 +100,7 @@ class Customer extends BaseCustomer implements UserInterface $address = $this->getDefaultAddress(); $address + ->setCompany($company) ->setTitleId($titleId) ->setFirstname($firstname) ->setLastname($lastname) diff --git a/core/lib/Thelia/Tests/Action/CustomerTest.php b/core/lib/Thelia/Tests/Action/CustomerTest.php new file mode 100644 index 000000000..b70d39428 --- /dev/null +++ b/core/lib/Thelia/Tests/Action/CustomerTest.php @@ -0,0 +1,102 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Action\ImageTest; +use Thelia\Action\Customer; +use Thelia\Core\Event\CustomerCreateOrUpdateEvent; + + +/** + * Class CustomerTest + * @package Thelia\Tests\Action\ImageTest + * @author Manuel Raynaud + */ +class CustomerTest extends \PHPUnit_Framework_TestCase +{ + public function getContainer() + { + $container = new \Symfony\Component\DependencyInjection\ContainerBuilder(); + + $dispatcher = $this->getMock("Symfony\Component\EventDispatcher\EventDispatcherInterface"); + + $container->set("event_dispatcher", $dispatcher); + + return $container; + } + + 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' + ); + + $customerAction = new Customer($this->getContainer()); + + $customerAction->create($customerCreateEvent); + + $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($customerCreated->getReseller(), $customerCreated->getReseller()); + $this->assertEquals($customerCreated->getSponsor(), $customerCreated->getSponsor()); + $this->assertEquals($customerCreated->getDiscount(), $customerCreated->getDiscount()); + + $addressCreated = $customerCreated->getDefaultAddress(); + + $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()); + } +} \ No newline at end of file