diff --git a/drupalci.yml b/drupalci.yml index 19dcb12..733cc5a 100644 --- a/drupalci.yml +++ b/drupalci.yml @@ -12,3 +12,7 @@ build: validate_codebase: phplint: phpcs: + testing: + run_tests.standard: + types: 'PHPUnit-Unit,PHPUnit-Kernel,PHPUnit-Functional' + suppress-deprecations: false diff --git a/tests/src/Unit/Plugin/Validation/Constraint/UsernameFormatConstraintValidatorTest.php b/tests/src/Unit/Plugin/Validation/Constraint/UsernameFormatConstraintValidatorTest.php new file mode 100644 index 0000000..727d2a2 --- /dev/null +++ b/tests/src/Unit/Plugin/Validation/Constraint/UsernameFormatConstraintValidatorTest.php @@ -0,0 +1,70 @@ +prophesize(ExecutionContextInterface::class); + + if ($expected_violation) { + $context->addViolation()->shouldBeCalledTimes(1); + } + else { + $context->addViolation()->shouldNotBeCalled(); + } + + $validator = new UsernameFormatConstraintValidator(); + $validator->initialize($context->reveal()); + $validator->validate($item, $constraint); + } + + /** + * Data provider for ::testValidate(). + */ + public function providerTestValidate() { + $cases = []; + + $item = $this->prophesize(DrupalOrgUsernameItem::class); + $item->getValue()->willReturn(['value' => 'hussainweb']); + $cases['Valid Username'] = [$item, FALSE]; + + $item = $this->prophesize(DrupalOrgUsernameItem::class); + $item->getValue()->willReturn(['value' => ' hussainweb']); + $cases['Username beginning with space'] = [$item, TRUE]; + + $item = $this->prophesize(DrupalOrgUsernameItem::class); + $item->getValue()->willReturn(['value' => 'hussainweb ']); + $cases['Username ending with space'] = [$item, TRUE]; + + $item = $this->prophesize(DrupalOrgUsernameItem::class); + $item->getValue()->willReturn(['value' => 'hussain web']); + $cases['Username with multiple spaces'] = [$item, TRUE]; + + $item = $this->prophesize(DrupalOrgUsernameItem::class); + $item->getValue()->willReturn(['value' => 'hussain[web]']); + $cases['Username with illegal characters'] = [$item, TRUE]; + + return $cases; + } + +}