/** * @test */ public function renderCallsRenderMethodOfCountdownViewHelperWithNextUpcomingEventsBeginDateAsUnixTimeStamp() { $this->fixture->injectEventMapper($this->mapper); $event = $this->mapper->getLoadedTestingModel(array('object_type' => tx_seminars_Model_Event::TYPE_COMPLETE, 'pid' => 0, 'title' => 'Test event', 'begin_date' => $GLOBALS['SIM_ACCESS_TIME'] + 1000)); $this->mapper->expects(self::once())->method('findNextUpcoming')->will(self::returnValue($event)); $this->viewHelper = $this->getMock('tx_seminars_ViewHelper_Countdown', array('render')); $this->viewHelper->expects(self::once())->method('render')->with(self::equalTo($event->getBeginDateAsUnixTimeStamp())); $this->fixture->injectCountDownViewHelper($this->viewHelper); $this->fixture->render(); }
/** * Creates a countdown to the next upcoming event. * * @return string HTML code of the countdown or a message if no upcoming event has been found */ public function render() { if ($this->mapper === NULL) { throw new BadMethodCallException('The method injectEventMapper() needs to be called first.', 1333617194); } if ($this->viewHelper === NULL) { /** @var tx_seminars_ViewHelper_Countdown $viewHelper */ $viewHelper = t3lib_div::makeInstance('tx_seminars_ViewHelper_Countdown'); $this->injectCountDownViewHelper($viewHelper); } $this->setErrorMessage($this->checkConfiguration(TRUE)); try { /** @var tx_seminars_Model_Event $event */ $event = $this->mapper->findNextUpcoming(); $message = $this->viewHelper->render($event->getBeginDateAsUnixTimeStamp()); } catch (tx_oelib_Exception_NotFound $exception) { $message = $this->translate('message_countdown_noEventFound'); } $this->setMarker('count_down_message', $message); return $this->getSubpart('COUNTDOWN'); }
/** * @test */ public function renderWithBeginDateInTwoDaysReturnsTwoDaysLeft() { $offset = 2 * 86400; self::assertSame(sprintf($this->translator->translate('message_countdown'), $offset, $this->translator->translate('countdown_days_plural')), $this->fixture->render($GLOBALS['SIM_ACCESS_TIME'] + $offset)); }