getMockForAbstractClass(TextField::class, ["testName"]); $this->assertEquals('testName', $stub->getName()); $this->assertInstanceOf(TextField::class, $stub); } /** * @depends testFoundation */ public function testBase() { // Generate the field $field = new TextField("testName"); $field->setFormName("testForm"); // Assert expected returns $html = $field->generateHtml(); $this->assertTrue(str_starts_with($html, "assertTrue(str_ends_with($html, ">")); $this->assertTrue(str_contains($html, "type='text'")); $this->assertTrue(str_contains($html, "name='testName'")); $this->assertTrue(str_contains($html, "id='testForm_testName'")); } /** * @depends testBase */ public function testBlankValidate() { // Generate a blank TextField $field = new TextField("testName"); $field->setFormName("testForm"); // And enter an answer $field->setValue("Hello World"); // Run a validation $this->assertTrue($field->validate()); $this->assertTrue($field->isValidated()); $this->assertTrue($field->isValid()); } /** * @depends testBlankValidate */ public function testEmptyValidate() { // Generate a blank TextField $field = new TextField("testName"); $field->setFormName("testForm"); // Run a validation $this->assertFalse($field->validate()); $this->assertTrue($field->isValidated()); $this->assertFalse($field->isValid()); // And check for the empty error $this->assertEquals(['TestName may not be empty.'], $field->getErrors()); } /** * @depends testBlankValidate */ public function testMinMaxLength() { // Generate a field with a minLength and a maxLength $field = new TextField("testName"); $field->setFormName("testForm"); $field->minLength(16); $field->maxLength(24); // Generate the html and verify the minlength and maxlength $html = $field->generateHtml(); $this->assertTrue(str_contains($html, "minlength='16'")); $this->assertTrue(str_contains($html, "maxlength='24'")); // First test a value that's too short $field->setValue("Hello"); $this->assertFalse($field->validate()); $this->assertEquals(['TestName must at least be 16 characters.'], $field->getErrors()); // Then test a value that's too long $field->setValue("What is the meaning of life?"); $this->assertFalse($field->validate()); $this->assertEquals(['TestName exceeds maximum length of 24 characters.'], $field->getErrors()); // And test a value that is just right $field->setValue("Great deal buckaroo"); $this->assertTrue($field->validate()); $this->assertEmpty($field->getErrors()); } /** * @depends testBlankValidate */ public function testRegex() { // Generate a field with a simple regex $field = new TextField("testName"); $field->setFormName("testForm"); $field->regex("[a-zA-Z]+\s+[a-zA-Z]+", "Very illegal characters!"); // First test a value which doesn't match $field->setValue("Hello"); $this->assertFalse($field->validate()); $this->assertEquals(["Very illegal characters!"], $field->getErrors()); // Then test with a value which does match $field->setValue("Hello World"); $this->assertTrue($field->validate()); $this->assertEmpty($field->getErrors()); } /** * @depends testBlankValidate */ public function testPlaceholder() { // Generate a field with a placeholder $field = new TextField("testName"); $field->setFormName("testForm"); $field->placeholder("Some Text"); // Generate the HTML $html = $field->generateHtml(); $this->assertTrue(str_contains($html, "placeholder='Some Text'")); } }