/** * Test basic methods. * @covers Rentalhost\VanillaValidation\ValidationField::__construct * @covers Rentalhost\VanillaValidation\ValidationField::__call */ public function testBasic() { static::assertClassHasAttribute('name', ValidationField::class); static::assertClassHasAttribute('value', ValidationField::class); static::assertClassHasAttribute('rules', ValidationField::class); $field = new ValidationField('name'); static::assertSame('name', $field->name); static::assertNull($field->value); static::assertInstanceOf(ValidationFieldRuleList::class, $field->rules); $field = new ValidationField('name', 'value'); static::assertSame('name', $field->name); static::assertSame('value', $field->value); $field->required(); $fieldRules = new ValidationFieldRuleList(); $fieldRules->add('required', null); static::assertEquals($fieldRules, $field->rules); }
/** * Test validate method. * @covers Rentalhost\VanillaValidation\ValidationFieldRuleList::validate */ public function testValidate() { $ruleList = new ValidationFieldRuleList(); $ruleList->add('required', [false]); // Prepare. $ruleListResult = $ruleList->validate('value'); $resultSuccess = new Success(); $resultSuccess->value = 'value'; $resultSuccess->ruleIndex = 0; $resultSuccess->rule = new ValidationFieldRule('required', [false]); // Success test. static::assertInstanceOf(ValidationResult::class, $ruleListResult); static::assertTrue($ruleListResult->isSuccess()); static::assertSame('success', $ruleListResult->getMessage()); static::assertEquals([$resultSuccess], $ruleListResult->getResults()); static::assertEquals([$resultSuccess], $ruleListResult->getSuccesses()); static::assertEquals([], $ruleListResult->getFails()); // Prepare. $ruleListResult = $ruleList->validate(null); $resultFail = new Fail('fail:required'); $resultFail->value = null; $resultFail->ruleIndex = 0; $resultFail->rule = new ValidationFieldRule('required', [false]); // Fail test. static::assertFalse($ruleListResult->isSuccess()); static::assertSame('fail', $ruleListResult->getMessage()); static::assertEquals([], $ruleListResult->getSuccesses()); static::assertEquals([$resultFail], $ruleListResult->getResults()); static::assertEquals([$resultFail], $ruleListResult->getFails()); // Prepare. $ruleList->clear(); $ruleList->add('trim'); $ruleList->add('required'); $ruleListResult = $ruleList->validate(' '); $resultFail = new FailBreakable('fail:required'); $resultFail->value = ''; $resultFail->ruleIndex = 1; $resultFail->rule = new ValidationFieldRule('required'); // Fail test, after trim. static::assertFalse($ruleListResult->isSuccess()); static::assertSame('fail', $ruleListResult->getMessage()); static::assertEquals([], $ruleListResult->getSuccesses()); static::assertEquals([$resultFail], $ruleListResult->getResults()); static::assertEquals([$resultFail], $ruleListResult->getFails()); // Prepare. $ruleList->clear(); $ruleList->add('notEmpty'); $ruleList->add('trim'); $ruleListResult = $ruleList->validate(' '); $resultSuccess = new Success(); $resultSuccess->value = ' '; $resultSuccess->ruleIndex = 0; $resultSuccess->rule = new ValidationFieldRule('notEmpty'); // Success test, before trim (no side-effect). static::assertTrue($ruleListResult->isSuccess()); static::assertSame('success', $ruleListResult->getMessage()); static::assertEquals([$resultSuccess], $ruleListResult->getSuccesses()); static::assertEquals([$resultSuccess], $ruleListResult->getResults()); static::assertEquals([], $ruleListResult->getFails()); // Prepare. $ruleList->clear(); $ruleList->add('notEmpty'); $ruleList->add('notEmpty'); $ruleListResult = $ruleList->validate(' '); $resultSuccessFirst = new Success(); $resultSuccessFirst->value = ' '; $resultSuccessFirst->ruleIndex = 0; $resultSuccessFirst->rule = new ValidationFieldRule('notEmpty'); $resultSuccessSecond = new Success(); $resultSuccessSecond->value = ' '; $resultSuccessSecond->ruleIndex = 1; $resultSuccessSecond->rule = new ValidationFieldRule('notEmpty'); // Success test, double required, required will accept spaces string. static::assertTrue($ruleListResult->isSuccess()); static::assertSame('success', $ruleListResult->getMessage()); static::assertEquals([$resultSuccessFirst, $resultSuccessSecond], $ruleListResult->getSuccesses()); static::assertEquals([$resultSuccessFirst, $resultSuccessSecond], $ruleListResult->getResults()); static::assertEquals([], $ruleListResult->getFails()); // Prepare. $ruleListResult = $ruleList->validate(null); $resultFailFirst = new Fail('fail:notEmpty'); $resultFailFirst->value = null; $resultFailFirst->ruleIndex = 0; $resultFailFirst->rule = new ValidationFieldRule('notEmpty'); $resultFailSecond = new Fail('fail:notEmpty'); $resultFailSecond->value = null; $resultFailSecond->ruleIndex = 1; $resultFailSecond->rule = new ValidationFieldRule('notEmpty'); // Fail test, double required in empty value, twice fails. static::assertFalse($ruleListResult->isSuccess()); static::assertSame('fail', $ruleListResult->getMessage()); static::assertEquals([], $ruleListResult->getSuccesses()); static::assertEquals([$resultFailFirst, $resultFailSecond], $ruleListResult->getResults()); static::assertEquals([$resultFailFirst, $resultFailSecond], $ruleListResult->getFails()); // Prepare. $ruleList->clear(); $ruleList->add('notEmpty'); $ruleList->add('trim'); $ruleList->add('notEmpty'); $ruleListResult = $ruleList->validate(' '); $resultSuccess = new Success(); $resultSuccess->value = ' '; $resultSuccess->ruleIndex = 0; $resultSuccess->rule = new ValidationFieldRule('notEmpty'); $resultFail = new Fail('fail:notEmpty'); $resultFail->value = ''; $resultFail->ruleIndex = 2; $resultFail->rule = new ValidationFieldRule('notEmpty'); // Fail test, first required will pass, but second will fail because of trim. static::assertFalse($ruleListResult->isSuccess()); static::assertSame('fail', $ruleListResult->getMessage()); static::assertEquals([$resultSuccess], $ruleListResult->getSuccesses()); static::assertEquals([$resultSuccess, $resultFail], $ruleListResult->getResults()); static::assertEquals([$resultFail], $ruleListResult->getFails()); }