diff --git a/test/fields/EmailFieldTest.php b/test/fields/EmailFieldTest.php new file mode 100644 index 0000000..78ecb07 --- /dev/null +++ b/test/fields/EmailFieldTest.php @@ -0,0 +1,87 @@ +getMockForAbstractClass(EmailField::class, ["testName"]); + $this->assertEquals('testName', $stub->getName()); + $this->assertInstanceOf(EmailField::class, $stub); + } + + /** + * @depends testFoundation + */ + public function testBase() + { + // Generate the field + $field = new EmailField("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='email'")); + $this->assertTrue(str_contains($html, "name='testName'")); + $this->assertTrue(str_contains($html, "id='testForm_testName'")); + } + + /** + * @depends testBase + */ + public function testValidator() + { + // Generate a basic field + $field = new EmailField("testName"); + $field->setFormName("testForm"); + + // Set a value that is not an email + $field->setValue("totallynot#an_email"); + $this->assertFalse($field->validate()); + $this->assertEquals(['TestName is not a valid email address.'], $field->getErrors()); + + // Set a value that is valid + $field->setValue("name@example.com"); + $this->assertTrue($field->validate()); + $this->assertEmpty($field->getErrors()); + } +} \ No newline at end of file diff --git a/test/fields/TextFieldTest.php b/test/fields/TextFieldTest.php new file mode 100644 index 0000000..d95635f --- /dev/null +++ b/test/fields/TextFieldTest.php @@ -0,0 +1,172 @@ +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'")); + } + +} \ No newline at end of file