summaryrefslogtreecommitdiff
path: root/www/wiki/vendor/param-processor/param-processor/tests/Unit/ParamDefinitionFactoryTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/vendor/param-processor/param-processor/tests/Unit/ParamDefinitionFactoryTest.php')
-rw-r--r--www/wiki/vendor/param-processor/param-processor/tests/Unit/ParamDefinitionFactoryTest.php140
1 files changed, 140 insertions, 0 deletions
diff --git a/www/wiki/vendor/param-processor/param-processor/tests/Unit/ParamDefinitionFactoryTest.php b/www/wiki/vendor/param-processor/param-processor/tests/Unit/ParamDefinitionFactoryTest.php
new file mode 100644
index 00000000..1e727713
--- /dev/null
+++ b/www/wiki/vendor/param-processor/param-processor/tests/Unit/ParamDefinitionFactoryTest.php
@@ -0,0 +1,140 @@
+<?php
+
+namespace ParamProcessor\Tests\Unit;
+
+use ParamProcessor\ParamDefinition;
+use ParamProcessor\ParamDefinitionFactory;
+use ParamProcessor\ParameterTypes;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers \ParamProcessor\ParamDefinitionFactory
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+class ParamDefinitionFactoryTest extends TestCase {
+
+ public function testNewDefinitionFromArray() {
+ $definition = ParamDefinitionFactory::newDefault()->newDefinitionFromArray(
+ [
+ 'name' => 'some-list',
+ 'type' => 'integer',
+ 'message' => 'test-message',
+ 'islist' => true
+ ]
+ );
+
+ $this->assertSame( 'some-list', $definition->getName() );
+ $this->assertSame( 'integer', $definition->getType() );
+ $this->assertSame( 'test-message', $definition->getMessage() );
+ $this->assertTrue( $definition->isList() );
+ $this->assertTrue( $definition->isRequired() );
+ }
+
+ public function testNewDefinition() {
+ $definition = ParamDefinitionFactory::newDefault()->newDefinition(
+ 'integer',
+ 'some-list',
+ null,
+ 'test-message',
+ true
+ );
+
+ $this->assertSame( 'some-list', $definition->getName() );
+ $this->assertSame( 'integer', $definition->getType() );
+ $this->assertSame( 'test-message', $definition->getMessage() );
+ $this->assertTrue( $definition->isList() );
+ $this->assertTrue( $definition->isRequired() );
+ }
+
+ public function testNewDefinitionFromArray_typeDefaultsToString() {
+ $this->assertSame( 'string', $this->newBasicParamFromArray()->getType() );
+ }
+
+ private function newBasicParamFromArray(): ParamDefinition {
+ return ParamDefinitionFactory::newDefault()->newDefinitionFromArray(
+ [
+ 'name' => 'irrelevant',
+ 'message' => 'irrelevant'
+ ]
+ );
+ }
+
+ public function testNewDefinitionFromArray_isListDefaultsToFalse() {
+ $this->assertFalse( $this->newBasicParamFromArray()->isList() );
+ }
+
+ public function testNewDefinitionFromArray_isRequiredDefaultsToTrue() {
+ $this->assertTrue( $this->newBasicParamFromArray()->isRequired() );
+ }
+
+ public function testNewDefinitionFromArray_optionsAreSet() {
+ $arrayDefinition = [
+ 'name' => 'some-list',
+ 'type' => 'integer',
+ 'message' => 'test-message',
+ 'islist' => true
+ ];
+
+ $definition = ParamDefinitionFactory::newDefault()->newDefinitionFromArray( $arrayDefinition );
+
+ $this->assertSame( $arrayDefinition, $definition->getOptions() );
+ }
+
+ public function testNewDefinitionsFromArrays_preservesDefinitionInstances() {
+ $this->assertEquals(
+ [
+ 'kittens' => new ParamDefinition( ParameterTypes::STRING, 'kittens' ),
+ 'cats' => new ParamDefinition( ParameterTypes::INTEGER, 'cats' ),
+ ],
+ ParamDefinitionFactory::newDefault()->newDefinitionsFromArrays(
+ [
+ new ParamDefinition( ParameterTypes::STRING, 'kittens' ),
+ new ParamDefinition( ParameterTypes::INTEGER, 'cats' ),
+ ]
+ )
+ );
+ }
+
+ public function testNewDefinitionsFromArrays_handlesNamesAsKeys() {
+ $definitions = ParamDefinitionFactory::newDefault()->newDefinitionsFromArrays(
+ [
+ 'kittens' => [
+ 'type' => ParameterTypes::STRING,
+ 'message' => 'test-message',
+ ]
+ ]
+ );
+
+ $this->assertSame( 'kittens', $definitions['kittens']->getName() );
+ }
+
+ public function testNewDefinitionsFromArrays_nameFieldTakesPriorityOverKey() {
+ $definitions = ParamDefinitionFactory::newDefault()->newDefinitionsFromArrays(
+ [
+ 'cats' => [
+ 'name' => 'kittens',
+ 'type' => ParameterTypes::STRING,
+ 'message' => 'test-message',
+ ]
+ ]
+ );
+
+ $this->assertSame( 'kittens', $definitions['kittens']->getName() );
+ }
+
+ public function testNewDefinitionsFromArrays_missingNameLeadsToException() {
+ $this->expectException( \Exception::class );
+
+ ParamDefinitionFactory::newDefault()->newDefinitionsFromArrays(
+ [
+ [
+ 'type' => ParameterTypes::STRING,
+ 'message' => 'test-message',
+ ]
+ ]
+ );
+ }
+
+}