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()]);
     });
 }
Esempio n. 4
0
 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);
 }
Esempio n. 6
0
 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')));
 }
Esempio n. 8
0
 protected function assertDateDiffResult($key, $value, DateDiffResult $currentResult)
 {
     $this->assertSame($key, $currentResult->getKey(), 'Invalid result key');
     $this->assertSame($value, $currentResult->getValue(), 'Invalid result value');
 }