/** * @param INotification $notification * @param string $languageCode The code of the language that should be used to prepare the notification * @return INotification */ public function prepare(INotification $notification, $languageCode) { if ($notification->getApp() !== 'files_sharing') { // Not my app => throw throw new \InvalidArgumentException(); } // Read the language from the notification $l = $this->factory->get('files_sharing', $languageCode); switch ($notification->getSubject()) { // Deal with known subjects case 'remote_share': $params = $notification->getSubjectParameters(); $notification->setParsedSubject((string) $l->t('You received %s as a remote share from %s', $params)); // Deal with the actions for a known subject foreach ($notification->getActions() as $action) { switch ($action->getLabel()) { case 'accept': $action->setParsedLabel((string) $l->t('Accept')); break; case 'decline': $action->setParsedLabel((string) $l->t('Decline')); break; } $notification->addParsedAction($action); } return $notification; default: // Unknown subject => Unknown notification => throw throw new \InvalidArgumentException(); } }
/** * @expectedException \InvalidArgumentException */ public function testAddParsedActionInvalid() { /** @var \OC\Notification\IAction|\PHPUnit_Framework_MockObject_MockObject $action */ $action = $this->getMockBuilder('OC\\Notification\\IAction')->disableOriginalConstructor()->getMock(); $action->expects($this->once())->method('isValidParsed')->willReturn(false); $action->expects($this->never())->method('isValid'); $this->notification->addParsedAction($action); }
public function testAddActionSecondParsedPrimary() { /** @var \OC\Notification\IAction|\PHPUnit_Framework_MockObject_MockObject $action */ $action = $this->getMockBuilder('OC\\Notification\\IAction')->disableOriginalConstructor()->getMock(); $action->expects($this->exactly(2))->method('isValidParsed')->willReturn(true); $action->expects($this->exactly(2))->method('isPrimary')->willReturn(true); $this->assertSame($this->notification, $this->notification->addParsedAction($action)); $this->setExpectedException('\\InvalidArgumentException'); $this->notification->addParsedAction($action); }
/** * @param INotification $notification * @param string $languageCode The code of the language that should be used to prepare the notification * @return INotification * @throws \InvalidArgumentException When the notification was not prepared by a notifier */ public function prepare(INotification $notification, $languageCode) { if ($notification->getApp() !== 'popularitycontestclient') { // Not my app => throw throw new \InvalidArgumentException(); } // Read the language from the notification $l = $this->l10nFactory->get('popularitycontestclient', $languageCode); $notification->setParsedSubject((string) $l->t('Do you want to send monthly usage statistics to ownCloud?')); foreach ($notification->getActions() as $action) { if ($action->getLabel() === 'enable') { $action->setParsedLabel((string) $l->t('Yes')); } else { if ($action->getLabel() === 'disable') { $action->setParsedLabel((string) $l->t('Not now')); } } $notification->addParsedAction($action); } return $notification; }