* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) */ namespace PrestaShop\Module\FacetedSearch\Tests; use Context; use Db; use Mockery; use Mockery\Adapter\Phpunit\MockeryTestCase; use PrestaShop\Module\FacetedSearch\HookDispatcher; use Ps_Facetedsearch; class HookDispatcherTest extends MockeryTestCase { private $module; private $dispatcher; protected function setUp() { $this->module = Mockery::mock(Ps_Facetedsearch::class); $contextMock = Mockery::mock(Context::class); $dbMock = Mockery::mock(Db::class); $this->module->shouldReceive('getDatabase') ->andReturn($dbMock); $this->module->shouldReceive('getContext') ->andReturn($contextMock); $this->dispatcher = new HookDispatcher($this->module); } public function testGetAvailableHooks() { $this->assertCount(39, $this->dispatcher->getAvailableHooks()); $this->assertEquals( [ 'actionAttributeGroupDelete', 'actionAttributeSave', 'displayAttributeForm', 'actionAttributePostProcess', 'actionAttributeFormBuilderModifier', 'actionAttributeFormDataProviderData', 'actionAfterCreateAttributeFormHandler', 'actionAfterUpdateAttributeFormHandler', 'actionAttributeGroupDelete', 'actionAttributeGroupSave', 'displayAttributeGroupForm', 'displayAttributeGroupPostProcess', 'actionAttributeGroupFormBuilderModifier', 'actionAttributeGroupFormDataProviderData', 'actionAfterCreateAttributeGroupFormHandler', 'actionAfterUpdateAttributeGroupFormHandler', 'actionCategoryAdd', 'actionCategoryDelete', 'actionCategoryUpdate', 'actionProductPreferencesPageStockSave', 'displayLeftColumn', 'actionFeatureSave', 'actionFeatureDelete', 'displayFeatureForm', 'displayFeaturePostProcess', 'actionFeatureFormBuilderModifier', 'actionAfterCreateFeatureFormHandler', 'actionAfterUpdateFeatureFormHandler', 'actionFeatureValueSave', 'actionFeatureValueDelete', 'displayFeatureValueForm', 'displayFeatureValuePostProcess', 'actionFeatureValueFormBuilderModifier', 'actionAfterCreateFeatureValueFormHandler', 'actionAfterUpdateFeatureValueFormHandler', 'actionProductSave', 'productSearchProvider', 'actionObjectSpecificPriceRuleUpdateBefore', 'actionAdminSpecificPriceRuleControllerSaveAfter', ], $this->dispatcher->getAvailableHooks() ); } public function testDispatchUnfoundHook() { $this->module->shouldReceive('renderWidget') ->once() ->with('ThisHookDoesNotExists', []) ->andReturn(''); $this->assertEquals('', $this->dispatcher->dispatch('ThisHookDoesNotExists')); } }