mockApplication(); } public function testLead() { $I = $this->codeGuy; $html = TbHtml::lead('Lead text'); $p = $I->createNode($html, 'p.lead'); $I->seeNodeText($p, 'Lead text'); } public function testSmall() { $I = $this->codeGuy; $html = TbHtml::small('Small text'); $small = $I->createNode($html, 'small'); $I->seeNodeText($small, 'Small text'); } public function testBold() { $I = $this->codeGuy; $html = TbHtml::b('Bold text'); $strong = $I->createNode($html, 'strong'); $I->seeNodeText($strong, 'Bold text'); } public function testItalic() { $I = $this->codeGuy; $html = TbHtml::i('Italic text'); $em = $I->createNode($html, 'em'); $I->seeNodeText($em, 'Italic text'); } public function testEmphasize() { $I = $this->codeGuy; $html = TbHtml::em( 'Warning text', array( 'color' => TbHtml::TEXT_COLOR_WARNING, ) ); $span = $I->createNode($html, 'p.text-warning'); $I->seeNodeText($span, 'Warning text'); $html = TbHtml::em( 'Success text', array( 'color' => TbHtml::TEXT_COLOR_SUCCESS, ), 'span' ); $span = $I->createNode($html, 'span.text-success'); $I->seeNodeText($span, 'Success text'); } public function testMuted() { $I = $this->codeGuy; $html = TbHtml::muted('Muted text'); $p = $I->createNode($html, 'p.muted'); $I->seeNodeText($p, 'Muted text'); } public function testMutedSpan() { $I = $this->codeGuy; $html = TbHtml::mutedSpan('Muted text'); $span = $I->createNode($html, 'span.muted'); $I->seeNodeText($span, 'Muted text'); } public function testAbbreviation() { $I = $this->codeGuy; $html = TbHtml::abbr('Abbreviation', 'Word'); $abbr = $I->createNode($html, 'abbr'); $I->seeNodeAttribute($abbr, 'title', 'Word'); $I->seeNodeText($abbr, 'Abbreviation'); } public function testSmallAbbreviation() { $I = $this->codeGuy; $html = TbHtml::smallAbbr('Abbreviation', 'Word'); $abbr = $I->createNode($html, 'abbr'); $I->seeNodeAttribute($abbr, 'title', 'Word'); $I->seeNodeCssClass($abbr, 'initialism'); $I->seeNodeText($abbr, 'Abbreviation'); } public function testAddress() { $I = $this->codeGuy; $html = TbHtml::address('Address text'); $addr = $I->createNode($html, 'address'); $I->seeNodeText($addr, 'Address text'); } public function testQuote() { $I = $this->codeGuy; $html = TbHtml::quote( 'Quote text', array( 'paragraphOptions' => array('class' => 'paragraph'), 'source' => 'Source text', 'sourceOptions' => array('class' => 'source'), 'cite' => 'Cited text', 'citeOptions' => array('class' => 'cite'), ) ); $blockquote = $I->createNode($html, 'blockquote'); $I->seeNodeChildren($blockquote, array('p', 'small')); $p = $blockquote->filter('p'); $I->seeNodeCssClass($p, 'paragraph'); $I->seeNodeText($p, 'Quote text'); $small = $blockquote->filter('blockquote > small'); $I->seeNodeCssClass($small, 'source'); $I->seeNodeText($small, 'Source text'); $cite = $small->filter('small > cite'); $I->seeNodeCssClass($cite, 'cite'); $I->seeNodeText($cite, 'Cited text'); // todo: consider writing a test including the pull-right quote as well. } public function testHelp() { $I = $this->codeGuy; $html = TbHtml::help('Help text'); $span = $I->createNode($html, 'span.help-inline'); $I->seeNodeText($span, 'Help text'); } public function testHelpBlock() { $I = $this->codeGuy; $html = TbHtml::helpBlock('Help text'); $p = $I->createNode($html, 'p.help-block'); $I->seeNodeText($p, 'Help text'); } public function testCode() { $I = $this->codeGuy; $html = TbHtml::code('Source code'); $code = $I->createNode($html, 'code'); $I->seeNodeText($code, 'Source code'); } public function testCodeBlock() { $I = $this->codeGuy; $html = TbHtml::codeBlock('Source code'); $pre = $I->createNode($html, 'pre'); $I->seeNodeText($pre, 'Source code'); } public function testTag() { $I = $this->codeGuy; $html = TbHtml::tag( 'div', array( 'textAlign' => TbHtml::TEXT_ALIGN_RIGHT, 'pull' => TbHtml::PULL_RIGHT, 'span' => 3, ), 'Content' ); $div = $I->createNode($html, 'div'); $I->seeNodeCssClass($div, 'pull-right span3 text-right'); } public function testOpenTag() { $I = $this->codeGuy; $html = TbHtml::openTag( 'p', array( 'class' => 'tag', ) ); $p = $I->createNode($html, 'p'); $I->seeNodeCssClass($p, 'tag'); } public function testForm() { $I = $this->codeGuy; $html = TbHtml::formTb( TbHtml::FORM_LAYOUT_VERTICAL, '#', 'post', array( 'class' => 'form', ) ); $form = $I->createNode($html, 'form.form-vertical'); $I->seeNodeCssClass($form, 'form'); $I->seeNodeAttributes( $form, array( 'action' => '#', 'method' => 'post' ) ); } public function testBeginForm() { $I = $this->codeGuy; $html = TbHtml::beginFormTb(TbHtml::FORM_LAYOUT_VERTICAL, '#'); $form = $I->createNode($html, 'form'); $I->seeNodeCssClass($form, 'form-vertical'); } public function testStatefulForm() { $I = $this->codeGuy; $html = TbHtml::statefulFormTb(TbHtml::FORM_LAYOUT_VERTICAL, '#'); $body = $I->createNode($html); $form = $body->filter('form'); $I->seeNodeCssClass($form, 'form-vertical'); $div = $body->filter('div'); $I->seeNodeCssStyle($div, 'display: none'); $input = $div->filter('input[type=hidden]'); $I->seeNodeAttributes( $input, array( 'name' => 'YII_PAGE_STATE', 'value' => '', ) ); } public function testTextField() { $I = $this->codeGuy; $html = TbHtml::textField( 'text', 'text', array( 'class' => 'input', ) ); $input = $I->createNode($html, 'input[type=text]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'text', 'name' => 'text', 'value' => 'text', ) ); $html = TbHtml::textField( 'text', 'text', array( 'prepend' => 'Prepend text', ) ); $div = $I->createNode($html, 'div'); $I->seeNodeCssClass($div, 'input-prepend'); $I->seeNodeChildren($div, array('span', 'input')); $span = $div->filter('span.add-on'); $I->seeNodeText($span, 'Prepend text'); $html = TbHtml::textField( 'text', 'text', array( 'append' => 'Append text', ) ); $div = $I->createNode($html, 'div'); $I->seeNodeCssClass($div, 'input-append'); $I->seeNodeChildren($div, array('input', 'span')); $span = $div->filter('span.add-on'); $I->seeNodeText($span, 'Append text'); $html = TbHtml::textField( 'text', 'text', array( 'prepend' => 'Prepend text', 'append' => 'Append text', ) ); $div = $I->createNode($html, 'div'); $I->seeNodeCssClass($div, 'input-prepend input-append'); $I->seeNodeChildren($div, array('span', 'input', 'span')); $html = TbHtml::textField( 'text', 'text', array( 'block' => true, ) ); $input = $I->createNode($html, 'input'); $I->seeNodeCssClass($input, 'input-block-level'); } public function testPasswordField() { $I = $this->codeGuy; $html = TbHtml::passwordField( 'password', 'secret', array( 'class' => 'input', ) ); $input = $I->createNode($html, 'input[type=password]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'password', 'name' => 'password', 'value' => 'secret', ) ); } public function testUrlField() { $I = $this->codeGuy; $html = TbHtml::urlField( 'url', 'http://www.getyiistrap.com', array( 'class' => 'input', ) ); $input = $I->createNode($html, 'input[type=url]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'url', 'name' => 'url', 'value' => 'http://www.getyiistrap.com', ) ); } public function testEmailField() { $I = $this->codeGuy; $html = TbHtml::emailField( 'email', 'christoffer.niska@gmail.com', array( 'class' => 'input', ) ); $input = $I->createNode($html, 'input[type=email]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'email', 'name' => 'email', 'value' => 'christoffer.niska@gmail.com', ) ); } public function testNumberField() { $I = $this->codeGuy; $html = TbHtml::numberField( 'number', 42, array( 'class' => 'input', ) ); $input = $I->createNode($html, 'input[type=number]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'number', 'name' => 'number', 'value' => '42', ) ); } public function testRangeField() { $I = $this->codeGuy; $html = TbHtml::rangeField( 'range', 3.33, array( 'class' => 'input', ) ); $input = $I->createNode($html, 'input[type=range]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'range', 'name' => 'range', 'value' => '3.33', ) ); } public function testDateField() { $I = $this->codeGuy; $html = TbHtml::dateField( 'date', '2013-08-28', array( 'class' => 'input', ) ); $input = $I->createNode($html, 'input[type=date]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'date', 'name' => 'date', 'value' => '2013-08-28', ) ); } public function testFileField() { $I = $this->codeGuy; $html = TbHtml::fileField( 'file', '', array( 'class' => 'input', ) ); $input = $I->createNode($html, 'input[type=file]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'file', 'name' => 'file', 'value' => '', ) ); } public function testTextArea() { $I = $this->codeGuy; $html = TbHtml::textArea( 'textarea', 'Textarea text', array( 'class' => 'textarea', ) ); $textarea = $I->createNode($html, 'textarea'); $I->seeNodeAttributes( $textarea, array( 'class' => 'textarea', 'id' => 'textarea', 'name' => 'textarea', ) ); $I->seeNodeText($textarea, 'Textarea text'); } public function testRadioButton() { $I = $this->codeGuy; $html = TbHtml::radioButton( 'radio', false, array( 'class' => 'input', 'label' => 'Label text', ) ); $label = $I->createNode($html, 'label'); $I->seeNodeCssClass($label, 'radio'); $I->seeNodePattern($label, '/> Label text$/'); $input = $label->filter('input[type=radio]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'radio', 'name' => 'radio', 'value' => '1', ) ); $I->dontSeeNodeAttribute($input, 'checked'); $html = TbHtml::radioButton('radio', true); $input = $I->createNode($html, 'input[type=radio]'); $I->seeNodeAttribute($input, 'checked', 'checked'); } public function testCheckBox() { $I = $this->codeGuy; $html = TbHtml::checkBox( 'checkbox', false, array( 'class' => 'input', 'label' => 'Label text', ) ); $label = $I->createNode($html, 'label'); $I->seeNodeCssClass($label, 'checkbox'); $I->seeNodePattern($label, '/> Label text$/'); $input = $label->filter('input[type=checkbox]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'checkbox', 'name' => 'checkbox', 'value' => '1', ) ); $I->dontSeeNodeAttribute($input, 'checked'); $html = TbHtml::checkBox('checkbox', true); $input = $I->createNode($html, 'input[type=checkbox]'); $I->seeNodeAttribute($input, 'checked', 'checked'); } public function testDropDownList() { $I = $this->codeGuy; $html = TbHtml::dropDownList( 'dropdown', null, array('1', '2', '3', '4', '5'), array( 'class' => 'list', 'empty' => 'Empty text', 'size' => TbHtml::INPUT_SIZE_LARGE, 'textAlign' => TbHtml::TEXT_ALIGN_CENTER, ) ); $select = $I->createNode($html, 'select'); $I->seeNodeCssClass($select, 'input-large text-center list'); $I->dontSeeNodeAttribute($select, 'size'); } public function testListBox() { $I = $this->codeGuy; $html = TbHtml::listBox( 'listbox', null, array('1', '2', '3', '4', '5'), array( 'class' => 'list', 'empty' => 'Empty text', 'size' => TbHtml::INPUT_SIZE_LARGE, 'textAlign' => TbHtml::TEXT_ALIGN_CENTER, ) ); $select = $I->createNode($html, 'select'); $I->seeNodeCssClass($select, 'input-large text-center list'); $I->seeNodeAttributes( $select, array( 'name' => 'listbox', 'id' => 'listbox', 'size' => 4, ) ); $html = TbHtml::listBox( 'listbox', null, array('1', '2', '3', '4', '5'), array( 'multiple' => true, ) ); $select = $I->createNode($html, 'select'); $I->seeNodeAttribute($select, 'name', 'listbox[]'); } public function testRadioButtonList() { $I = $this->codeGuy; $html = TbHtml::radioButtonList( 'radioList', null, array('Option 1', 'Option 2', 'Option 3'), array( 'separator' => '
', 'container' => 'div', 'containerOptions' => array('class' => 'container'), ) ); $container = $I->createNode($html, 'div.container'); $I->seeNodeChildren($container, array('label.radio', 'br', 'label.radio', 'br', 'label.radio')); $label = $container->filter('label')->first(); $I->seeNodePattern($label, '/> Option 1$/'); $input = $label->filter('input[type=radio]'); $I->seeNodeAttributes( $input, array( 'id' => 'radioList_0', 'name' => 'radioList', 'value' => '0', ) ); } public function testInlineRadioButtonList() { $I = $this->codeGuy; $html = TbHtml::inlineRadioButtonList( 'radioList', null, array('Option 1', 'Option 2', 'Option 3') ); $span = $I->createNode($html, 'span'); $I->seeNodeNumChildren($span, 3); $I->seeNodeChildren($span, array('label.radio.inline', 'label.radio.inline', 'label.radio.inline')); } public function testCheckboxList() { $I = $this->codeGuy; $html = TbHtml::checkBoxList( 'checkboxList', null, array('Option 1', 'Option 2', 'Option 3'), array( 'separator' => '
', 'container' => 'div', 'containerOptions' => array('class' => 'container'), ) ); $container = $I->createNode($html, 'div.container'); $I->seeNodeChildren($container, array('label.checkbox', 'br', 'label.checkbox', 'br', 'label.checkbox')); $label = $container->filter('label')->first(); $I->seeNodePattern($label, '/> Option 1$/'); $input = $label->filter('input[type=checkbox]'); $I->seeNodeAttributes( $input, array( 'id' => 'checkboxList_0', 'name' => 'checkboxList[]', 'value' => '0', ) ); $html = TbHtml::checkBoxList( 'checkboxList', null, array('Option 1', 'Option 2', 'Option 3'), array( 'checkAll' => true, ) ); $span = $I->createNode($html, 'span'); $I->seeNodeChildren( $span, array('input[type=checkbox]', 'label.checkbox', 'label.checkbox', 'label.checkbox', 'label.checkbox') ); $label = $span->filter('label')->first(); $input = $label->filter('input'); $I->seeNodeAttribute($input, 'name', 'checkboxList_all'); $html = TbHtml::checkBoxList( 'checkboxList', null, array('Option 1', 'Option 2', 'Option 3'), array( 'checkAll' => true, 'checkAllLast' => true, ) ); $span = $I->createNode($html, 'span'); $I->seeNodeChildren( $span, array('label.checkbox', 'label.checkbox', 'label.checkbox', 'label.checkbox', 'input[type=checkbox]') ); $label = $span->filter('label')->last(); $input = $label->filter('input'); $I->seeNodeAttribute($input, 'name', 'checkboxList_all'); } public function testInlineCheckBoxList() { $I = $this->codeGuy; $html = TbHtml::inlineCheckBoxList( 'checkboxList', null, array('Option 1', 'Option 2', 'Option 3') ); $span = $I->createNode($html, 'span'); $I->seeNodeNumChildren($span, 3); $I->seeNodeChildren( $span, array('label.checkbox.inline', 'label.checkbox.inline', 'label.checkbox.inline') ); } public function testUneditableField() { $I = $this->codeGuy; $html = TbHtml::uneditableField( 'Uneditable text', array( 'class' => 'span', ) ); $span = $I->createNode($html, 'span.uneditable-input'); $I->seeNodeCssClass($span, 'span'); $I->seeNodeText($span, 'Uneditable text'); } public function testSearchQueryField() { $I = $this->codeGuy; $html = TbHtml::searchQueryField( 'search', 'Search query', array( 'class' => 'input', ) ); $input = $I->createNode($html, 'input[type=text].search-query'); $I->seeNodeCssClass($input, 'input'); $I->seeNodeAttributes( $input, array( 'id' => 'search', 'name' => 'search', 'value' => 'Search query', ) ); } public function testTextFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::textFieldControlGroup('text', 'text'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=text]')); } public function testPasswordFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::passwordFieldControlGroup('password', 'secret'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=password]')); } public function testUrlFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::urlFieldControlGroup('url', 'url'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=url]')); } public function testEmailFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::emailFieldControlGroup('email', 'email'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=email]')); } public function testNumberFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::numberFieldControlGroup('number', 'number'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=number]')); } public function testRangeFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::rangeFieldControlGroup('range', 'range'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=range]')); } public function testDateFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::dateFieldControlGroup('date', 'date'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=date]')); } public function testFileFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::fileFieldControlGroup('file', 'file'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=file]')); } public function testTextAreaControlGroup() { $I = $this->codeGuy; $html = TbHtml::textAreaControlGroup('textarea', 'Textarea text'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('textarea')); } public function testRadioButtonControlGroup() { $I = $this->codeGuy; $html = TbHtml::radioButtonControlGroup( 'radio', false, array( 'label' => 'Label text', ) ); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.radio'); $I->seeNodeChildren($label, array('input[type=radio]')); } public function testCheckBoxControlGroup() { $I = $this->codeGuy; $html = TbHtml::checkBoxControlGroup( 'checkbox', false, array( 'label' => 'Label text', ) ); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.checkbox'); $I->seeNodeChildren($label, array('input[type=checkbox]')); } public function testDropDownListControlGroup() { $I = $this->codeGuy; $html = TbHtml::dropDownListControlGroup( 'dropdown', '', array('1', '2', '3', '4', '5') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('select')); } public function testListBoxControlGroup() { $I = $this->codeGuy; $html = TbHtml::listBoxControlGroup( 'listbox', '', array('1', '2', '3', '4', '5') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('select')); } public function testRadioButtonListControlGroup() { $I = $this->codeGuy; $html = TbHtml::radioButtonListControlGroup( 'radioList', '1', array('Option 1', 'Option 2', 'Option 3') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('label.radio', 'label.radio', 'label.radio')); } public function testInlineRadioButtonListControlGroup() { $I = $this->codeGuy; $html = TbHtml::inlineRadioButtonListControlGroup( 'radioList', '1', array('Option 1', 'Option 2', 'Option 3') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('label.radio.inline', 'label.radio.inline', 'label.radio.inline')); } public function testCheckBoxListControlGroup() { $I = $this->codeGuy; $html = TbHtml::checkBoxListControlGroup( 'checkboxList', array('0', '2'), array('Option 1', 'Option 2', 'Option 3') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('label.checkbox', 'label.checkbox', 'label.checkbox')); } public function testInlineCheckBoxListControlGroup() { $I = $this->codeGuy; $html = TbHtml::inlineCheckBoxListControlGroup( 'checkboxList', array('0', '2'), array('Option 1', 'Option 2', 'Option 3') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren( $controls, array('label.checkbox.inline', 'label.checkbox.inline', 'label.checkbox.inline') ); } public function testUneditableFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::uneditableFieldControlGroup('Uneditable text'); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('span.uneditable-input')); } public function testSearchQueryControlGroup() { $I = $this->codeGuy; $html = TbHtml::searchQueryControlGroup('Search query'); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('input[type=text].search-query')); } public function testControlGroup() { $I = $this->codeGuy; $html = TbHtml::controlGroup( TbHtml::INPUT_TYPE_TEXT, 'text', '', array( 'color' => TbHtml::INPUT_COLOR_SUCCESS, 'groupOptions' => array('class' => 'group'), 'label' => 'Label text', 'labelOptions' => array('class' => 'label'), 'help' => 'Help text', 'helpOptions' => array('class' => 'help'), ) ); $group = $I->createNode($html, 'div.control-group'); $I->seeNodeCssClass($group, 'success group'); $I->seeNodeChildren($group, array('label.control-label', 'div.controls')); $label = $group->filter('label.control-label'); $I->seeNodeCssClass($label, 'label'); $I->seeNodeAttribute($label, 'for', 'text'); $I->seeNodeText($label, 'Label text'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('input', 'span')); $input = $controls->filter('input[type=text]'); $I->seeNodeAttributes( $input, array( 'id' => 'text', 'name' => 'text', 'value' => '', ) ); $help = $controls->filter('span.help-inline'); $I->seeNodeCssClass($help, 'help'); $I->seeNodeText($help, 'Help text'); $html = TbHtml::controlGroup( TbHtml::INPUT_TYPE_RADIOBUTTON, 'radio', true, array( 'label' => 'Label text', ) ); $group = $I->createNode($html, 'div.control-group'); $I->seeNodeChildren($group, array('div.controls')); $controls = $group->filter('div.controls'); $label = $controls->filter('label.radio'); $I->seeNodePattern($label, '/> Label text$/'); $radio = $label->filter('input[type=radio]'); $I->seeNodeAttributes( $radio, array( 'checked' => 'checked', 'id' => 'radio', 'name' => 'radio', 'value' => '1', ) ); } public function testCustomControlGroup() { $I = $this->codeGuy; $html = TbHtml::customControlGroup( '
', 'custom', array( 'label' => false, ) ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('div.widget')); } public function testActiveTextField() { $I = $this->codeGuy; $html = TbHtml::activeTextField( new Dummy, 'text', array( 'class' => 'input' ) ); $input = $I->createNode($html, 'input[type=text]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'Dummy_text', 'name' => 'Dummy[text]', 'value' => 'text', ) ); $html = TbHtml::activeTextField( new Dummy, 'text', array( 'prepend' => 'Prepend text', ) ); $div = $I->createNode($html, 'div'); $I->seeNodeCssClass($div, 'input-prepend'); $I->seeNodeChildren($div, array('span.add-on', 'input')); $span = $div->filter('span.add-on'); $I->seeNodeText($span, 'Prepend text'); $html = TbHtml::activeTextField( new Dummy, 'text', array( 'append' => 'Append text', ) ); $div = $I->createNode($html, 'div'); $I->seeNodeCssClass($div, 'input-append'); $I->seeNodeChildren($div, array('input', 'span')); $span = $div->filter('span.add-on'); $I->seeNodeText($span, 'Append text'); $html = TbHtml::activeTextField( new Dummy, 'text', array( 'prepend' => 'Prepend text', 'append' => 'Append text', ) ); $div = $I->createNode($html, 'div'); $I->seeNodeCssClass($div, 'input-prepend input-append'); $I->seeNodeChildren($div, array('span.add-on', 'input', 'span.add-on')); } public function testActivePasswordField() { $I = $this->codeGuy; $html = TbHtml::activePasswordField( new Dummy, 'password', array( 'class' => 'input' ) ); $input = $I->createNode($html, 'input[type=password]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'Dummy_password', 'name' => 'Dummy[password]', 'value' => 'secret', ) ); } public function testActiveUrlField() { $I = $this->codeGuy; $html = TbHtml::activeUrlField( new Dummy, 'url', array( 'class' => 'input' ) ); $input = $I->createNode($html, 'input[type=url]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'Dummy_url', 'name' => 'Dummy[url]', 'value' => 'http://www.getyiistrap.com', ) ); } public function testActiveEmailField() { $I = $this->codeGuy; $html = TbHtml::activeEmailField( new Dummy, 'email', array( 'class' => 'input' ) ); $input = $I->createNode($html, 'input[type=email]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'Dummy_email', 'name' => 'Dummy[email]', 'value' => 'christoffer.niska@gmail.com', ) ); } public function testActiveNumberField() { $I = $this->codeGuy; $html = TbHtml::activeNumberField( new Dummy, 'number', array( 'class' => 'input' ) ); $input = $I->createNode($html, 'input[type=number]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'Dummy_number', 'name' => 'Dummy[number]', 'value' => '42', ) ); } public function testActiveRangeField() { $I = $this->codeGuy; $html = TbHtml::activeRangeField( new Dummy, 'range', array( 'class' => 'input' ) ); $input = $I->createNode($html, 'input[type=range]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'Dummy_range', 'name' => 'Dummy[range]', 'value' => '3.33', ) ); } public function testActiveDateField() { $I = $this->codeGuy; $html = TbHtml::activeDateField( new Dummy, 'date', array( 'class' => 'input' ) ); $input = $I->createNode($html, 'input[type=date]'); $I->seeNodeAttributes( $input, array( 'class' => 'input', 'id' => 'Dummy_date', 'name' => 'Dummy[date]', 'value' => '2013-08-28', ) ); } public function testActiveTextArea() { $I = $this->codeGuy; $html = TbHtml::activeTextArea( new Dummy, 'textarea', array( 'class' => 'textarea', ) ); $textarea = $I->createNode($html, 'textarea'); $I->seeNodeAttributes( $textarea, array( 'class' => 'textarea', 'id' => 'Dummy_textarea', 'name' => 'Dummy[textarea]', ) ); $I->seeNodeText($textarea, 'Textarea text'); } public function testActiveRadioButton() { $I = $this->codeGuy; $html = TbHtml::activeRadioButton( new Dummy, 'radio', array( 'class' => 'input', 'label' => 'Label text', ) ); $body = $I->createNode($html, 'body'); $hidden = $body->filter('input[type=hidden]'); $I->seeNodeAttributes( $hidden, array( 'id' => 'ytDummy_radio', 'name' => 'Dummy[radio]', 'value' => '0', ) ); $label = $body->filter('label'); $I->seeNodeCssClass($label, 'radio'); $radio = $label->filter('input[type=radio]'); $I->seeNodeAttributes( $radio, array( 'class' => 'input', 'checked' => 'checked', 'id' => 'Dummy_radio', 'name' => 'Dummy[radio]', 'value' => '1', ) ); $I->seeNodePattern($label, '/> Label text$/'); } public function testActiveCheckBox() { $I = $this->codeGuy; $html = TbHtml::activeCheckBox( new Dummy, 'checkbox', array( 'class' => 'input', 'label' => 'Label text', ) ); $body = $I->createNode($html, 'body'); $hidden = $body->filter('input[type=hidden]'); $I->seeNodeAttributes( $hidden, array( 'id' => 'ytDummy_checkbox', 'name' => 'Dummy[checkbox]', 'value' => '0', ) ); $label = $body->filter('label'); $I->seeNodeCssClass($label, 'checkbox'); $checkbox = $label->filter('input[type=checkbox]'); $I->seeNodeAttributes( $checkbox, array( 'class' => 'input', 'id' => 'Dummy_checkbox', 'name' => 'Dummy[checkbox]', 'value' => '1', ) ); $I->seeNodePattern($label, '/> Label text$/'); } public function testActiveDropDownList() { $I = $this->codeGuy; $html = TbHtml::activeDropDownList( new Dummy, 'dropdown', array('1', '2', '3', '4', '5'), array( 'class' => 'list', 'empty' => 'Empty text', 'size' => TbHtml::INPUT_SIZE_LARGE, 'textAlign' => TbHtml::TEXT_ALIGN_CENTER, ) ); $select = $I->createNode($html, 'select'); $I->seeNodeCssClass($select, 'input-large text-center list'); $I->dontSeeNodeAttribute($select, 'size'); } public function testActiveListBox() { $I = $this->codeGuy; $html = TbHtml::activeListBox( new Dummy, 'listbox', array('1', '2', '3', '4', '5'), array( 'class' => 'list', 'empty' => 'Empty text', 'size' => TbHtml::INPUT_SIZE_LARGE, 'textAlign' => TbHtml::TEXT_ALIGN_CENTER, ) ); $select = $I->createNode($html, 'select'); $I->seeNodeCssClass($select, 'input-large text-center list'); $I->seeNodeAttributes( $select, array( 'name' => 'Dummy[listbox]', 'id' => 'Dummy_listbox', 'size' => 4, ) ); $html = TbHtml::activeListBox( new Dummy, 'listbox', array('1', '2', '3', '4', '5'), array( 'multiple' => true, ) ); $select = $I->createNode($html, 'select'); $I->seeNodeAttribute($select, 'name', 'Dummy[listbox][]'); } public function testActiveRadioButtonList() { // todo: ensure that this test is actually correct. $I = $this->codeGuy; $html = TbHtml::activeRadioButtonList( new Dummy, 'radioList', array('Option 1', 'Option 2', 'Option 3') ); $body = $I->createNode($html); $I->seeNodeChildren( $body, array('input[type=hidden]', 'label.radio', 'label.radio', 'label.radio') ); $label = $body->filter('label')->first(); $I->seeNodePattern($label, '/> Option 1$/'); $input = $label->filter('input[type=radio]'); $I->seeNodeAttributes( $input, array( 'id' => 'Dummy_radioList_0', 'name' => 'Dummy[radioList]', 'value' => '0', ) ); } public function testActiveInlineRadioButtonList() { $I = $this->codeGuy; $html = TbHtml::activeInlineRadioButtonList( new Dummy, 'radioList', array('Option 1', 'Option 2', 'Option 3') ); $container = $I->createNode($html); $I->seeNodeChildren($container, array('label.radio.inline', 'label.radio.inline', 'label.radio.inline')); } public function testActiveCheckBoxList() { // todo: ensure that this test is actually correct. $I = $this->codeGuy; $html = TbHtml::activeCheckBoxList( new Dummy, 'checkboxList', array('Option 1', 'Option 2', 'Option 3') ); $container = $I->createNode($html); $I->seeNodeChildren( $container, array('input[type=hidden]', 'label.checkbox', 'label.checkbox', 'label.checkbox') ); $label = $container->filter('label')->first(); $I->seeNodePattern($label, '/> Option 1$/'); $input = $label->filter('input[type=checkbox]'); $I->seeNodeAttributes( $input, array( 'id' => 'Dummy_checkboxList_0', 'name' => 'Dummy[checkboxList][]', 'value' => '0', ) ); } public function testActiveInlineCheckBoxList() { $I = $this->codeGuy; $html = TbHtml::activeInlineCheckBoxList( new Dummy, 'checkboxList', array('Option 1', 'Option 2', 'Option 3') ); $container = $I->createNode($html); $I->seeNodeChildren( $container, array('label.checkbox.inline', 'label.checkbox.inline', 'label.checkbox.inline') ); } public function testActiveUneditableField() { $I = $this->codeGuy; $html = TbHtml::activeUneditableField( new Dummy, 'uneditable', array( 'class' => 'span' ) ); $span = $I->createNode($html, 'span.uneditable-input'); $I->seeNodeCssClass($span, 'span'); $I->seeNodeText($span, 'Uneditable text'); } public function testActiveSearchQueryField() { $I = $this->codeGuy; $model = new Dummy; $html = TbHtml::activeSearchQueryField( $model, 'search', array( 'class' => 'input' ) ); $input = $I->createNode($html, 'input[type=text].search-query'); $I->seeNodeCssClass($input, 'input'); $I->seeNodeAttributes( $input, array( 'id' => 'Dummy_search', 'name' => 'Dummy[search]', 'value' => 'Search query', ) ); } public function testActiveTextFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeTextFieldControlGroup(new Dummy, 'text'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=text]')); } public function testActivePasswordFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::activePasswordFieldControlGroup(new Dummy, 'password'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=password]')); } public function testActiveUrlFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeUrlFieldControlGroup(new Dummy, 'url'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=url]')); } public function testActiveEmailFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeEmailFieldControlGroup(new Dummy, 'email'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=email]')); } public function testActiveNumberFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeNumberFieldControlGroup(new Dummy, 'number'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=number]')); } public function testActiveRangeFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeRangeFieldControlGroup(new Dummy, 'range'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=range]')); } public function testActiveDateFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeDateFieldControlGroup(new Dummy, 'date'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=date]')); } public function testActiveFileFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeFileFieldControlGroup(new Dummy, 'file'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('input[type=file]')); } public function testActiveTextAreaControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeTextAreaControlGroup(new Dummy, 'textarea'); $group = $I->createNode($html, 'div.control-group'); $label = $group->filter('label.control-label'); $I->seeNodeChildren($label, array('textarea')); } public function testActiveRadioButtonControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeRadioButtonControlGroup(new Dummy, 'radio'); $group = $I->createNode($html, 'div.control-group'); $I->seeNodeChildren($group, array('input[type=hidden]', 'label.radio')); $label = $group->filter('label.radio'); $I->seeNodeChildren($label, array('input[type=radio]')); } public function testActiveCheckBoxControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeCheckBoxControlGroup(new Dummy, 'checkbox'); $group = $I->createNode($html, 'div.control-group'); $I->seeNodeChildren($group, array('input[type=hidden]', 'label.checkbox')); $label = $group->filter('label.checkbox'); $I->seeNodeChildren($label, array('input[type=checkbox]')); } public function testActiveDropDownListControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeDropDownListControlGroup( new Dummy, 'dropdown', array('1', '2', '3', '4', '5') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('select')); } public function testActiveListBoxControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeListBoxControlGroup( new Dummy, 'listbox', array('1', '2', '3', '4', '5') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('select')); } public function testActiveRadioButtonListControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeRadioButtonListControlGroup( new Dummy, 'radioList', array('Option 1', 'Option 2', 'Option 3') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('input[type=hidden]', 'label.radio', 'label.radio', 'label.radio')); } public function testActiveInlineRadioButtonListControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeInlineRadioButtonListControlGroup( new Dummy, 'radioList', array('Option 1', 'Option 2', 'Option 3') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren( $controls, array('input[type=hidden]', 'label.radio.inline', 'label.radio.inline', 'label.radio.inline') ); } public function testActiveCheckBoxListControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeCheckBoxListControlGroup( new Dummy, 'checkboxList', array('0', '2'), array('Option 1', 'Option 2', 'Option 3') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren( $controls, array('input[type=hidden]', 'label.checkbox', 'label.checkbox', 'label.checkbox') ); } public function testActiveInlineCheckBoxListControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeInlineCheckBoxListControlGroup( new Dummy, 'checkboxList', array('0', '2'), array('Option 1', 'Option 2', 'Option 3') ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren( $controls, array('input[type=hidden]', 'label.checkbox.inline', 'label.checkbox.inline', 'label.checkbox.inline') ); } public function testActiveUneditableFieldControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeUneditableFieldControlGroup(new Dummy, 'uneditable'); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('span.uneditable-input')); } public function testActiveSearchQueryControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeSearchQueryControlGroup(new Dummy, 'search'); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('input[type=text].search-query')); } public function testActiveControlGroup() { $I = $this->codeGuy; $html = TbHtml::activeControlGroup( TbHtml::INPUT_TYPE_TEXT, new Dummy, 'text', array( 'color' => TbHtml::INPUT_COLOR_ERROR, 'groupOptions' => array('class' => 'group'), 'labelOptions' => array('class' => 'label'), 'help' => 'Help text', 'helpOptions' => array('class' => 'help'), ) ); $group = $I->createNode($html, 'div.control-group'); $I->seeNodeCssClass($group, 'error group'); $I->seeNodeChildren($group, array('label.control-label', 'div.controls')); $label = $group->filter('label.control-label'); $I->seeNodeCssClass($label, 'label'); $I->seeNodeAttribute($label, 'for', 'Dummy_text'); $I->seeNodeText($label, 'Text'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('input', 'span')); $input = $controls->filter('input[type=text]'); $I->seeNodeAttributes( $input, array( 'id' => 'Dummy_text', 'name' => 'Dummy[text]', 'value' => 'text', ) ); $help = $controls->filter('span.help-inline'); $I->seeNodeCssClass($help, 'help'); $I->seeNodeText($help, 'Help text'); $html = TbHtml::activeControlGroup( TbHtml::INPUT_TYPE_RADIOBUTTON, new Dummy, 'radio', array( 'labelOptions' => array('class' => 'label'), ) ); $group = $I->createNode($html, 'div.control-group'); $I->seeNodeChildren($group, array('div.controls')); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('input[type=hidden]', 'label.radio')); $hidden = $controls->filter('input[type=hidden]'); $I->seeNodeAttributes( $hidden, array( 'id' => 'ytDummy_radio', 'name' => 'Dummy[radio]', 'value' => '0', ) ); $label = $controls->filter('label.radio'); $I->seeNodePattern($label, '/> Radio$/'); $radio = $label->filter('input[type=radio]'); $I->seeNodeAttributes( $radio, array( 'checked' => 'checked', 'id' => 'Dummy_radio', 'name' => 'Dummy[radio]', 'value' => '1', ) ); } public function testActiveCustomControlGroup() { $I = $this->codeGuy; $html = TbHtml::customActiveControlGroup( '
', new Dummy, 'text', array( 'label' => false, ) ); $group = $I->createNode($html, 'div.control-group'); $controls = $group->filter('div.controls'); $I->seeNodeChildren($controls, array('div.widget')); } public function testErrorSummary() { $I = $this->codeGuy; $model = new Dummy; $model->addError('text', 'Error text'); $html = TbHtml::errorSummary( $model, 'Header text', 'Footer text', array( 'class' => 'summary' ) ); $div = $I->createNode($html, 'div.alert'); $I->seeNodeCssClass($div, 'alert-block alert-error summary'); $I->seeNodePattern($div, '/^Header text/'); $I->seeNodePattern($div, '/Footer text$/'); $li = $div->filter('ul > li')->first(); $I->seeNodeText($li, 'Error text'); } public function testError() { $I = $this->codeGuy; $model = new Dummy; $model->addError('text', 'Error text'); $html = TbHtml::error( $model, 'text', array( 'class' => 'error', ) ); $span = $I->createNode($html, 'span.help-inline'); $I->seeNodeCssClass($span, 'error'); $I->seeNodeText($span, 'Error text'); } public function testControls() { $I = $this->codeGuy; $html = TbHtml::controls( '
', array( 'before' => 'Before text', 'after' => 'After text', ) ); $controls = $I->createNode($html, 'div.controls'); $I->seeNodeChildren($controls, array('div.control', 'div.control')); $I->seeNodePattern($controls, '/^Before textseeNodePattern($controls, '/>After text$/'); } public function testControlsRow() { $I = $this->codeGuy; $html = TbHtml::controlsRow( array( '
', '
', ) ); $controls = $I->createNode($html, 'div.controls'); $I->seeNodeCssClass($controls, 'controls-row'); $I->seeNodeChildren($controls, array('div.control', 'div.control')); } public function testFormActions() { $I = $this->codeGuy; $html = TbHtml::formActions('
'); $this->assertEquals( '
', $html ); $actions = $I->createNode($html, 'div.form-actions'); $I->seeNodeChildren($actions, array('div.action', 'div.action')); $html = TbHtml::formActions( array( '
', '
', ) ); $actions = $I->createNode($html, 'div.form-actions'); $I->seeNodeChildren($actions, array('div.action', 'div.action')); } public function testSearchForm() { $I = $this->codeGuy; $html = TbHtml::searchForm( '#', 'post', array( 'class' => 'form', ) ); $form = $I->createNode($html, 'form.form-search'); $I->seeNodeCssClass($form, 'form'); $I->seeNodeAttributes( $form, array( 'action' => '#', 'method' => 'post' ) ); $input = $form->filter('input[type=text]'); $I->seeNodeCssClass($input, 'search-query'); } public function testLink() { $I = $this->codeGuy; $html = TbHtml::link( 'Link', '#', array( 'class' => 'link' ) ); $a = $I->createNode($html, 'a.link'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Link'); } public function testButton() { $I = $this->codeGuy; $html = TbHtml::button( 'Button', array( 'class' => 'button', 'name' => 'button', 'color' => TbHtml::BUTTON_COLOR_PRIMARY, 'size' => TbHtml::BUTTON_SIZE_LARGE, 'block' => true, 'disabled' => true, 'loading' => 'Loading text', 'toggle' => true, 'icon' => TbHtml::ICON_CHECK ) ); $button = $I->createNode($html, 'button[type=button].btn'); $I->seeNodeCssClass($button, 'btn-primary btn-large btn-block disabled button'); $I->seeNodeAttributes( $button, array( 'name' => 'button', 'data-loading-text' => 'Loading text', 'data-toggle' => 'button', 'disabled' => 'disabled', ) ); $I->seeNodeChildren($button, array('i.icon-check')); $I->seeNodePattern($button, '/> Button$/'); } public function testHtmlButton() { $I = $this->codeGuy; $html = TbHtml::htmlButton( 'Button', array( 'class' => 'button', 'name' => 'button', ) ); $button = $I->createNode($html, 'button[type=button].btn'); $I->seeNodeCssClass($button, 'button'); $I->seeNodeAttribute($button, 'name', 'button'); $I->seeNodeText($button, 'Button'); } public function testSubmitButton() { $I = $this->codeGuy; $html = TbHtml::submitButton( 'Submit', array( 'class' => 'button', 'name' => 'button', ) ); $button = $I->createNode($html, 'button[type=submit].btn'); $I->seeNodeCssClass($button, 'button'); $I->seeNodeAttribute($button, 'name', 'button'); $I->seeNodeText($button, 'Submit'); } public function testResetButton() { $I = $this->codeGuy; $html = TbHtml::resetButton( 'Reset', array( 'class' => 'button', 'name' => 'button', ) ); $button = $I->createNode($html, 'button[type=reset].btn'); $I->seeNodeCssClass($button, 'button'); $I->seeNodeAttribute($button, 'name', 'button'); $I->seeNodeText($button, 'Reset'); } public function testImageButton() { $I = $this->codeGuy; $html = TbHtml::imageButton( 'image.png', array( 'class' => 'button', 'name' => 'button', ) ); $button = $I->createNode($html, 'input[type=image].btn'); $I->seeNodeCssClass($button, 'button'); $I->seeNodeAttributes( $button, array( 'name' => 'button', 'src' => 'image.png', ) ); } public function testLinkButton() { $I = $this->codeGuy; $html = TbHtml::linkButton( 'Link', array( 'class' => 'button', ) ); $a = $I->createNode($html, 'a.btn'); $I->seeNodeCssClass($a, 'button'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Link'); } public function testAjaxLink() { $I = $this->codeGuy; $html = TbHtml::ajaxLink( 'Link', '#', array(), // todo: figure out a way to test the ajax options as well. array( 'id' => 'button', 'class' => 'button', ) ); $a = $I->createNode($html, 'a'); $I->seeNodeCssClass($a, 'button'); $I->seeNodeAttributes( $a, array( 'id' => 'button', 'href' => '#', ) ); $I->seeNodeText($a, 'Link'); } public function testAjaxButton() { $I = $this->codeGuy; $html = TbHtml::ajaxButton( 'Button', '#', array(), array( 'id' => 'button', 'class' => 'button', ) ); $button = $I->createNode($html, 'button[type=button].btn'); $I->seeNodeCssClass($button, 'button'); $I->seeNodeAttribute($button, 'id', 'button'); $I->seeNodeText($button, 'Button'); } public function testAjaxSubmitButton() { $I = $this->codeGuy; $html = TbHtml::ajaxSubmitButton( 'Submit', '#', array(), array( 'class' => 'button', 'id' => 'button', 'name' => 'button' ) ); $button = $I->createNode($html, 'button[type=submit].btn'); $I->seeNodeCssClass($button, 'button'); $I->seeNodeAttributes( $button, array( 'id' => 'button', 'name' => 'button' ) ); $I->seeNodeText($button, 'Submit'); } public function testImageRounded() { $I = $this->codeGuy; $html = TbHtml::imageRounded( 'image.png', 'Alternative text', array( 'class' => 'image', ) ); $img = $I->createNode($html, 'img.img-rounded'); $I->seeNodeCssClass($img, 'image'); $I->seeNodeAttributes( $img, array( 'src' => 'image.png', 'alt' => 'Alternative text', ) ); } public function testImageCircle() { $I = $this->codeGuy; $html = TbHtml::imageCircle( 'image.png', 'Alternative text', array( 'class' => 'image', ) ); $img = $I->createNode($html, 'img.img-circle'); $I->seeNodeCssClass($img, 'image'); $I->seeNodeAttributes( $img, array( 'src' => 'image.png', 'alt' => 'Alternative text', ) ); } public function testImagePolaroid() { $I = $this->codeGuy; $html = TbHtml::imagePolaroid( 'image.png', 'Alternative text', array( 'class' => 'image', ) ); $img = $I->createNode($html, 'img.img-polaroid'); $I->seeNodeCssClass($img, 'image'); $I->seeNodeAttributes( $img, array( 'src' => 'image.png', 'alt' => 'Alternative text', ) ); } public function testIcon() { $I = $this->codeGuy; $html = TbHtml::icon( TbHtml::ICON_CHECK, array( 'class' => 'icon', ) ); $i = $I->createNode($html, 'i.icon-check'); $I->seeNodeEmpty($i); $html = TbHtml::icon( TbHtml::ICON_REMOVE, array( 'color' => TbHtml::ICON_COLOR_WHITE, ) ); $i = $I->createNode($html, 'i.icon-remove'); $I->seeNodeCssClass($i, 'icon-white'); $I->seeNodeEmpty($i); $html = TbHtml::icon('pencil white'); $i = $I->createNode($html, 'i.icon-pencil'); $I->seeNodeCssClass($i, 'icon-white'); $I->seeNodeEmpty($i); $html = TbHtml::icon(array()); $this->assertEquals('', $html); } public function testDropdownToggleLink() { $I = $this->codeGuy; $html = TbHtml::dropdownToggleLink( 'Link', array( 'class' => 'link', ) ); $a = $I->createNode($html, 'a.btn.dropdown-toggle'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttributes( $a, array( 'href' => '#', 'data-toggle' => 'dropdown', ) ); $I->seeNodePattern($a, '/^Link seeNodeChildren($a, array('b.caret')); } public function testDropdownToggleButton() { $I = $this->codeGuy; $html = TbHtml::dropdownToggleButton( 'Button', array( 'class' => 'button', 'name' => 'button', ) ); $button = $I->createNode($html, 'button[type=button].btn.dropdown-toggle'); $I->seeNodeCssClass($button, 'button'); $I->seeNodeAttributes( $button, array( 'name' => 'button', 'data-toggle' => 'dropdown', ) ); $I->seeNodePattern($button, '/^Button seeNodeChildren($button, array('b.caret')); } public function testDropdownToggleMenuLink() { $I = $this->codeGuy; $html = TbHtml::dropdownToggleMenuLink( 'Link', '#', array( 'class' => 'link', ) ); $a = $I->createNode($html, 'a.dropdown-toggle'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttributes( $a, array( 'href' => '#', 'data-toggle' => 'dropdown', ) ); $I->seeNodePattern($a, '/^Link seeNodeChildren($a, array('b.caret')); } public function testButtonGroup() { $I = $this->codeGuy; $buttons = array( array('label' => 'Left'), array( 'label' => 'Middle', 'items' => array( array('label' => 'Action', 'url' => '#'), ), 'htmlOptions' => array('color' => TbHtml::BUTTON_COLOR_INVERSE), ), array('label' => 'Right', 'visible' => false), ); $html = TbHtml::buttonGroup( $buttons, array( 'class' => 'div', 'color' => TbHtml::BUTTON_COLOR_PRIMARY, 'toggle' => TbHtml::BUTTON_TOGGLE_CHECKBOX, ) ); $group = $I->createNode($html, 'div.btn-group'); $I->seeNodeCssClass($group, 'div'); $I->seeNodeAttribute($group, 'data-toggle', 'buttons-checkbox'); $I->seeNodeNumChildren($group, 2); foreach ($group->children() as $i => $btnElement) { $btn = $I->createNode($btnElement); if ($i === 1) { $I->seeNodeChildren($btn, array('a.dropdown-toggle', 'ul.dropdown-menu')); $a = $btn->filter('a.dropdown-toggle'); $I->seeNodeCssClass($a, 'btn-inverse'); $I->seeNodeText($a, 'Middle'); } else { $I->seeNodeCssClass($btn, 'btn'); $I->seeNodeAttribute($btn, 'href', '#'); $I->seeNodeCssClass($btn, 'btn-primary'); $I->seeNodeText($btn, $buttons[$i]['label']); } } $html = TbHtml::buttonGroup(array()); $this->assertEquals('', $html); } public function testVerticalButtonGroup() { $I = $this->codeGuy; $html = TbHtml::verticalButtonGroup( array( array('icon' => TbHtml::ICON_ALIGN_LEFT), array('icon' => TbHtml::ICON_ALIGN_CENTER), array('icon' => TbHtml::ICON_ALIGN_RIGHT), array('icon' => TbHtml::ICON_ALIGN_JUSTIFY), ) ); $group = $I->createNode($html, 'div.btn-group'); $I->seeNodeCssClass($group, 'btn-group-vertical'); } public function testButtonToolbar() { $I = $this->codeGuy; $groups = array( array( 'items' => array( array('label' => '1', 'color' => TbHtml::BUTTON_COLOR_DANGER), array('label' => '2'), array('label' => '3'), array('label' => '4'), ), 'htmlOptions' => array( 'color' => TbHtml::BUTTON_COLOR_INVERSE, ), ), array( 'items' => array( array('label' => '5'), array('label' => '6'), array('label' => '7'), ) ), array( 'visible' => false, 'items' => array( array('label' => '8'), ) ), array( 'items' => array() ), ); $html = TbHtml::buttonToolbar( $groups, array( 'class' => 'div', 'color' => TbHtml::BUTTON_COLOR_PRIMARY, ) ); $toolbar = $I->createNode($html, 'div.btn-toolbar'); $I->seeNodeCssClass($toolbar, 'div'); foreach ($toolbar->children() as $i => $groupElement) { $group = $I->createNode($groupElement); $I->seeNodeCssClass($group, 'btn-group'); foreach ($group->children() as $j => $btnElement) { $btn = $I->createNode($btnElement); $I->seeNodeCssClass($btn, 'btn'); if ($i === 0) { $I->seeNodeCssClass($btn, $j === 0 ? 'btn-danger' : 'btn-inverse'); } else { $I->seeNodeCssClass($btn, 'btn-primary'); } $I->seeNodeText($btn, $groups[$i]['items'][$j]['label']); } } $html = TbHtml::buttonToolbar(array()); $this->assertEquals('', $html); } public function testButtonDropdown() { $I = $this->codeGuy; $items = array( array( 'label' => 'Action', 'url' => '#', 'class' => 'item', 'linkOptions' => array('class' => 'link'), ), array('label' => 'Another action', 'url' => '#'), array('label' => 'Something else here', 'url' => '#'), TbHtml::menuDivider(), array('label' => 'Separate link', 'url' => '#'), ); $html = TbHtml::buttonDropdown( 'Action', $items, array( 'class' => 'link', 'dropup' => true, 'groupOptions' => array('class' => 'group'), 'menuOptions' => array('class' => 'menu'), ) ); $group = $I->createNode($html, 'div.btn-group'); $I->seeNodeCssClass($group, 'dropup group'); $I->seeNodeChildren($group, array('a.dropdown-toggle', 'ul.dropdown-menu')); $a = $group->filter('a.dropdown-toggle'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttributes( $a, array( 'data-toggle' => 'dropdown', 'href' => '#', ) ); $I->seeNodePattern($a, '/Action filter('b.caret'); $I->seeNodeEmpty($b); $ul = $group->filter('ul.dropdown-menu'); foreach ($ul->children() as $i => $liElement) { $li = $I->createNode($liElement); if ($i === 3) { $I->seeNodeCssClass($li, 'divider'); } else { $a = $li->filter('a'); if ($i === 0) { $I->seeNodeCssClass($li, 'item'); $I->seeNodeCssClass($a, 'link'); } $I->seeNodeAttributes( $a, array( 'href' => '#', 'tabindex' => '-1', ) ); $I->seeNodeText($a, $items[$i]['label']); } } } public function testSplitButtonDropdown() { $I = $this->codeGuy; $items = array( array('label' => 'Action', 'url' => '#'), array('label' => 'Another action', 'url' => '#'), array('label' => 'Something else here', 'url' => '#'), TbHtml::menuDivider(), array('label' => 'Separate link', 'url' => '#'), ); $html = TbHtml::splitButtonDropdown('Action', $items); $group = $I->createNode($html, 'div.btn-group'); $I->seeNodeChildren($group, array('a.btn', 'button.dropdown-toggle', 'ul.dropdown-menu')); CHtml::$count = 0; } public function testTabs() { $I = $this->codeGuy; $html = TbHtml::tabs( array( array('label' => 'Link', 'url' => '#'), ) ); $nav = $I->createNode($html, 'ul.nav'); $I->seeNodeCssClass($nav, 'nav-tabs'); } public function testStackedTabs() { $I = $this->codeGuy; $html = TbHtml::stackedTabs( array( array('label' => 'Link', 'url' => '#'), ) ); $nav = $I->createNode($html, 'ul.nav'); $I->seeNodeCssClass($nav, 'nav-tabs nav-stacked'); } public function testPills() { $I = $this->codeGuy; $html = TbHtml::pills( array( array('label' => 'Link', 'url' => '#'), ) ); $nav = $I->createNode($html, 'ul.nav'); $I->seeNodeCssClass($nav, 'nav-pills'); } public function testStackedPills() { $I = $this->codeGuy; $html = TbHtml::stackedPills( array( array('label' => 'Link', 'url' => '#'), ) ); $nav = $I->createNode($html, 'ul.nav'); $I->seeNodeCssClass($nav, 'nav-pills nav-stacked'); } public function testNavList() { $I = $this->codeGuy; $items = array( array('label' => 'Header text'), array('label' => 'Link', 'url' => '#'), TbHtml::menuDivider(), ); $html = TbHtml::navList( $items, array( 'stacked' => true, ) ); $nav = $I->createNode($html, 'ul.nav'); $I->seeNodeCssClass($nav, 'nav-list'); $I->dontSeeNodeCssClass($nav, 'nav-stacked'); foreach ($nav->children() as $i => $liElement) { $li = $I->createNode($liElement); if ($i === 0) { $I->seeNodeCssClass($li, 'nav-header'); $I->seeNodeText($li, 'Header text'); } else if ($i === 1) { $a = $li->filter('a'); $I->seeNodeText($a, $items[$i]['label']); } else if ($i === 2) { $I->seeNodeCssClass($li, 'divider'); } } } public function testNav() { $I = $this->codeGuy; $html = TbHtml::nav( TbHtml::NAV_TYPE_NONE, array( array('label' => 'Link', 'url' => '#'), ), array( 'stacked' => true, ) ); $nav = $I->createNode($html, 'ul.nav'); $I->seeNodeCssClass($nav, 'nav-stacked'); } public function testMenu() { $I = $this->codeGuy; $items = array( array('icon' => TbHtml::ICON_HOME, 'label' => 'Home', 'url' => '#'), array('label' => 'Profile', 'url' => '#', 'htmlOptions' => array('disabled' => true)), array('label' => 'Dropdown', 'active' => true, 'items' => array( array('label' => 'Action', 'url' => '#'), array('label' => 'Another action', 'url' => '#'), array('label' => 'Dropdown', 'items' => array( array('label' => 'Action', 'url' => '#'), )), TbHtml::menuDivider(), array('label' => 'Separate link', 'url' => '#'), )), array('label' => 'Hidden', 'url' => '#', 'visible' => false), ); $html = TbHtml::menu( $items, array( 'class' => 'ul', ) ); $nav = $I->createNode($html, 'ul'); $I->seeNodeAttribute($nav, 'role', 'menu'); $I->seeNodeNumChildren($nav, 3); foreach ($nav->children() as $i => $liElement) { $li = $I->createNode($liElement); if ($i === 2) { $I->seeNodeCssClass($li, 'dropdown active'); $I->seeNodeChildren($li, array('a.dropdown-toggle', 'ul.dropdown-menu')); $ul = $li->filter('ul.dropdown-menu'); $I->seeNodeNumChildren($ul, 5); foreach ($ul->children() as $j => $subLiElement) { $subLi = $I->createNode($subLiElement); if ($j === 2) { $I->seeNodeCssClass($subLi, 'dropdown-submenu'); $I->seeNodeChildren($subLi, array('a.dropdown-toggle', 'ul.dropdown-menu')); $subUl = $subLi->filter('ul.dropdown-menu'); $I->seeNodeNumChildren($subUl, 1); } else { if ($j === 3) { $I->seeNodeCssClass($subLi, 'divider'); } else { $subA = $subLi->filter('a'); $I->seeNodeText($subA, $items[$i]['items'][$j]['label']); } } } } else { if ($i === 0) { $I->seeNodeChildren($li, array('i.icon-home', 'a')); } if ($i === 2) { $I->seeNodeCssClass($li, 'disabled'); } $a = $li->filter('a'); $I->seeNodeAttributes( $a, array( 'href' => '#', 'tabindex' => '-1', ) ); $I->seeNodeText($a, $items[$i]['label']); } } $html = TbHtml::menu(array()); $this->assertEquals('', $html); } public function testMenuLink() { $I = $this->codeGuy; $html = TbHtml::menuLink( 'Link', '#', array( 'class' => 'item', 'linkOptions' => array('class' => 'link'), ) ); $li = $I->createNode($html, 'li'); $I->seeNodeCssClass($li, 'item'); $a = $li->filter('a'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Link'); } public function testMenuHeader() { $I = $this->codeGuy; $html = TbHtml::menuHeader( 'Header text', array( 'class' => 'item', ) ); $li = $I->createNode($html, 'li.nav-header'); $I->seeNodeCssClass($li, 'item'); $I->seeNodeText($li, 'Header text'); } public function testMenuDivider() { $I = $this->codeGuy; $html = TbHtml::menuDivider( array( 'class' => 'item', ) ); $li = $I->createNode($html, 'li.divider'); $I->seeNodeCssClass($li, 'item'); $I->seeNodeEmpty($li); } public function testTabbableTabs() { $I = $this->codeGuy; $html = TbHtml::tabbableTabs( array( array('label' => 'Link', 'content' => 'Tab content'), ) ); $tabbable = $I->createNode($html, 'div.tabbable'); $ul = $tabbable->filter('ul.nav'); $I->seeNodeCssClass($ul, 'nav-tabs'); } public function testTabbablePills() { $I = $this->codeGuy; $html = TbHtml::tabbablePills( array( array('label' => 'Link', 'content' => 'Tab content'), ) ); $tabbable = $I->createNode($html, 'div.tabbable'); $ul = $tabbable->filter('ul.nav'); $I->seeNodeCssClass($ul, 'nav-pills'); } public function testTabbable() { $I = $this->codeGuy; $tabs = array( array('label' => 'Home', 'content' => 'Tab content', 'active' => true), array('label' => 'Profile', 'content' => 'Tab content', 'id' => 'profile'), array( 'label' => 'Messages', 'items' => array( array('label' => '@fat', 'content' => 'Tab content'), array('label' => '@mdo', 'content' => 'Tab content'), ) ), ); $html = TbHtml::tabbable( TbHtml::NAV_TYPE_NONE, $tabs, array( 'class' => 'div', ) ); $tabbable = $I->createNode($html, 'div.tabbable'); $I->seeNodeCssClass($tabbable, 'div'); $ul = $tabbable->filter('ul.nav'); $I->seeNodeNumChildren($ul, 3); foreach ($ul->children() as $i => $liElement) { $li = $I->createNode($liElement); if ($i === 0) { $I->seeNodeCssClass($li, 'active'); } if ($i === 2) { $I->seeNodeCssClass($li, 'dropdown'); $a = $li->filter('a.dropdown-toggle'); $I->seeNodeText($a, 'Messages'); $subUl = $li->filter('ul.dropdown-menu'); foreach ($subUl->children() as $j => $subLiElement) { $subLi = $I->createNode($subLiElement); $subA = $subLi->filter('a'); $I->seeNodeAttributes( $subA, array( 'data-toggle' => 'tab', 'tabindex' => '-1', 'href' => '#tab_' . ($i + $j + 1), ) ); $I->seeNodeText($subA, $tabs[$i]['items'][$j]['label']); } } else { $a = $li->filter('a'); $I->seeNodeAttributes( $a, array( 'data-toggle' => 'tab', 'tabindex' => '-1', 'href' => '#' . (isset($tabs[$i]['id']) ? $tabs[$i]['id'] : 'tab_' . ($i + 1)), ) ); $I->seeNodeText($a, $tabs[$i]['label']); } } $content = $tabbable->filter('div.tab-content'); $I->seeNodeNumChildren($content, 4); foreach ($content->children() as $i => $paneElement) { $pane = $I->createNode($paneElement); $I->seeNodeCssClass($pane, 'tab-pane fade'); if ($i === 0) { $I->seeNodeCssClass($pane, 'active in'); } if ($i > 1) { $I->seeNodeText($pane, $tabs[2]['items'][$i - 2]['content']); } else { $I->seeNodeText($pane, $tabs[$i]['content']); } } } public function testNavbar() { $I = $this->codeGuy; $html = TbHtml::navbar( 'Navbar content', array( 'class' => 'nav', 'innerOptions' => array('class' => 'inner'), ) ); $navbar = $I->createNode($html, 'div.navbar'); $I->seeNodeCssClass($navbar, 'nav'); $inner = $navbar->filter('div.navbar-inner'); $I->seeNodeText($inner, 'Navbar content'); $html = TbHtml::navbar( '', array( 'display' => TbHtml::NAVBAR_DISPLAY_STATICTOP, ) ); $navbar = $I->createNode($html, 'div.navbar'); $I->seeNodeCssClass($navbar, 'navbar-static-top'); $html = TbHtml::navbar( '', array( 'display' => TbHtml::NAVBAR_DISPLAY_FIXEDTOP, ) ); $navbar = $I->createNode($html, 'div.navbar'); $I->seeNodeCssClass($navbar, 'navbar-fixed-top'); $html = TbHtml::navbar( '', array( 'display' => TbHtml::NAVBAR_DISPLAY_FIXEDBOTTOM, ) ); $navbar = $I->createNode($html, 'div.navbar'); $I->seeNodeCssClass($navbar, 'navbar-fixed-bottom'); $html = TbHtml::navbar( '', array( 'color' => TbHtml::NAVBAR_COLOR_INVERSE, ) ); $navbar = $I->createNode($html, 'div.navbar'); $I->seeNodeCssClass($navbar, 'navbar-inverse'); } public function testNavbarBrandLink() { $I = $this->codeGuy; $html = TbHtml::navbarBrandLink( 'Brand text', '#', array( 'class' => 'link', ) ); $a = $I->createNode($html, 'a.brand'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Brand text'); } public function testNavbarText() { $I = $this->codeGuy; $html = TbHtml::navbarText( 'Navbar text', array( 'class' => 'text', ) ); $p = $I->createNode($html, 'p.navbar-text'); $I->seeNodeCssClass($p, 'text'); $I->seeNodeText($p, 'Navbar text'); } public function testNavbarMenuDivider() { $I = $this->codeGuy; $html = TbHtml::navbarMenuDivider( array( 'class' => 'item', ) ); $li = $I->createNode($html, 'li.divider-vertical'); $I->seeNodeCssClass($li, 'item'); $I->seeNodeEmpty($li); } public function testNavbarForm() { $I = $this->codeGuy; $html = TbHtml::navbarForm('#'); $I->createNode($html, 'form.navbar-form'); } public function testNavbarSearchForm() { $I = $this->codeGuy; $html = TbHtml::navbarSearchForm('#'); $I->createNode($html, 'form.navbar-search'); } public function testNavbarCollapseLink() { $I = $this->codeGuy; $html = TbHtml::navbarCollapseLink( '#', array( 'class' => 'link', ) ); $a = $I->createNode($html, 'a.btn.btn-navbar'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttributes( $a, array( 'data-toggle' => 'collapse', 'data-target' => '#', ) ); $I->seeNodeChildren($a, array('span.icon-bar', 'span.icon-bar', 'span.icon-bar')); } public function testBreadcrumbs() { $I = $this->codeGuy; $links = array( 'Home' => '#', 'Library' => '#', 'Data', ); $html = TbHtml::breadcrumbs( $links, array( 'class' => 'ul', ) ); $ul = $I->createNode($html, 'ul.breadcrumb'); $I->seeNodeCssClass($ul, 'ul'); $I->seeNodeNumChildren($ul, 3); foreach ($ul->children() as $i => $liElement) { $li = $I->createNode($liElement); switch ($i) { case 0: $a = $li->filter('a'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Home'); break; case 1: $a = $li->filter('a'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Library'); break; case 2: $I->seeNodeText($li, 'Data'); break; } } } public function testPagination() { $I = $this->codeGuy; $items = array( array('label' => 'Prev', 'url' => '#', 'disabled' => true), array( 'label' => '1', 'url' => '#', 'active' => true, 'htmlOptions' => array('class' => 'item'), 'linkOptions' => array('class' => 'link'), ), array('label' => '2', 'url' => '#'), array('label' => '3', 'url' => '#'), array('label' => '4', 'url' => '#'), array('label' => '5', 'url' => '#'), array('label' => 'Next', 'url' => '#'), ); $html = TbHtml::pagination( $items, array( 'class' => 'div', 'listOptions' => array('class' => 'list'), ) ); $div = $I->createNode($html, 'div.pagination'); $I->seeNodeCssClass($div, 'div'); $ul = $div->filter('ul'); $I->seeNodeCssClass($ul, 'list'); $I->seeNodeNumChildren($ul, 7); foreach ($ul->children() as $i => $liElement) { $li = $I->createNode($liElement); $a = $li->filter('a'); if ($i === 0) { $I->seeNodeCssClass($li, 'disabled'); } if ($i === 1) { $I->seeNodeCssClass($li, 'item active'); $I->seeNodeCssClass($a, 'link'); } $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, $items[$i]['label']); } $html = TbHtml::pagination( $items, array( 'size' => TbHtml::PAGINATION_SIZE_LARGE, ) ); $div = $I->createNode($html, 'div.pagination'); $I->seeNodeCssClass($div, 'pagination-large'); $html = TbHtml::pagination( $items, array( 'align' => TbHtml::PAGINATION_ALIGN_CENTER, ) ); $div = $I->createNode($html, 'div.pagination'); $I->seeNodeCssClass($div, 'pagination-centered'); $html = TbHtml::pagination(array()); $this->assertEquals('', $html); } public function testPaginationLink() { $I = $this->codeGuy; $html = TbHtml::paginationLink( 'Link', '#', array( 'class' => 'item', 'linkOptions' => array('class' => 'link'), ) ); $li = $I->createNode($html, 'li'); $I->seeNodeCssClass($li, 'item'); $a = $li->filter('a'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttribute($a, 'href', '#'); } public function testPager() { $I = $this->codeGuy; $items = array( array( 'label' => 'Prev', 'url' => '#', 'previous' => true, 'htmlOptions' => array('disabled' => true), ), array('label' => 'Next', 'url' => '#', 'next' => true), ); $html = TbHtml::pager( $items, array( 'class' => 'list', ) ); $ul = $I->createNode($html, 'ul.pager'); $I->seeNodeCssClass($ul, 'list'); $I->seeNodeNumChildren($ul, 2); $prev = $ul->filter('li')->first(); $I->seeNodeCssClass($prev, 'previous disabled'); $a = $prev->filter('a'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Prev'); $next = $ul->filter('li')->last(); $I->seeNodeCssClass($next, 'next'); $a = $next->filter('a'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Next'); $html = TbHtml::pager(array()); $this->assertEquals('', $html); } public function testPagerLink() { $I = $this->codeGuy; $html = TbHtml::pagerLink( 'Link', '#', array( 'class' => 'item', 'linkOptions' => array('class' => 'link'), 'disabled' => true, ) ); $li = $I->createNode($html, 'li'); $I->seeNodeCssClass($li, 'item disabled'); $a = $li->filter('a'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Link'); $html = TbHtml::pagerLink( 'Previous', '#', array( 'previous' => true, ) ); $li = $I->createNode($html, 'li.previous'); $a = $li->filter('a'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Previous'); $html = TbHtml::pagerLink( 'Next', '#', array( 'next' => true, ) ); $li = $I->createNode($html, 'li.next'); $a = $li->filter('a'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Next'); } public function testLabel() { $I = $this->codeGuy; $html = TbHtml::labelTb( 'Label text', array( 'color' => TbHtml::LABEL_COLOR_INFO, 'class' => 'span', ) ); $span = $I->createNode($html, 'span.label'); $I->seeNodeCssClass($span, 'label-info span'); $I->seeNodeText($span, 'Label text'); } public function testBadge() { $I = $this->codeGuy; $html = TbHtml::badge( 'Badge text', array( 'color' => TbHtml::BADGE_COLOR_WARNING, 'class' => 'span', ) ); $span = $I->createNode($html, 'span.badge'); $I->seeNodeCssClass($span, 'badge-warning span'); $I->seeNodeText($span, 'Badge text'); } public function testHeroUnit() { $I = $this->codeGuy; $html = TbHtml::heroUnit( 'Heading text', 'Content text', array( 'class' => 'div', 'headingOptions' => array('class' => 'heading'), ) ); $hero = $I->createNode($html, 'div.hero-unit'); $I->seeNodeCssClass($hero, 'div'); $I->seeNodeText($hero, 'Content text'); $h1 = $hero->filter('h1'); $I->seeNodeCssClass($h1, 'heading'); $I->seeNodeText($h1, 'Heading text'); } public function testPageHeader() { $I = $this->codeGuy; $html = TbHtml::pageHeader( 'Heading text', 'Subtext', array( 'class' => 'header', 'headerOptions' => array('class' => 'heading'), 'subtextOptions' => array('class' => 'subtext') ) ); $header = $I->createNode($html, 'div.page-header'); $I->seeNodeCssClass($header, 'header'); $h1 = $header->filter('h1'); $I->seeNodeCssClass($h1, 'heading'); $I->seeNodeText($h1, 'Heading text'); $small = $h1->filter('small'); $I->seeNodeCssClass($small, 'subtext'); $I->seeNodeText($small, 'Subtext'); } public function testThumbnails() { $I = $this->codeGuy; $items = array( array( 'image' => 'image.png', 'label' => 'Thumbnail label', 'caption' => 'Caption text', 'span' => 6, 'imageOptions' => array('class' => 'image', 'alt' => 'Alternative text'), 'captionOptions' => array('class' => 'div'), 'labelOptions' => array('class' => 'heading'), ), array('image' => 'image.png', 'label' => 'Thumbnail label', 'caption' => 'Caption text'), array('image' => 'image.png', 'label' => 'Thumbnail label', 'caption' => 'Caption text'), ); $html = TbHtml::thumbnails( $items, array( 'span' => 3, 'class' => 'list', ) ); $thumbnails = $I->createNode($html, 'ul.thumbnails'); $I->seeNodeCssClass($thumbnails, 'list'); $I->seeNodeNumChildren($thumbnails, 3); $I->seeNodeChildren($thumbnails, array('li.span6', 'li.span3', 'li.span3')); foreach ($thumbnails->children() as $i => $liElement) { $li = $I->createNode($liElement); $thumbnail = $li->filter('div.thumbnail'); $I->seeNodeChildren($thumbnail, array('img', 'div.caption')); $img = $thumbnail->filter('img'); $I->seeNodeAttribute($img, 'src', 'image.png'); $caption = $thumbnail->filter('div.caption'); $h3 = $caption->filter('h3'); $I->seeNodeText($caption, $items[$i]['caption']); $I->seeNodeText($h3, $items[$i]['label']); if ($i === 0) { $I->seeNodeCssClass($img, 'image'); $I->seeNodeAttribute($img, 'alt', 'Alternative text'); $I->seeNodeCssClass($caption, 'div'); $I->seeNodeCssClass($h3, 'heading'); } } $html = TbHtml::thumbnails(array()); $this->assertEquals('', $html); } public function testThumbnail() { $I = $this->codeGuy; $html = TbHtml::thumbnail( 'Thumbnail text', array( 'class' => 'div', 'itemOptions' => array('class' => 'item'), ) ); $li = $I->createNode($html, 'li'); $I->seeNodeCssClass($li, 'item'); $thumbnail = $li->filter('div.thumbnail'); $I->seeNodeCssClass($thumbnail, 'div'); $I->seeNodeText($thumbnail, 'Thumbnail text'); } public function testThumbnailLink() { $I = $this->codeGuy; $html = TbHtml::thumbnailLink( 'Thumbnail text', '#', array( 'class' => 'link', 'itemOptions' => array('class' => 'item'), ) ); $li = $I->createNode($html, 'li'); $I->seeNodeCssClass($li, 'item'); $thumbnail = $li->filter('a.thumbnail'); $I->seeNodeCssClass($thumbnail, 'link'); $I->seeNodeAttribute($thumbnail, 'href', '#'); $I->seeNodeText($thumbnail, 'Thumbnail text'); } public function testAlert() { $I = $this->codeGuy; $html = TbHtml::alert( TbHtml::ALERT_COLOR_SUCCESS, 'Alert message', array( 'class' => 'div', 'closeText' => 'Close', 'closeOptions' => array('class' => 'text'), ) ); $alert = $I->createNode($html, 'div.alert'); $I->seeNodeCssClass($alert, 'alert-success in fade div'); $I->seeNodeText($alert, 'Alert message'); $close = $alert->filter('a[type=button].close'); $I->seeNodeCssClass($close, 'text'); $I->seeNodeAttributes( $close, array( 'href' => '#', 'data-dismiss' => 'alert', ) ); $I->seeNodeText($close, 'Close'); $html = TbHtml::alert( TbHtml::ALERT_COLOR_INFO, 'Alert message', array( 'closeText' => false, 'in' => false, 'fade' => false, ) ); $alert = $I->createNode($html, 'div.alert'); $I->seeNodeCssClass($alert, 'alert-info'); $I->dontSeeNodeCssClass($alert, 'fade in'); $I->dontSeeNodeChildren($alert, array('.close')); $I->seeNodeText($alert, 'Alert message'); } public function testBlockAlert() { $I = $this->codeGuy; $html = TbHtml::blockAlert(TbHtml::ALERT_COLOR_WARNING, 'Alert message'); $alert = $I->createNode($html, 'div.alert'); $I->seeNodeCssClass($alert, 'alert-warning alert-block fade in'); $I->seeNodeText($alert, 'Alert message'); $I->seeNodeChildren($alert, array('div.alert > a[type=button].close')); } public function testProgressBar() { $I = $this->codeGuy; $html = TbHtml::progressBar( 60, array( 'class' => 'div', 'color' => TbHtml::PROGRESS_COLOR_INFO, 'content' => 'Bar text', 'barOptions' => array('class' => 'div'), ) ); $progress = $I->createNode($html, 'div.progress'); $I->seeNodeCssClass($progress, 'progress-info div'); $bar = $progress->filter('div.bar'); $I->seeNodeCssClass($bar, 'div'); $I->seeNodeCssStyle($bar, 'width: 60%'); $I->seeNodeText($bar, 'Bar text'); $html = TbHtml::progressBar( 35, array( 'barOptions' => array('color' => TbHtml::PROGRESS_COLOR_SUCCESS), ) ); $progress = $I->createNode($html, 'div.progress'); $bar = $progress->filter('div.bar'); $I->seeNodeCssClass($bar, 'bar-success'); $I->seeNodeCssStyle($bar, 'width: 35%'); $html = TbHtml::progressBar(-1); $progress = $I->createNode($html, 'div.progress'); $bar = $progress->filter('div.bar'); $I->seeNodeCssStyle($bar, 'width: 0'); $html = TbHtml::progressBar(100.1); $progress = $I->createNode($html, 'div.progress'); $bar = $progress->filter('div.bar'); $I->seeNodeCssStyle($bar, 'width: 100%'); } public function testStripedProgressBar() { $I = $this->codeGuy; $html = TbHtml::stripedProgressBar(20); $progress = $I->createNode($html, 'div.progress'); $I->seeNodeCssClass($progress, 'progress-striped'); $bar = $progress->filter('div.bar'); $I->seeNodeCssStyle($bar, 'width: 20%'); } public function testAnimatedProgressBar() { $I = $this->codeGuy; $html = TbHtml::animatedProgressBar(40); $progress = $I->createNode($html, 'div.progress'); $I->seeNodeCssClass($progress, 'progress-striped active'); $bar = $progress->filter('div.bar'); $I->seeNodeCssStyle($bar, 'width: 40%'); } public function testStackedProgressBar() { $I = $this->codeGuy; $html = TbHtml::stackedProgressBar( array( array('color' => TbHtml::PROGRESS_COLOR_SUCCESS, 'width' => 35), array('color' => TbHtml::PROGRESS_COLOR_WARNING, 'width' => 20), array('color' => TbHtml::PROGRESS_COLOR_DANGER, 'width' => 10), ) ); $progress = $I->createNode($html, 'div.progress'); $I->seeNodeChildren($progress, array('div.bar-success', 'div.bar-warning', 'div.bar-danger')); $success = $progress->filter('div.bar-success'); $I->seeNodeCssClass($success, 'bar'); $I->seeNodeCssStyle($success, 'width: 35%'); $warning = $progress->filter('div.bar-warning'); $I->seeNodeCssClass($warning, 'bar'); $I->seeNodeCssStyle($warning, 'width: 20%'); $danger = $progress->filter('div.bar-danger'); $I->seeNodeCssClass($danger, 'bar'); $I->seeNodeCssStyle($danger, 'width: 10%'); $html = TbHtml::stackedProgressBar( array( array('width' => 35), array('width' => 20), array('width' => 100), ) ); $progress = $I->createNode($html, 'div.progress'); $last = $progress->filter('div.bar')->last(); $I->seeNodeCssStyle($last, 'width: 45%'); $html = TbHtml::stackedProgressBar( array( array('width' => 35), array('width' => 20), array('width' => 10, 'visible' => false), ) ); $progress = $I->createNode($html, 'div.progress'); $last = $progress->filter('div.bar')->last(); $I->seeNodeCssStyle($last, 'width: 20%'); $html = TbHtml::stackedProgressBar(array()); $this->assertEquals('', $html); } public function testMediaList() { $I = $this->codeGuy; $items = array( array('image' => 'image.png', 'heading' => 'Media heading', 'content' => 'Content text'), array('heading' => 'Media heading', 'content' => 'Content text'), ); $html = TbHtml::mediaList( $items, array( 'class' => 'list', ) ); $ul = $I->createNode($html, 'ul.media-list'); $I->seeNodeNumChildren($ul, 2); $I->seeNodeChildren($ul, array('li.media', 'li.media')); $html = TbHtml::mediaList(array()); $this->assertEquals('', $html); } public function testMedias() { $I = $this->codeGuy; $items = array( array( 'image' => 'image.png', 'heading' => 'Media heading', 'content' => 'Content text', 'items' => array( array( 'image' => '#', 'heading' => 'Media heading', 'content' => 'Content text', ), array( 'image' => '#', 'heading' => 'Media heading', 'content' => 'Content text', 'visible' => false, ), ) ), array('heading' => 'Media heading', 'content' => 'Content text'), ); $html = TbHtml::medias($items); $body = $I->createNode($html, 'body'); $medias = $body->filter('div.media'); $first = $medias->first(); $I->seeNodeChildren($first, array('a.pull-left', 'div.media-body')); $img = $first->filter('img.media-object'); $I->seeNodeAttribute($img, 'src', 'image.png'); $mediaBody = $first->filter('div.media-body'); $I->seeNodeChildren($mediaBody, array('h4.media-heading', 'div.media')); $I->seeNodeText($mediaBody, 'Content text'); $h4 = $body->filter('h4.media-heading'); $I->seeNodeText($h4, 'Media heading'); $I->seeNodeNumChildren($mediaBody, 1, 'div.media'); $last = $medias->last(); $I->seeNodeChildren($last, array('div.media-body')); $html = TbHtml::medias(array()); $this->assertEquals('', $html); } public function testMedia() { $I = $this->codeGuy; $html = TbHtml::media( 'image.png', 'Heading text', 'Content text', array( 'class' => 'div', 'linkOptions' => array('class' => 'link'), 'imageOptions' => array('class' => 'image', 'alt' => 'Alternative text'), 'contentOptions' => array('class' => 'content'), 'headingOptions' => array('class' => 'heading'), ) ); $div = $I->createNode($html, 'div.media'); $I->seeNodeCssClass($div, 'div'); $I->seeNodeChildren($div, array('a.pull-left', 'div.media-body')); $a = $div->filter('a.pull-left'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttribute($a, 'href', '#'); $img = $a->filter('img.media-object'); $I->seeNodeCssClass($img, 'image'); $I->seeNodeAttributes( $img, array( 'src' => 'image.png', 'alt' => 'Alternative text', ) ); $content = $div->filter('div.media-body'); $I->seeNodeCssClass($content, 'content'); $I->seeNodeText($content, 'Content text'); $h4 = $content->filter('h4.media-heading'); $I->seeNodeCssClass($h4, 'heading'); $I->seeNodeText($h4, 'Heading text'); } public function testWell() { $I = $this->codeGuy; $html = TbHtml::well( 'Well text', array( 'class' => 'div', 'size' => TbHtml::WELL_SIZE_LARGE, ) ); $well = $I->createNode($html, 'div.well'); $I->seeNodeCssClass($well, 'well-large'); $I->seeNodeText($well, 'Well text'); } public function testCloseLink() { $I = $this->codeGuy; $html = TbHtml::closeLink( 'Close', '#', array( 'class' => 'link', 'dismiss' => TbHtml::CLOSE_DISMISS_ALERT, ) ); $a = $I->createNode($html, 'a[type=button].close'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttributes( $a, array( 'href' => '#', 'data-dismiss' => 'alert', ) ); $I->seeNodeText($a, 'Close'); } public function testCloseButton() { $I = $this->codeGuy; $html = TbHtml::closeButton( 'Close', array( 'dismiss' => TbHtml::CLOSE_DISMISS_MODAL, 'class' => 'button', ) ); $button = $I->createNode($html, 'button[type=button].close'); $I->seeNodeCssClass($button, 'button'); $I->seeNodeAttribute($button, 'data-dismiss', 'modal'); $I->seeNodeText($button, 'Close'); } public function testCollapseLink() { $I = $this->codeGuy; $html = TbHtml::collapseLink( 'Link', '#', array( 'class' => 'link', ) ); $a = $I->createNode($html, 'a[data-toggle=collapse]'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttribute($a, 'href', '#'); $I->seeNodeText($a, 'Link'); } public function testTooltip() { $I = $this->codeGuy; $html = TbHtml::tooltip( 'Link', '#', 'Tooltip text', array( 'class' => 'link', 'animation' => true, 'html' => true, 'selector' => '.selector', 'placement' => TbHtml::TOOLTIP_PLACEMENT_RIGHT, 'trigger' => TbHtml::TOOLTIP_TRIGGER_CLICK, 'delay' => 350, ) ); $a = $I->createNode($html, 'a[rel=tooltip]'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttributes( $a, array( 'title' => 'Tooltip text', 'data-animation' => 'true', 'data-html' => 'true', 'data-selector' => '.selector', 'data-placement' => 'right', 'data-trigger' => 'click', 'data-delay' => '350', 'href' => '#' ) ); $I->seeNodeText($a, 'Link'); } public function testPopover() { $I = $this->codeGuy; $html = TbHtml::popover( 'Link', 'Heading text', 'Content text', array( 'class' => 'link', ) ); $a = $I->createNode($html, 'a[rel=popover]'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttributes( $a, array( 'title' => 'Heading text', 'data-content' => 'Content text', 'data-toggle' => 'popover', 'href' => '#' ) ); $I->seeNodeText($a, 'Link'); } public function testCarousel() { $I = $this->codeGuy; $items = array( array( 'image' => 'image.png', 'label' => 'First Thumbnail label', 'url' => '#', 'caption' => 'Caption text', ), array('image' => 'image.png', 'label' => 'Second Thumbnail label'), array('image' => 'image.png', 'imageOptions' => array('class' => 'image', 'alt' => 'Alternative text')), ); $html = TbHtml::carousel( $items, array( 'id' => 'carousel', 'class' => 'div', ) ); $carousel = $I->createNode($html, 'div.carousel'); $I->seeNodeCssClass($carousel, 'div slide'); $I->seeNodeAttribute($carousel, 'carousel'); $I->seeNodeChildren($carousel, array('ol.carousel-indicators', 'div.carousel-inner', 'a.carousel-control', 'a.carousel-control')); $inner = $carousel->filter('div.carousel-inner'); foreach ($inner->children() as $i => $divElement) { $div = $I->createNode($divElement); $I->seeNodeCssClass($div, 'item'); switch ($i) { case 0: $I->seeNodeCssClass($div, 'active'); $I->seeNodeChildren($div, array('a', 'div.carousel-caption')); $a = $div->filter('a'); $I->seeNodeAttribute($a, 'href', '#'); break; case 1: $I->seeNodeChildren($div, array('img', 'div.carousel-caption')); break; case 2: $img = $div->filter('img.image'); $I->seeNodeAttributes( $img, array( 'src' => 'image.png', 'alt' => 'Alternative text', ) ); break; } } } public function testCarouselItem() { $I = $this->codeGuy; $html = TbHtml::carouselItem( 'Content text', 'Label text', 'Caption text', array( 'class' => 'div', 'overlayOptions' => array('class' => 'overlay'), 'labelOptions' => array('class' => 'label'), 'captionOptions' => array('class' => 'caption'), ) ); $div = $I->createNode($html, 'div.item'); $I->seeNodeCssClass($div, 'div'); $I->seeNodeText($div, 'Content text'); $overlay = $div->filter('div.carousel-caption'); $I->seeNodeCssClass($overlay, 'overlay'); $I->seeNodeChildren($overlay, array('h4', 'p')); $h4 = $overlay->filter('h4'); $I->seeNodeCssClass($h4, 'label'); $caption = $overlay->filter('p'); $I->seeNodeCssClass($caption, 'caption'); $I->seeNodeText($caption, 'Caption text'); } public function testCarouselPrevLink() { $I = $this->codeGuy; $html = TbHtml::carouselPrevLink( 'Previous', '#', array( 'class' => 'link', ) ); $a = $I->createNode($html, 'a.carousel-control.left'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttributes( $a, array( 'href' => '#', 'data-slide' => 'prev', ) ); $I->seeNodeText($a, 'Previous'); } public function testCarouselNextLink() { $I = $this->codeGuy; $html = TbHtml::carouselNextLink( 'Next', '#', array( 'class' => 'link', ) ); $a = $I->createNode($html, 'a.carousel-control.right'); $I->seeNodeCssClass($a, 'link'); $I->seeNodeAttributes( $a, array( 'href' => '#', 'data-slide' => 'next', ) ); $I->seeNodeText($a, 'Next'); } public function testCarouselIndicators() { $I = $this->codeGuy; $html = TbHtml::carouselIndicators( '#', 3, array( 'class' => 'list', ) ); $ol = $I->createNode($html, 'ol.carousel-indicators'); $I->seeNodeCssClass($ol, 'list'); $I->seeNodeChildren($ol, array('li.active', 'li', 'li')); foreach ($ol->filter('li') as $i => $element) { $node = $I->createNode($element); $I->seeNodeAttributes( $node, array( 'data-target' => '#', 'data-slide-to' => $i, ) ); $I->seeNodeEmpty($node); } } public function testAddCssClass() { $htmlOptions = array('class' => 'my'); TbHtml::addCssClass(array('class'), $htmlOptions); $this->assertEquals('my class', $htmlOptions['class']); TbHtml::addCssClass('more classes', $htmlOptions); $this->assertEquals('my class more classes', $htmlOptions['class']); TbHtml::addCssClass(array('my'), $htmlOptions); $this->assertEquals('my class more classes', $htmlOptions['class']); TbHtml::addCssClass('class more classes', $htmlOptions); $this->assertEquals('my class more classes', $htmlOptions['class']); } public function testAddCssStyle() { $htmlOptions = array('style' => 'display: none'); TbHtml::addCssStyle('color: purple', $htmlOptions); TbHtml::addCssStyle('background: #fff;', $htmlOptions); TbHtml::addCssStyle(array('font-family: "Open sans"', 'font-weight: bold;'), $htmlOptions); $this->assertEquals( 'display: none; color: purple; background: #fff; font-family: "Open sans"; font-weight: bold', $htmlOptions['style'] ); } }