*/ class ModuleHookTest extends BaseAction { /** @var ModuleHook $action */ protected $action; /** @var ModuleModel */ protected $module; /** @var HookModel */ protected $hook; public function setUp() { $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\ContainerInterface') ->disableOriginalConstructor() ->getMock(); $this->action = new ModuleHook($stubContainer, $this->getMockEventDispatcher()); $this->module = ModuleQuery::create()->findOneByActivate(1); $this->hook = HookQuery::create()->findOneByActivate(true); } public function testCreate() { $event = new ModuleHookCreateEvent(); $event ->setHookId($this->hook->getId()) ->setModuleId($this->module->getId()); $this->action->createModuleHook($event); $createdModuleHook = $event->getModuleHook(); $this->assertInstanceOf('\Thelia\Model\ModuleHook', $createdModuleHook); $this->assertFalse($createdModuleHook->isNew()); $this->assertTrue($event->hasModuleHook()); $this->assertEquals($event->getHookId(), $createdModuleHook->getHookId()); $this->assertEquals($event->getModuleId(), $createdModuleHook->getModuleId()); return $createdModuleHook; } /** * @param ModuleHookModel $moduleHook * @depends testCreate * @return ModuleHookModel */ public function testToggleActivation(ModuleHookModel $moduleHook) { $activated = $moduleHook->getActive(); $event = new ModuleHookToggleActivationEvent($moduleHook); $this->action->toggleModuleHookActivation($event, null, $this->getMockEventDispatcher()); $updatedModuleHook = $event->getModuleHook(); $this->assertEquals(!$activated, $updatedModuleHook->getActive()); return $updatedModuleHook; } /** * @param ModuleHookModel $moduleHook * @depends testToggleActivation * @return ModuleHookModel */ public function testUpdate(ModuleHookModel $moduleHook) { $event = new ModuleHookUpdateEvent($moduleHook); $event ->setHookId($moduleHook->getHookId()) ->setClassname($moduleHook->getClassname()) ->setMethod($moduleHook->getMethod()) ->setActive(true); $this->action->updateModuleHook($event, null, $this->getMockEventDispatcher()); $updatedModuleHook = $event->getModuleHook(); $this->assertEquals($event->getHookId(), $updatedModuleHook->getHookId()); $this->assertEquals($event->getClassname(), $updatedModuleHook->getClassname()); $this->assertEquals($event->getMethod(), $updatedModuleHook->getMethod()); $this->assertEquals($event->getActive(), $updatedModuleHook->getActive()); return $updatedModuleHook; } /** * @param ModuleHookModel $moduleHook * @depends testUpdate * @return ModuleHookModel */ public function testDelete(ModuleHookModel $moduleHook) { $event = new ModuleHookDeleteEvent($moduleHook->getId()); $this->action->deleteModuleHook($event, null, $this->getMockEventDispatcher()); $deletedModuleHook = $event->getModuleHook(); $this->assertInstanceOf('Thelia\Model\ModuleHook', $deletedModuleHook); $this->assertTrue($deletedModuleHook->isDeleted()); } }