mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-14 09:02:12 +00:00
Add new method to TaxonDeletionListener
This commit is contained in:
parent
3de0a9a812
commit
c52baf29da
5 changed files with 38 additions and 1 deletions
|
|
@ -6,6 +6,7 @@ Feature: Deleting a taxon
|
|||
|
||||
Background:
|
||||
Given I am logged in as an administrator
|
||||
And the store operates on a channel named "Web Store"
|
||||
|
||||
@ui @javascript
|
||||
Scenario: Deleted taxon should disappear from the registry
|
||||
|
|
@ -27,7 +28,16 @@ Feature: Deleting a taxon
|
|||
@ui @javascript
|
||||
Scenario: Being unable to delete a menu taxon of a channel
|
||||
Given the store classifies its products as "T-Shirts" and "Caps"
|
||||
And the store operates on a channel named "Web Store"
|
||||
And channel "Web Store" has menu taxon "Caps"
|
||||
When I try to delete taxon named "Caps"
|
||||
Then I should be notified that I cannot delete a menu taxon of any channel
|
||||
|
||||
@ui @javascript
|
||||
Scenario: Deleting root taxon above menu taxon
|
||||
Given the store has "Main Category" taxonomy
|
||||
And the store has "Clothes Category" taxonomy
|
||||
And channel "Web Store" has menu taxon "Main Category"
|
||||
When I want to see all taxons in store
|
||||
And I move down "Main Category" taxon
|
||||
And I delete taxon named "Clothes Category"
|
||||
Then the taxon named "Clothes Category" should no longer exist in the registry
|
||||
|
|
|
|||
|
|
@ -267,6 +267,10 @@ final class ManagingTaxonsContext implements Context
|
|||
*/
|
||||
public function taxonNamedShouldNotBeAdded($name)
|
||||
{
|
||||
if (!$this->createPage->isOpen()) {
|
||||
$this->createPage->open();
|
||||
}
|
||||
|
||||
Assert::same($this->createPage->countTaxonsByName($name), 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,4 +68,15 @@ final class TaxonDeletionListener
|
|||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function handleRemovingRootTaxonAtPositionZero(GenericEvent $event): void
|
||||
{
|
||||
/** @var TaxonInterface $taxon */
|
||||
$taxon = $event->getSubject();
|
||||
Assert::isInstanceOf($taxon, TaxonInterface::class);
|
||||
|
||||
if ($taxon->getPosition() === 0) {
|
||||
$taxon->setPosition(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@
|
|||
<argument type="service" id="sylius.promotion_rule_updater.has_taxon" />
|
||||
<tag name="kernel.event_listener" event="sylius.taxon.pre_delete" method="protectFromRemovingMenuTaxon" />
|
||||
<tag name="kernel.event_listener" event="sylius.taxon.post_delete" method="removeTaxonFromPromotionRules" />
|
||||
<tag name="kernel.event_listener" event="sylius.taxon.pre_delete" method="handleRemovingRootTaxonAtPositionZero" />
|
||||
</service>
|
||||
</services>
|
||||
</container>
|
||||
|
|
|
|||
|
|
@ -123,4 +123,15 @@ final class TaxonDeletionListenerSpec extends ObjectBehavior
|
|||
|
||||
$this->removeTaxonFromPromotionRules($event);
|
||||
}
|
||||
|
||||
function it_changes_taxon_position_to_minus_one_if_base_position_is_zero(
|
||||
GenericEvent $event,
|
||||
TaxonInterface $taxon,
|
||||
): void {
|
||||
$event->getSubject()->willReturn($taxon);
|
||||
$taxon->getPosition()->willReturn(0);
|
||||
$taxon->setPosition(-1)->shouldBeCalled();
|
||||
|
||||
$this->handleRemovingRootTaxonAtPositionZero($event);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue