public function testItsAnImmutableObjectWithGettersMate() { $request = $this->createRequestForSeconds(5); $result = new DateDiffResult($request, 'some-key', 1); $this->assertSame($request, $result->getRequest()); $this->assertSame('some-key', $result->getKey()); $this->assertSame(1, $result->getValue()); }
private function getPlaceholders(DateDiffResult $result) { $placeholders = ['%count%' => $result->getValue()]; if (isset($this->customPlaceholders[$result->getKey()])) { $customPlaceholders = $this->customPlaceholders[$result->getKey()]; foreach ($customPlaceholders as $customPlaceholder => $customPlaceholderFunction) { $placeholders[$customPlaceholder] = call_user_func($customPlaceholderFunction, $result); } } return $placeholders; }
/** * DateDiffCalculator that calculates diff to the past in one of the units: * - seconds * - minutes * - "yesterday" * - hours * - days * - weeks (up to 14 days) * - full date * * @return DateDiffCalculator */ public static function upTo2Weeks() { return self::getOrCreate('up-to-2-weeks', function () { return new DateDiffCalculator([RangeRule::createForNegativeValues(2 * DateUnits::WEEK, INF, function (DateDiffRequest $request) { return DateDiffResult::createFullDate($request); }), Rules::weeksAgo(), Rules::yesterday(), Rules::daysAgo(), Rules::hoursAgo(), Rules::minutesAgo(), Rules::secondsAgo()]); }); }
public function testRangeChecking() { $condition = new RangeRule(-100, 100, function (DateDiffRequest $request) { return DateDiffResult::createFullDate($request); }); $this->assertTrue($condition->isApplicable($this->createRequestForSeconds(5))); $this->assertTrue($condition->isApplicable($this->createRequestForSeconds(100))); $this->assertTrue($condition->isApplicable($this->createRequestForSeconds(-100))); $this->assertFalse($condition->isApplicable($this->createRequestForSeconds(-101))); $this->assertFalse($condition->isApplicable($this->createRequestForSeconds(101))); $this->assertFalse($condition->isApplicable($this->createRequestForSeconds(1000))); }
/** * @dataProvider customPlaceholdersTestCases */ public function testCustomPlaceholders(DateDiffResult $result) { $translator = $this->getMockForAbstractClass(TranslatorInterface::class); $formatter = new TranslatorFormatter($translator); $formatter->registerCustomPlaceholder(['yesterday', 'tomorrow'], '%at%', function (DateDiffResult $result) { return $result->getRequest()->getDate()->format('H:i'); }); $translator->expects($this->once())->method('transChoice')->with($result->getKey(), $this->isNull(), ['%count%' => $result->getValue(), '%at%' => $result->getRequest()->getDate()->format('H:i')]); $formatter->format($result); }
private function interpolate(DateDiffResult $dateDiffResult) { return str_replace('[X]', $dateDiffResult->getValue(), $dateDiffResult->getKey()); }
protected function createFullDateResult(\DateTimeImmutable $currentDate) { return DateDiffResult::createFullDate(new DateDiffRequest($currentDate, $currentDate->modify('tomorrow'))); }
protected function assertDateDiffResult($key, $value, DateDiffResult $currentResult) { $this->assertSame($key, $currentResult->getKey(), 'Invalid result key'); $this->assertSame($value, $currentResult->getValue(), 'Invalid result value'); }