Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Core/tests/TestCase/View/Helper/FormHelperTest.php
<?php
namespace Croogo\Core\Test\TestCase\View\Helper;

use
Cake\View\View;
use
Croogo\Core\TestSuite\CroogoTestCase;
use
Croogo\Core\View\Helper\FormHelper;

class
FormHelperTest extends CroogoTestCase
{

   
/**
     * @var Croogo\Core\View\Helper\FormHelper
     */
   
private $Form;

    public function
setUp()
    {
       
$this->markTestIncomplete('This test needs to be ported to CakePHP 3.0');

       
$controller = null;
       
$this->View = new View($controller);
       
$this->Form = new FormHelper($this->View);
    }

    public function
tearDown()
    {
        unset(
$this->View);
        unset(
$this->Html);
    }

    public function
testInputTooltips()
    {
       
$this->markTestIncomplete('This test needs to be ported to CakePHP 3.0');

       
$result = $this->Form->input('username', [
           
'tooltip' => 'Username',
        ]);
       
$expected = [
           
'div' => [
               
'class',
            ],
           
'label' => ['for' => 'username'],
           
'Username',
           
'/label',
           
'input' => [
               
'name',
               
'data-placement' => 'right',
               
'data-trigger' => 'focus',
               
'data-title' => 'Username',
               
'type' => 'text',
               
'id',
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);

       
$result = $this->Form->input('username', [
           
'tooltip' => [
               
'data-title' => 'Username',
               
'data-placement' => 'left',
               
'data-trigger' => 'click',
            ]
        ]);
       
$expected = [
           
'div' => [
               
'class',
            ],
           
'label' => ['for' => 'username'],
           
'Username',
           
'/label',
           
'input' => [
               
'name',
               
'data-placement' => 'left',
               
'data-trigger' => 'click',
               
'data-title' => 'Username',
               
'type' => 'text',
               
'id',
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);

       
$result = $this->Form->input('username', [
           
'hiddenField' => false,
           
'type' => 'checkbox',
           
'tooltip' => [
               
'data-title' => 'Username',
               
'data-placement' => 'left',
               
'data-trigger' => 'click',
            ]
        ]);
       
$expected = [
           
'div' => [
               
'class',
               
'data-placement' => 'left',
               
'data-trigger' => 'click',
               
'data-title' => 'Username',
            ],
           
'input' => [
               
'type' => 'checkbox',
               
'name',
               
'value',
               
'id',
            ],
           
'label' => ['for' => 'username'],
           
'Username',
           
'/label',
           
'/div',
        ];
       
$this->assertHtml($expected, $result);
    }

   
/**
     * testInputAutoTooltips
     */
   
public function testInputAutoTooltips()
    {
       
// automatic tooltips
       
$result = $this->Form->input('username', [
           
'label' => false,
           
'placeholder' => 'Username',
        ]);
       
$expected = [
           
'div' => [
               
'class',
            ],
           
'input' => [
               
'name',
               
'placeholder',
               
'data-placement',
               
'data-trigger',
               
'data-title',
               
'type',
               
'id',
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);

       
// disable auto tooltips
       
$result = $this->Form->input('username', [
           
'label' => false,
           
'placeholder' => 'Username',
           
'tooltip' => false,
        ]);
       
$expected = [
           
'div' => [
               
'class',
            ],
           
'input' => [
               
'name',
               
'placeholder',
               
'type',
               
'id',
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);
    }

    public function
testButtonDefault()
    {
       
$result = $this->Form->button('Button');
       
$expected = [
           
'button' => [
               
'class' => 'btn',
               
'type' => 'submit'
           
],
           
'Button',
           
'/button',
        ];
       
$this->assertHtml($expected, $result);
    }

    public function
testButtonDanger()
    {
       
$result = $this->Form->button('Button', ['button' => 'danger']);

       
$expected = [
           
'button' => [
               
'class' => 'btn btn-danger',
               
'type' => 'submit'
           
],
           
'Button',
           
'/button',
        ];
       
$this->assertHtml($expected, $result);
    }

    public function
testButtonWithIcon()
    {
       
$result = $this->Form->button('Button', ['icon' => 'pencil']);

       
$expected = [
           
'button' => [
               
'class' => 'btn',
               
'type' => 'submit'
           
],
            [
               
'i' => [
                   
'class' => 'icon-pencil'
               
]
            ],
           
'/i',
           
' Button',
           
'/button',
        ];
       
$this->assertHtml($expected, $result);
    }

    public function
testSubmitDefault()
    {
       
$result = $this->Form->submit('Send');

       
$expected = [
           
'div' => [
               
'class' => 'submit',
            ],
            [
               
'input' => [
                   
'class' => 'btn',
                   
'type' => 'submit',
                   
'value' => 'Send'
               
]
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);
    }

    public function
testSubmitDanger()
    {
       
$result = $this->Form->submit('Send', ['button' => 'danger']);

       
$expected = [
           
'div' => [
               
'class' => 'submit',
            ],
            [
               
'input' => [
                   
'class' => 'btn btn-danger',
                   
'type' => 'submit',
                   
'value' => 'Send'
               
]
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);
    }

    public function
testInputPlaceholders()
    {
       
$result = $this->Form->input('username', [
           
'placeholder' => true,
        ]);
       
$expected = [
           
'div' => [
               
'class',
            ],
           
'label' => ['for' => 'username'],
           
'Username',
           
'/label',
           
'input' => [
               
'name',
               
'placeholder' => 'Username',
               
'data-placement' => 'right',
               
'data-trigger' => 'focus',
               
'data-title' => 'Username',
               
'type' => 'text',
               
'id',
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);

       
$result = $this->Form->input('username', [
           
'placeholder' => 'User/Email',
        ]);
       
$expected = [
           
'div' => [
               
'class',
            ],
           
'label' => ['for' => 'username'],
           
'Username',
           
'/label',
           
'input' => [
               
'name',
               
'placeholder' => 'User/Email',
               
'data-placement' => 'right',
               
'data-trigger' => 'focus',
               
'data-title' => 'User/Email',
               
'type' => 'text',
               
'id',
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);

       
$tip = 'Enter your username or email address';
       
$result = $this->Form->input('username', [
           
'placeholder' => 'User/Email',
           
'tooltip' => $tip,
        ]);
       
$expected = [
           
'div' => [
               
'class',
            ],
           
'label' => ['for' => 'username'],
           
'Username',
           
'/label',
           
'input' => [
               
'name',
               
'placeholder' => 'User/Email',
               
'data-placement' => 'right',
               
'data-trigger' => 'focus',
               
'data-title' => $tip,
               
'type' => 'text',
               
'id',
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);

       
$result = $this->Form->input('username', [
           
'placeholder' => false,
           
'tooltip' => $tip,
        ]);
       
$expected = [
           
'div' => [
               
'class',
            ],
           
'label' => ['for' => 'username'],
           
'Username',
           
'/label',
           
'input' => [
               
'name',
               
'data-placement' => 'right',
               
'data-trigger' => 'focus',
               
'data-title' => $tip,
               
'type' => 'text',
               
'id',
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);
    }

   
/**
     * testAutocomplete
     */
   
public function testAutocomplete()
    {
       
$this->markTestIncomplete('This test needs to be ported to CakePHP 3.0');

       
$result = $this->Form->autocomplete('user_id', [
           
'autocomplete' => [
               
'data-relatedField' => '#user_id',
               
'data-url' => 'http://croogo.org',
            ],
        ]);
       
$expected = [
            [
               
'input' => [
                   
'type' => 'hidden',
                   
'name',
                   
'id',
                ],
            ],
           
'div' => [
               
'class',
            ],
           
'label' => ['for'],
           
'User Id',
           
'/label',
            [
               
'input' => [
                   
'name' => 'data[autocomplete_user_id]',
                   
'data-relatedField' => '#user_id',
                   
'data-url' => 'http://croogo.org',
                   
'class' => 'typeahead-autocomplete',
                   
'autocomplete' => 'off',
                   
'type' => 'text',
                   
'id'
               
],
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);
    }

   
/**
     * testAutocompleteWithDefault
     */
   
public function testAutocompleteWithDefault()
    {
       
$this->markTestIncomplete('This test needs to be ported to CakePHP 3.0');

       
$this->skipIf(env('TRAVIS') == 'true');
       
$result = $this->Form->autocomplete('user_id', [
           
'default' => 3,
           
'autocomplete' => [
               
'default' => 'yvonne',
               
'data-relatedField' => '#user_id',
               
'data-url' => 'http://croogo.org',
            ],
        ]);
       
$expected = [
            [
               
'input' => [
                   
'type' => 'hidden',
                   
'name',
                   
'value' => 3,
                   
'id',
                ],
            ],
           
'div' => [
               
'class',
            ],
           
'label' => ['for'],
           
'User Id',
           
'/label',
            [
               
'input' => [
                   
'name' => 'data[autocomplete_user_id]',
                   
'data-relatedField' => '#user_id',
                   
'data-url' => 'http://croogo.org',
                   
'class' => 'typeahead-autocomplete',
                   
'autocomplete' => 'off',
                   
'type' => 'text',
                   
'value' => 'yvonne',
                   
'id'
               
],
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);
    }

   
/**
     * testAutocompleteWithDefaultFromViewVars
     */
   
public function testAutocompleteWithDefaultFromViewVars()
    {
       
$this->markTestIncomplete('This test needs to be ported to CakePHP 3.0');

       
$this->skipIf(env('TRAVIS') == 'true');
       
$this->Form->defaultModel = 'Node';
       
$this->View->set('users', [
           
3 => 'yvonne',
        ]);
       
$this->View->request->data = [
           
'Node' => [
               
'id' => 10,
               
'user_id' => 3,
            ],
        ];
       
$result = $this->Form->autocomplete('Node.user_id', [
           
'autocomplete' => [
               
'data-relatedField' => '#NodeUserId',
               
'data-displayField' => 'username',
               
'data-url' => 'http://croogo.org',
            ],
        ]);
       
$expected = [
            [
               
'input' => [
                   
'type' => 'hidden',
                   
'name',
                   
'value' => 3,
                   
'id',
                ],
            ],
           
'div' => [
               
'class',
            ],
           
'label' => ['for'],
           
'User Id',
           
'/label',
            [
               
'input' => [
                   
'name' => 'data[autocomplete_user_id]',
                   
'value' => 'yvonne',
                   
'data-displayField' => 'username',
                   
'data-url' => 'http://croogo.org',
                   
'data-relatedField',
                   
'class',
                   
'autocomplete',
                   
'type',
                   
'id',
                ],
            ],
           
'/div',
        ];
       
$this->assertHtml($expected, $result);
    }

   
/**
     * Test placeholder with nested model fields
     */
   
public function testInputPlaceholderNestedModel()
    {
       
$expected = [
           
'div' => [
               
'class',
            ],
           
'label' => [
               
'for',
            ],
           
'Node',
           
'/label',
           
'select' => [
               
'name',
               
'placeholder' => 'Node',
               
'data-placement',
               
'data-trigger',
               
'data-title',
               
'id',
            ],
           
'/select',
           
'/div',
        ];
       
$result = $this->Form->input('User.Comment.node_id', [
           
'placeholder' => true,
        ]);
       
$this->assertHtml($expected, $result);
    }

   
/**
     * Test radio button class
     */
   
public function testInputRadioButtonClass()
    {
       
$this->markTestIncomplete('This test needs to be ported to CakePHP 3.0');

       
$result = $this->Form->input('Node.promote', [
           
'type' => 'radio',
           
'class' => 'super-radio-button',
           
'options' => [
               
0 => 'Not promoted',
               
1 => 'Promoted',
            ],
        ]);
       
$this->assertStringStartsWith('<div class="input radio">', $result);
       
$this->assertContains('class="super-radio-button"', $result);
    }

   
/**
     * Test checkbox class
     */
   
public function testInputCheckboxClass()
    {
       
$result = $this->Form->input('Node.promote', [
           
'type' => 'checkbox',
           
'class' => 'super-checkbox-button',
        ]);
       
$this->assertStringStartsWith('<div class="input checkbox">', $result);
       
$this->assertContains('class="super-checkbox-button"', $result);
    }
}