Переглянути джерело

[Form] Added some tests
* Tests to check if the pattern option is handled correctly by DateType
* Tests to check if the pattern parameter is handled correctly by DateTimeToLocalizedStringTransformer

Matthieu Vachon 14 роки тому
батько
коміт
c20eddeda9

+ 14 - 0
tests/Symfony/Tests/Component/Form/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php

@@ -122,6 +122,13 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
 
         $this->assertEquals($dateTime->format('d.m.Y H:i'), $transformer->transform($input));
     }
+    
+    public function testTransform_differentPatterns()
+    {
+        $transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, \IntlDateFormatter::GREGORIAN, 'MM*yyyy*dd HH|mm|ss');
+
+        $this->assertEquals('02*2010*03 04|05|06', $transformer->transform($this->dateTime));
+    }
 
     /**
      * @expectedException Symfony\Component\Form\Exception\UnexpectedTypeException
@@ -217,6 +224,13 @@ class DateTimeToLocalizedStringTransformerTest extends DateTimeTestCase
 
         $this->assertDateTimeEquals($dateTime, $transformer->reverseTransform('03.02.2010 04:05', null));
     }
+    
+    public function testReverseTransform_differentPatterns()
+    {
+        $transformer = new DateTimeToLocalizedStringTransformer('UTC', 'UTC', \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, \IntlDateFormatter::GREGORIAN, 'MM*yyyy*dd HH|mm|ss');
+
+        $this->assertDateTimeEquals($this->dateTime, $transformer->reverseTransform('02*2010*03 04|05|06', null));
+    }
 
     public function testReverseTransform_empty()
     {

+ 83 - 0
tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTypeTest.php

@@ -178,6 +178,78 @@ class DateTypeTest extends LocalizedTestCase
         $this->assertEquals($text, $form->getClientData());
     }
 
+    public function testSubmitFromInputDateTimeDifferentPattern()
+    {
+        $form = $this->factory->create('date', null, array(
+            'data_timezone' => 'UTC',
+            'user_timezone' => 'UTC',
+            'pattern' => 'MM*yyyy*dd',
+            'widget' => 'text',
+            'input' => 'datetime',
+        ));
+
+        $form->bind('06*2010*02');
+
+        $this->assertDateTimeEquals(new \DateTime('2010-06-02 UTC'), $form->getData());
+        $this->assertEquals('06*2010*02', $form->getClientData());
+    }
+
+    public function testSubmitFromInputStringDifferentPattern()
+    {
+        $form = $this->factory->create('date', null, array(
+            'data_timezone' => 'UTC',
+            'user_timezone' => 'UTC',
+            'pattern' => 'MM*yyyy*dd',
+            'widget' => 'text',
+            'input' => 'string',
+        ));
+
+        $form->bind('06*2010*02');
+
+        $this->assertEquals('2010-06-02', $form->getData());
+        $this->assertEquals('06*2010*02', $form->getClientData());
+    }
+
+    public function testSubmitFromInputTimestampDifferentPattern()
+    {
+        $form = $this->factory->create('date', null, array(
+            'data_timezone' => 'UTC',
+            'user_timezone' => 'UTC',
+            'pattern' => 'MM*yyyy*dd',
+            'widget' => 'text',
+            'input' => 'timestamp',
+        ));
+
+        $form->bind('06*2010*02');
+
+        $dateTime = new \DateTime('2010-06-02 UTC');
+
+        $this->assertEquals($dateTime->format('U'), $form->getData());
+        $this->assertEquals('06*2010*02', $form->getClientData());
+    }
+
+    public function testSubmitFromInputRawDifferentPattern()
+    {
+        $form = $this->factory->create('date', null, array(
+            'data_timezone' => 'UTC',
+            'user_timezone' => 'UTC',
+            'pattern' => 'MM*yyyy*dd',
+            'widget' => 'text',
+            'input' => 'array',
+        ));
+
+        $form->bind('06*2010*02');
+
+        $output = array(
+            'day' => '2',
+            'month' => '6',
+            'year' => '2010',
+        );
+
+        $this->assertEquals($output, $form->getData());
+        $this->assertEquals('06*2010*02', $form->getClientData());
+    }
+
     public function testSetData_differentTimezones()
     {
         $form = $this->factory->create('date', null, array(
@@ -478,6 +550,17 @@ class DateTypeTest extends LocalizedTestCase
 
         $this->assertSame('{{ day }}.{{ month }}.{{ year }}', $view->get('date_pattern'));
     }
+    
+    public function testPassDatePatternToView_differentPattern()
+    {
+        $form = $this->factory->create('date', null, array(
+            'pattern' => 'MM*yyyy*dd'
+        ));
+        
+        $view = $form->createView();
+
+        $this->assertSame('{{ month }}*{{ year }}*{{ day }}', $view->get('date_pattern'));
+    }
 
     public function testDontPassDatePatternIfText()
     {