public function onSuccess(SubscriptionEvent $event) { $subscription = $event->getSubscription(); if (!$subscription instanceof RecurringSubscriptionInterface) { throw new \InvalidArgumentException('Subscription must implement RecurringSubscriptionInterface'); } $this->scheduler->schedule($subscription, $subscription); }
public function it_removes_subscription_when_max_cycles_hits_zero(RecurringSubscriptionInterface $subscription, SubscriptionEvent $event, ObjectManager $manager) { $subscription->getMaxCycles()->willReturn(0); $subscription->setMaxCycles(0)->shouldBeCalled(); $event->getSubscription()->willReturn($subscription); $manager->remove($subscription)->shouldBeCalled(); $this->onSuccess($event); }
public function onSuccess(SubscriptionEvent $event) { $subscription = $event->getSubscription(); if (!$subscription instanceof RecurringSubscriptionInterface) { throw new \InvalidArgumentException('Subscription must implement RecurringSubscriptionInterface'); } if (null === ($maxCycles = $subscription->getMaxCycles())) { return; } $subscription->setMaxCycles(max(0, $maxCycles - 1)); if (0 === $subscription->getMaxCycles()) { $this->manager->remove($subscription); } }
public function it_decrements_max_cycles(RecurringSubscriptionInterface $subscription, SubscriptionEvent $event, RecurringSchedulerInterface $scheduler) { $event->getSubscription()->willReturn($subscription); $scheduler->schedule($subscription, $subscription)->shouldBeCalled(); $this->onSuccess($event); }