/** * @param \Magento\Framework\Event\Observer $observer * @return void */ public function execute(\Magento\Framework\Event\Observer $observer) { /** @var Category $category */ $category = $observer->getEvent()->getCategory(); if ($category->getUrlKey() !== false) { $category->setUrlKey($this->categoryUrlPathGenerator->generateUrlKey($category))->setUrlPath($this->categoryUrlPathGenerator->getUrlPath($category)); if (!$category->isObjectNew()) { $category->getResource()->saveAttribute($category, 'url_path'); if ($category->dataHasChangedFor('url_path')) { $this->updateUrlPathForChildren($category); } } } }
/** * @dataProvider generateUrlKeyDataProvider * @param string $urlKey * @param string $name * @param string $result */ public function testGenerateUrlKey($urlKey, $name, $result) { $this->category->expects($this->once())->method('getUrlKey')->will($this->returnValue($urlKey)); $this->category->expects($this->any())->method('getName')->will($this->returnValue($name)); $this->category->expects($this->once())->method('formatUrlKey')->will($this->returnArgument(0)); $this->assertEquals($result, $this->categoryUrlPathGenerator->generateUrlKey($this->category)); }