示例#1
0
    /**
     * @depends testParseSource
     */
    public function testImportSingleDateTime()
    {
        // full date
        $card = $this->importer->parseSource(<<<STR
BEGIN:VCARD
BDAY:19900101T010101Z
BDAY:19900101T010101Z
END:VCARD
STR
);
        $birthday = $this->importer->importSingleDatetime($card->BDAY, 'Heartsentwined\\Vcard\\Entity\\Birthday');
        $this->em->flush();
        $this->assertCount(1, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\Birthday')->findAll());
        $this->assertCount(1, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\DateTimeText')->findAll());
        $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\Birthday', $birthday);
        $dateTimeText = $birthday->getValue();
        $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\DateTimeText', $dateTimeText);
        $this->assertSame(Repository\DateTimeText::FULL, $dateTimeText->getFormat());
        $this->assertSame(DateTimeParser::createTimestamp('1990', '01', '01', '01', '01', '01', '+0000'), $dateTimeText->getValue()->getTimestamp());
        $this->assertSame('1990', $dateTimeText->getYear());
        $this->assertSame('01', $dateTimeText->getMonth());
        $this->assertSame('01', $dateTimeText->getDay());
        $this->assertSame('01', $dateTimeText->getHour());
        $this->assertSame('01', $dateTimeText->getMinute());
        $this->assertSame('01', $dateTimeText->getSecond());
        $this->assertSame('+0000', $dateTimeText->getTimezone());
        $this->assertEmpty($dateTimeText->getValueText());
        // partial date
        $card = $this->importer->parseSource(<<<STR
BEGIN:VCARD
BDAY:--0101
BDAY:--0101
END:VCARD
STR
);
        $birthday = $this->importer->importSingleDatetime($card->BDAY, 'Heartsentwined\\Vcard\\Entity\\Birthday');
        $this->em->flush();
        $this->assertCount(2, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\Birthday')->findAll());
        $this->assertCount(2, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\DateTimeText')->findAll());
        $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\Birthday', $birthday);
        $dateTimeText = $birthday->getValue();
        $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\DateTimeText', $dateTimeText);
        $this->assertSame(Repository\DateTimeText::PARTIAL, $dateTimeText->getFormat());
        $this->assertEmpty($dateTimeText->getValue());
        $this->assertEmpty($dateTimeText->getYear());
        $this->assertSame('01', $dateTimeText->getMonth());
        $this->assertSame('01', $dateTimeText->getDay());
        $this->assertEmpty($dateTimeText->getHour());
        $this->assertEmpty($dateTimeText->getMinute());
        $this->assertEmpty($dateTimeText->getSecond());
        $this->assertEmpty($dateTimeText->getTimezone());
        $this->assertEmpty($dateTimeText->getValueText());
        // text
        $card = $this->importer->parseSource(<<<STR
BEGIN:VCARD
BDAY;VALUE=text:foo
BDAY;VALUE=text:foo
END:VCARD
STR
);
        $birthday = $this->importer->importSingleDatetime($card->BDAY, 'Heartsentwined\\Vcard\\Entity\\Birthday');
        $this->em->flush();
        $this->assertCount(3, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\Birthday')->findAll());
        $this->assertCount(3, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\DateTimeText')->findAll());
        $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\Birthday', $birthday);
        $dateTimeText = $birthday->getValue();
        $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\DateTimeText', $dateTimeText);
        $this->assertSame(Repository\DateTimeText::TEXT, $dateTimeText->getFormat());
        $this->assertEmpty($dateTimeText->getValue());
        $this->assertEmpty($dateTimeText->getYear());
        $this->assertEmpty($dateTimeText->getMonth());
        $this->assertEmpty($dateTimeText->getDay());
        $this->assertEmpty($dateTimeText->getHour());
        $this->assertEmpty($dateTimeText->getMinute());
        $this->assertEmpty($dateTimeText->getSecond());
        $this->assertEmpty($dateTimeText->getTimezone());
        $this->assertSame('foo', $dateTimeText->getValueText());
    }
 /**
  * @expectedException InvalidArgumentException
  */
 public function testValidateDateTimeMaxSecond()
 {
     Parser::validateDateTime(null, null, null, null, null, 60);
 }