/** * Test the getInput method. * * @return void */ public function testGetInput() { $form = new JFormInspector('form1'); // Test a traditional hidden field type. $this->assertThat( $form->load('<form><field name="hidden" type="hidden" label="foo" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.' ); $field = new JFormFieldHidden($form); $this->assertThat( $form->getLabel('hidden'), $this->equalTo(''), 'Line:' . __LINE__ . ' The label of a hidden element should be nothing.' ); // Test a field with attribute hidden = true. $this->assertThat( $form->load('<form><field name="hidden" type="text" label="foo" hidden="true" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.' ); $field = new JFormFieldHidden($form); $this->assertThat( $form->getLabel('hidden'), $this->equalTo(''), 'Line:' . __LINE__ . ' The label of a hidden element should be nothing.' ); // Test a field with attribute hidden = false. $this->assertThat( $form->load('<form><field name="hidden" type="text" label="foo" hidden="false" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.' ); $field = new JFormFieldHidden($form); $this->assertThat( $form->getLabel('hidden'), $this->equalTo('<label id="hidden-lbl" for="hidden" class="">foo</label>'), 'Line:' . __LINE__ . ' The label of a non-hidden element should be some HTML.' ); }
/** * Test the getInput method. * * @return void * * @since 11.3 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat($form->load('<form><field name="databaseconnection" type="databaseconnection" supported="mysqli" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldDatabaseConnection($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertThat(strlen($field->input), $this->greaterThan(0), 'Line:' . __LINE__ . ' The getInput method should return something without error; in this case, a "Mysqli" option.'); $this->assertThat($form->load('<form><field name="databaseconnection" type="databaseconnection" supported="non-existing" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldDatabaseConnection($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertThat(strlen($field->input), $this->greaterThan(0), 'Line:' . __LINE__ . ' The getInput method should return something without error; in this case, a "None" option.'); // TODO: Should check all the attributes have come in properly. }
/** * Test the getInput method. * * @return void * * @since 11.1 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat( $form->load('<form><field name="usergroup" type="usergroup" class="inputbox" disabled="true" onclick="window.reload()"><option value="*">None</option><item value="fake">Fake</item></field></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.' ); $field = new JFormFieldUsergroup($form); $this->assertThat( $field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.' ); if (!is_null(self::$driver)) { $this->assertThat( strlen($field->input), $this->greaterThan(0), 'Line:' . __LINE__ . ' The getInput method should return something without error.' ); } else { $this->markTestSkipped(); } // TODO: Should check all the attributes have come in properly. }
/** * Test the getInput method. * * @return void * * @since 11.4 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat( $form->load('<form><field name="editors" type="plugins" folder="editors" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.' ); $field = new JFormFieldPlugins($form); $this->assertThat( $field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.' ); if (!is_null(self::$driver)) { $this->assertThat( strlen($field->input), $this->greaterThan(0), 'Line:' . __LINE__ . ' The getInput method should return something without error.' ); } else { $this->markTestSkipped(); } // TODO: Should check all the attributes have come in properly. }
/** * Test the getInput method. */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat( $form->load('<form><field name="checkbox" type="checkbox" /></form>'), $this->isTrue(), 'Line:'.__LINE__.' XML string should load successfully.' ); $field = new JFormFieldCheckbox($form); $this->assertThat( $field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:'.__LINE__.' The setup method should return true.' ); $this->assertThat( strlen($field->input), $this->greaterThan(0), 'Line:'.__LINE__.' The getInput method should return something without error.' ); // TODO: Should check all the attributes have come in properly. }
/** * Test the getInput method. * * @return void * * @since 12.1 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat( $form->load('<form><field name="sql" type="sql" key_field="id" query="SELECT * FROM `jos_categories`"><option value="*">None</option></field></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.' ); $field = new JFormFieldSQL($form); $this->assertThat( $field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.' ); if (!is_null(self::$driver)) { $this->assertThat( strlen($field->input), $this->greaterThan(0), 'Line:' . __LINE__ . ' The getInput method should return something without error.' ); } else { $this->markTestSkipped(); } }
/** * Test the getOptions method. * * @return void * * @since 11.3 */ public function testGetOptions() { $form = new JFormInspector('form1'); $this->assertThat($form->load('<form><field name="integer" type="integer" first="1" last="-5" step="1"/></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldInteger($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertThat($field->input, $this->logicalNot($this->StringContains('<option')), 'Line:' . __LINE__ . ' The field should not contain any options.'); $this->assertThat($form->load('<form><field name="integer" type="integer" first="-7" last="-5" step="1"/></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldInteger($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertThat($field->input, $this->StringContains('<option value="-7">-7</option>'), 'Line:' . __LINE__ . ' The field should contain -7 through -5 as options.'); $this->assertThat($form->load('<form><field name="integer" type="integer" first="-7" last="-5" step="-1"/></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldInteger($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertThat($field->input, $this->logicalNot($this->StringContains('<option')), 'Line:' . __LINE__ . ' The field should not contain any options.'); }
/** * Test the getOptions method. * * @return void * * @since 11.3 */ public function testGetOptions() { $form = new JFormInspector('form1'); $this->assertThat( $form->load('<form><field name="radio" type="radio"><option value="0">No</option><item value="1">Yes</item></field></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.' ); $field = new JFormFieldRadio($form); $this->assertThat( $field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.' ); $this->assertThat( strlen($field->input), $this->logicalNot( $this->StringContains('Yes') ), 'Line:' . __LINE__ . ' The field should not contain a Yes option.' ); }
/** * Test the getInput method. * * @return void * * @since 11.1 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat( $form->load('<form><field name="accesslevel" type="accesslevel" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.' ); $field = new JFormFieldAccessLevel($form); $this->assertThat( $field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.' ); if (!is_null(self::$driver)) { $this->assertThat( strlen($field->input), $this->greaterThan(0), 'Line:' . __LINE__ . ' The getInput method should return something without error.' ); } else { $this->markTestSkipped(); } }
/** * Test the getInput method. * * @since 11.1 * @todo Should check all the attributes have come in properly. * * @return void */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat( $form->load('<form><field name="componentlayout" type="componentlayout" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.' ); $field = new JFormFieldComponentlayout($form); $this->assertThat( $field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.' ); $this->markTestIncomplete('Problems encountered in next assertion'); $this->assertThat( strlen($field->input), $this->greaterThan(0), 'Line:' . __LINE__ . ' The getInput method should return something without error.' ); }
/** * Test the getInput method. * * @since 11.3 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat($form->load('<form><field name="checkboxes" type="checkboxes" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldCheckboxes($form); $this->markTestIncomplete(); // TODO: Should check all the attributes have come in properly. }
/** * Test the getInput method. * * @return void * * @since 12.1 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat($form->load('<form><field name="color" type="color" disabled="true" onchange="window.reload()" class="inputbox" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldColor($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertThat(strlen($field->input), $this->greaterThan(0), 'Line:' . __LINE__ . ' The getInput method should return something without error.'); }
/** * Tests the getInput method. * * @return void * * @since 3.1 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat($form->load('<form><field name="helpsite" type="helpsite" label="Help Site" description="Help Site listing" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldHelpsite($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertContains('<option value="http://help.joomla.org/proxy/index.php?option=com_help&keyref=Help{major}{minor}:{keyref}">', $field->input, 'Line:' . __LINE__ . ' The getInput method should return an option with a link to the help site.'); }
/** * Test the getInput method. * * @return void * * @since 11.1 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat($form->load('<form><field name="cachehandler" type="cachehandler" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldCacheHandler($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertThat(strlen($field->input), $this->greaterThan(0), 'Line:' . __LINE__ . ' The getInput method should return something without error.'); }
/** * Tests the getInput method. * * @return void * * @since 3.1 */ public function testGetInput() { $form = new JFormInspector('form1'); $this->assertThat($form->load('<form><field name="moduletag" type="moduletag" label="Module Tag" description="Module Tag listing" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldModuletag($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertContains('<option value="nav">nav</option>', $field->input, 'Line:' . __LINE__ . ' The getInput method should return an option with various opening tags, verify nav tag is in list.'); }
/** * Test the getLabel method. */ public function testGetLabel() { $form = new JFormInspector('form1'); $this->assertThat($form->load('<form><field name="spacer" type="spacer" description="spacer" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldSpacer($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertEquals($field->label, '<span class="spacer"><span class="before"></span><span class=""><label id="spacer-lbl" class="hasTip" title="spacer::spacer">spacer</label></span><span class="after"></span></span>', 'Line:' . __LINE__ . ' The getLabel method should return something without error.'); $this->assertThat($form->load('<form><field name="spacer" type="spacer" class="text" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldSpacer($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertEquals($field->label, '<span class="spacer"><span class="before"></span><span class="text"><label id="spacer-lbl" class="">spacer</label></span><span class="after"></span></span>', 'Line:' . __LINE__ . ' The getLabel method should return something without error.'); $this->assertThat($form->load('<form><field name="spacer" type="spacer" class="text" label="MyLabel" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldSpacer($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertEquals($field->label, '<span class="spacer"><span class="before"></span><span class="text"><label id="spacer-lbl" class="">MyLabel</label></span><span class="after"></span></span>', 'Line:' . __LINE__ . ' The getLabel method should return something without error.'); $this->assertThat($form->load('<form><field name="spacer" type="spacer" hr="true" /></form>'), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldSpacer($form); $this->assertThat($field->setup($form->getXml()->field, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true.'); $this->assertEquals($field->label, '<span class="spacer"><span class="before"></span><span class=""><hr class="" /></span><span class="after"></span></span>', 'Line:' . __LINE__ . ' The getLabel method should return something without error.'); }
/** * Tests the JFormField::getTitle method * * @return void */ public function testGetTitle() { $form = new JFormInspector('form1'); $this->assertThat($form->load(JFormDataHelper::$loadFieldDocument), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldInspector($form); // Standard usage. $xml = $form->getXml(); $data = $xml->xpath('fields/field[@name="title"]'); $title = array_pop($data); $this->assertThat($field->setup($title, 'The title'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->getTitle(), $this->equalTo('Title'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); // Hidden field $data = $xml->xpath('fields/field[@name="id"]'); $id = array_pop($data); $this->assertThat($field->setup($id, 'id'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->getTitle(), $this->equalTo(''), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); }
/** * Tests the JForm::setup method */ public function testSetup() { $form = new JFormInspector('form1'); $this->assertThat($form->load(JFormDataHelper::$loadFieldDocument), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldInspector($form); // Error handling. $wrong = 'wrong'; $this->assertThat($field->setup($wrong, 0), $this->isFalse(), 'Line:' . __LINE__ . ' If not a form object, setup should return false.'); // Standard usage. $xml = $form->getXML(); $title = array_pop($xml->xpath('fields/field[@name="title"]')); $this->assertThat($field->setup($title, 'The title'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->name, $this->equalTo('title'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->value, $this->equalTo('The title'), 'Line:' . __LINE__ . ' The value should be set from the setup method argument.'); $this->assertThat($field->id, $this->equalTo('title_id'), 'Line:' . __LINE__ . ' The property should be set from the XML (non-alpha transposed to underscore).'); $this->assertThat((string) $title['class'], $this->equalTo('inputbox required'), 'Line:' . __LINE__ . ' The property should be set from the XML.'); $this->assertThat($field->validate, $this->equalTo('none'), 'Line:' . __LINE__ . ' The property should be set from the XML.'); $this->assertThat($field->multiple, $this->isFalse(), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->required, $this->isTrue(), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); // Test multiple attribute and form group name. $colours = array_pop($xml->xpath('fields/fields[@name="params"]/field[@name="colours"]')); $this->assertThat($field->setup($colours, 'green', 'params'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->id, $this->equalTo('params_colours'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->name, $this->equalTo('params[colours][]'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->multiple, $this->isTrue(), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertEquals($field->group, 'params', 'Line:' . __LINE__ . ' The property should be set to the the group name.'); // Test hidden field type. $id = array_pop($xml->xpath('fields/field[@name="id"]')); $this->assertThat($field->setup($id, 42), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->hidden, $this->isTrue(), 'Line:' . __LINE__ . ' The hidden property should be set from the field type.'); // Test hidden attribute. $createdDate = array_pop($xml->xpath('fields/field[@name="created_date"]')); $this->assertThat($field->setup($createdDate, '0000-00-00 00:00:00'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->hidden, $this->isTrue(), 'Line:' . __LINE__ . ' The hidden property should be set from the hidden attribute.'); // Test automatic generated name. $spacer = array_pop($xml->xpath('fields/field[@type="spacer"]')); $this->assertThat($field->setup($spacer, ''), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->name, $this->equalTo('__field1'), 'Line:' . __LINE__ . ' The spacer name should be set using an automatic generated name.'); }
/** * Test for JForm::validateField method for missing rule exception. * * @return void * * @since 12.1 * * @expectedException UnexpectedValueException */ public function testValidateField_missingRule() { $form = new JFormInspector('form1'); $form->load(JFormDataHelper::$validateFieldDocument); $xml = $form->getXml(); $data = $xml->xpath('fields/field[@name="missingrule"]'); $field = array_pop($data); $form->validateField($field, null, 'value'); }
/** * Tests the JFormField::setup method * * @covers JFormField::setup * @covers JFormField::__get * * @return void */ public function testSetup() { $form = new JFormInspector('form1'); $this->assertThat($form->load(JFormDataHelper::$loadFieldDocument), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $field = new JFormFieldInspector($form); // Standard usage. $xml = $form->getXML(); $title = array_pop($xml->xpath('fields/field[@name="title"]')); $this->assertThat($field->setup($title, 'The title'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->name, $this->equalTo('title'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->value, $this->equalTo('The title'), 'Line:' . __LINE__ . ' The value should be set from the setup method argument.'); $this->assertThat($field->id, $this->equalTo('title_id'), 'Line:' . __LINE__ . ' The property should be set from the XML (non-alpha transposed to underscore).'); $this->assertThat((string) $title['class'], $this->equalTo('inputbox required'), 'Line:' . __LINE__ . ' The property should be set from the XML.'); $this->assertThat($field->validate, $this->equalTo('none'), 'Line:' . __LINE__ . ' The property should be set from the XML.'); $this->assertThat($field->multiple, $this->isFalse(), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->required, $this->isTrue(), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->input, $this->equalTo(''), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $equals = '<label id="title_id-lbl" for="title_id" class="hasTip required" title="Title::The title.">' . 'Title<span class="star"> *</span></label>'; $this->assertThat($field->label, $this->equalTo($equals), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->title, $this->equalTo('Title'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->unexisting, $this->equalTo(null), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); // Test multiple attribute and form group name. $colours = array_pop($xml->xpath('fields/fields[@name="params"]/field[@name="colours"]')); $this->assertThat($field->setup($colours, 'green', 'params'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->id, $this->equalTo('params_colours'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->name, $this->equalTo('params[colours][]'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->multiple, $this->isTrue(), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertEquals($field->group, 'params', 'Line:' . __LINE__ . ' The property should be set to the the group name.'); // Test hidden field type. $id = array_pop($xml->xpath('fields/field[@name="id"]')); $this->assertThat($field->setup($id, 42), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->hidden, $this->isTrue(), 'Line:' . __LINE__ . ' The hidden property should be set from the field type.'); // Test hidden attribute. $createdDate = array_pop($xml->xpath('fields/field[@name="created_date"]')); $this->assertThat($field->setup($createdDate, '0000-00-00 00:00:00'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->hidden, $this->isTrue(), 'Line:' . __LINE__ . ' The hidden property should be set from the hidden attribute.'); // Test automatic generated name. $spacer = array_pop($xml->xpath('fields/field[@type="spacer"]')); $this->assertThat($field->setup($spacer, ''), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->name, $this->equalTo('__field1'), 'Line:' . __LINE__ . ' The spacer name should be set using an automatic generated name.'); // Test nested groups and forced multiple. $comment = array_pop($xml->xpath('fields/fields[@name="params"]/fields[@name="subparams"]/field[@name="comment"]')); $field->forceMultiple = true; $this->assertThat($field->setup($comment, 'My comment', 'params.subparams'), $this->isTrue(), 'Line:' . __LINE__ . ' The setup method should return true if successful.'); $this->assertThat($field->id, $this->equalTo('params_subparams_comment'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertThat($field->name, $this->equalTo('params[subparams][comment][]'), 'Line:' . __LINE__ . ' The property should be computed from the XML.'); $this->assertEquals($field->group, 'params.subparams', 'Line:' . __LINE__ . ' The property should be set to the the group name.'); $this->assertEquals($field->element['class'], 'required', 'Line:' . __LINE__ . ' The property should be computed from the XML.'); }
/** * Test for JForm::validateField method. */ public function testValidateField() { $form = new JFormInspector('form1'); $this->assertThat($form->load(JFormDataHelper::$validateFieldDocument), $this->isTrue(), 'Line:' . __LINE__ . ' XML string should load successfully.'); $xml = $form->getXML(); // Test error handling. $result = $form->validateField('wrong'); $this->assertThat($result instanceof Exception, $this->isTrue(), 'Line:' . __LINE__ . ' Passing a non-JXmlElement should return an exception.'); $this->assertThat($result->getCode(), $this->equalTo(-1), 'Line:' . __LINE__ . ' The correct exception should be returned.'); $field = array_pop($xml->xpath('fields/field[@name="missingrule"]')); $result = $form->validateField($field, null, 'value'); $this->assertThat($result instanceof Exception, $this->isTrue(), 'Line:' . __LINE__ . ' Having a missing validation rule should return an exception.'); $this->assertThat($result->getCode(), $this->equalTo(-2), 'Line:' . __LINE__ . ' The correct exception should be returned.'); $field = array_pop($xml->xpath('fields/field[@name="boolean"]')); $result = $form->validateField($field); $this->assertThat($result instanceof Exception, $this->isTrue(), 'Line:' . __LINE__ . ' A failed validation should return an exception.'); $this->assertThat($result->getCode(), $this->equalTo(1), 'Line:' . __LINE__ . ' The correct exception should be returned.'); $field = array_pop($xml->xpath('fields/field[@name="required"]')); $result = $form->validateField($field); $this->assertThat($result instanceof Exception, $this->isTrue(), 'Line:' . __LINE__ . ' A required field missing a value should return an exception.'); $this->assertThat($result->getCode(), $this->equalTo(2), 'Line:' . __LINE__ . ' The correct exception should be returned.'); // Test general usage. $field = array_pop($xml->xpath('fields/field[@name="boolean"]')); $this->assertThat($form->validateField($field, null, 'true'), $this->isTrue(), 'Line:' . __LINE__ . ' A field with a passing validate attribute set should return true.'); $field = array_pop($xml->xpath('fields/field[@name="optional"]')); $this->assertThat($form->validateField($field), $this->isTrue(), 'Line:' . __LINE__ . ' A field without required set should return true.'); $field = array_pop($xml->xpath('fields/field[@name="required"]')); $this->assertThat($form->validateField($field, null, 'value'), $this->isTrue(), 'Line:' . __LINE__ . ' A required field with a value should return true.'); }