Files
2020-11-19 15:36:28 +01:00

225 lines
8.0 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 Thelia\Action\Hook;
use Thelia\Core\Event\Hook\HookCreateAllEvent;
use Thelia\Core\Event\Hook\HookDeactivationEvent;
use Thelia\Core\Event\Hook\HookDeleteEvent;
use Thelia\Core\Event\Hook\HookToggleActivationEvent;
use Thelia\Core\Event\Hook\HookUpdateEvent;
use Thelia\Model\Hook as HookModel;
use Thelia\Core\Event\Hook\HookCreateEvent;
use Thelia\Core\Template\TemplateDefinition;
use Thelia\Model\LangQuery;
/**
* Class HookTest
* @package Thelia\Tests\Action
* @author Julien Chanséaume <jchanseaume@openstudio.fr>
*/
class HookTest extends BaseAction
{
/** @var Hook $action */
protected $action;
protected $locale;
public function setUp()
{
$this->locale = LangQuery::create()->findOne()->getLocale();
$stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\ContainerInterface')
->disableOriginalConstructor()
->getMock();
$this->action = new Hook($stubContainer, $this->getMockEventDispatcher());
}
public function testCreate()
{
$event = new HookCreateEvent();
$event
->setCode('test.hook-' . uniqid())
->setType(TemplateDefinition::FRONT_OFFICE)
->setLocale($this->locale)
->setActive(true)
->setNative(true)
->setTitle("Hook Test");
$this->action->create($event, null, $this->getMockEventDispatcher());
$createdHook = $event->getHook();
$this->assertInstanceOf('\Thelia\Model\Hook', $createdHook);
$this->assertFalse($createdHook->isNew());
$this->assertTrue($event->hasHook());
$this->assertEquals($event->getCode(), $createdHook->getCode());
$this->assertEquals($event->getType(), $createdHook->getType());
$this->assertEquals($event->getLocale(), $createdHook->getLocale());
$this->assertEquals($event->getActive(), $createdHook->getActivate());
$this->assertEquals($event->getNative(), $createdHook->getNative());
$this->assertEquals($event->getTitle(), $createdHook->getTitle());
return $createdHook;
}
public function createAll(HookCreateAllEvent $event)
{
$event = new HookCreateAllEvent();
$event
->setCode('test.hook-' . uniqid())
->setType(TemplateDefinition::FRONT_OFFICE)
->setLocale($this->locale)
->setActive(true)
->setNative(true)
->setTitle("Hook Test")
->setDescription("Hook Description")
->setChapo("Hook Chapo")
->setBlock(false)
->setByModule(false);
$this->action->createAll($event);
$createdHook = $event->getHook();
$this->assertInstanceOf('\Thelia\Model\Hook', $createdHook);
$this->assertFalse($createdHook->isNew());
$this->assertTrue($event->hasHook());
$this->assertEquals($event->getCode(), $createdHook->getCode());
$this->assertEquals($event->getType(), $createdHook->getType());
$this->assertEquals($event->getLocale(), $createdHook->getLocale());
$this->assertEquals($event->getActive(), $createdHook->getActivate());
$this->assertEquals($event->getNative(), $createdHook->getNative());
$this->assertEquals($event->getTitle(), $createdHook->getTitle());
$this->assertEquals($event->getDescription(), $createdHook->getDescription());
$this->assertEquals($event->getChapo(), $createdHook->getChapo());
$this->assertEquals($event->getBlock(), $createdHook->getBlock());
$this->assertEquals($event->getByModule(), $createdHook->getByModule());
}
/**
* @param HookModel $hook
* @depends testCreate
* @expectedException \Propel\Runtime\Exception\PropelException
*/
public function testCreateDuplicate(HookModel $hook)
{
$event = new HookCreateEvent();
$event
->setCode($hook->getCode())
->setType(TemplateDefinition::FRONT_OFFICE)
->setLocale($this->locale)
->setActive(true)
->setNative(true)
->setTitle("Hook Test");
$this->action->create($event, null, $this->getMockEventDispatcher());
$createdHook = $event->getHook();
$this->assertNull($createdHook);
$this->assertFalse($event->hasHook());
}
/**
* @param HookModel $hook
* @depends testCreate
* @return HookModel
*/
public function testDeactivation(HookModel $hook)
{
$event = new HookDeactivationEvent($hook->getId());
$this->action->deactivation($event);
$updatedHook = $event->getHook();
$this->assertFalse($updatedHook->getActivate());
return $hook;
}
/**
* @param HookModel $hook
* @depends testDeactivation
* @return HookModel
*/
public function testToggleActivation(HookModel $hook)
{
$event = new HookToggleActivationEvent($hook->getId());
$this->action->toggleActivation($event, null, $this->getMockEventDispatcher());
$updatedHook = $event->getHook();
$this->assertTrue($updatedHook->getActivate());
return $hook;
}
/**
* @param HookModel $hook
* @depends testToggleActivation
* @return HookModel
*/
public function testUpdate(HookModel $hook)
{
$event = new HookUpdateEvent($hook->getId());
$event
->setCode('test.hook.' . uniqid())
->setType(TemplateDefinition::FRONT_OFFICE)
->setLocale($this->locale)
->setActive(false)
->setNative(false)
->setTitle("Updated Hook Test")
->setDescription("Updated Hook Description")
->setChapo("Updated Hook Chapo")
->setBlock(false)
->setByModule(false);
$this->action->update($event, null, $this->getMockEventDispatcher());
$updatedHook = $event->getHook();
$this->assertEquals($event->getCode(), $updatedHook->getCode());
$this->assertEquals($event->getType(), $updatedHook->getType());
$this->assertEquals($event->getLocale(), $updatedHook->getLocale());
$this->assertEquals($event->getActive(), $updatedHook->getActivate());
$this->assertEquals($event->getNative(), $updatedHook->getNative());
$this->assertEquals($event->getTitle(), $updatedHook->getTitle());
$this->assertEquals($event->getDescription(), $updatedHook->getDescription());
$this->assertEquals($event->getChapo(), $updatedHook->getChapo());
$this->assertEquals($event->getBlock(), $updatedHook->getBlock());
$this->assertEquals($event->getByModule(), $updatedHook->getByModule());
return $updatedHook;
}
/**
* @param HookModel $hook
* @depends testUpdate
*/
public function testDelete(HookModel $hook)
{
$event = new HookDeleteEvent($hook->getId());
$this->action->delete($event, null, $this->getMockEventDispatcher());
$deletedHook = $event->getHook();
$this->assertInstanceOf('Thelia\Model\Hook', $deletedHook);
$this->assertTrue($deletedHook->isDeleted());
}
}