18 require_mock_env(
'env1');
20 import(
'lib.pkp.tests.PKPTestCase');
21 import(
'lib.pkp.classes.metadata.MetadataProperty');
39 $metadataProperty =
new MetadataProperty(
'testElement', array(0x001), array(METADATA_PROPERTY_TYPE_COMPOSITE => 0x002),
false, METADATA_PROPERTY_CARDINALITY_MANY,
'non.default.displayName',
'non.default.validationMessage',
true);
40 self::assertEquals(
'testElement', $metadataProperty->getName());
41 self::assertEquals(array(0x001), $metadataProperty->getAssocTypes());
42 self::assertEquals(array(METADATA_PROPERTY_TYPE_COMPOSITE => array(0x002)), $metadataProperty->getAllowedTypes());
43 self::assertFalse($metadataProperty->getTranslated());
44 self::assertEquals(METADATA_PROPERTY_CARDINALITY_MANY, $metadataProperty->getCardinality());
45 self::assertEquals(
'non.default.displayName', $metadataProperty->getDisplayName());
46 self::assertEquals(
'non.default.validationMessage', $metadataProperty->getValidationMessage());
47 self::assertTrue($metadataProperty->getMandatory());
48 self::assertEquals(
'TestElement', $metadataProperty->getId());
51 $metadataProperty =
new MetadataProperty(
'testElement', array(0x001), METADATA_PROPERTY_TYPE_STRING,
true);
52 self::assertTrue($metadataProperty->getTranslated());
56 self::assertEquals(
'testElement', $metadataProperty->getName());
57 self::assertEquals(array(), $metadataProperty->getAssocTypes());
58 self::assertEquals(array(METADATA_PROPERTY_TYPE_STRING => array(
null)), $metadataProperty->getAllowedTypes());
59 self::assertFalse($metadataProperty->getTranslated());
60 self::assertEquals(METADATA_PROPERTY_CARDINALITY_ONE, $metadataProperty->getCardinality());
61 self::assertEquals(
'metadata.property.displayName.testElement', $metadataProperty->getDisplayName());
62 self::assertEquals(
'metadata.property.validationMessage.testElement', $metadataProperty->getValidationMessage());
63 self::assertFalse($metadataProperty->getMandatory());
64 self::assertEquals(
'TestElement', $metadataProperty->getId());
72 $this->expectException(InvalidArgumentException::class);
73 $metadataProperty =
new MetadataProperty(
'testElement', array(0x001), METADATA_PROPERTY_TYPE_COMPOSITE,
false, METADATA_PROPERTY_CARDINALITY_MANY);
81 $this->expectException(InvalidArgumentException::class);
82 $metadataProperty =
new MetadataProperty(
'testElement', array(0x001), array(METADATA_PROPERTY_TYPE_COMPOSITE =>
'string'),
false, METADATA_PROPERTY_CARDINALITY_MANY);
90 $this->expectException(InvalidArgumentException::class);
91 $metadataProperty =
new MetadataProperty(
'testElement', array(0x001), METADATA_PROPERTY_TYPE_VOCABULARY);
99 $this->expectException(InvalidArgumentException::class);
100 $metadataProperty =
new MetadataProperty(
'testElement', array(0x001), array(METADATA_PROPERTY_TYPE_VOCABULARY => 0x002),
false, METADATA_PROPERTY_CARDINALITY_MANY);
108 $this->expectException(InvalidArgumentException::class);
109 $metadataProperty =
new MetadataProperty(
'testElement', array(0x001), array(METADATA_PROPERTY_TYPE_STRING => 0x002),
false, METADATA_PROPERTY_CARDINALITY_MANY);
117 $this->expectException(InvalidArgumentException::class);
118 $metadataProperty =
new MetadataProperty(
'testElement', array(0x001), 0x99999999,
true, METADATA_PROPERTY_CARDINALITY_MANY);
126 $this->expectException(InvalidArgumentException::class);
127 $metadataProperty =
new MetadataProperty(
'testElement', array(0x001), METADATA_PROPERTY_TYPE_COMPOSITE,
true, 0x99999999);
135 self::assertEquals(array(METADATA_PROPERTY_TYPE_STRING =>
null), $metadataProperty->isValid(
'any string'));
136 self::assertFalse($metadataProperty->isValid(
null));
137 self::assertFalse($metadataProperty->isValid(5));
138 self::assertFalse($metadataProperty->isValid(array(
'string1',
'string2')));
145 $metadataProperty =
new MetadataProperty(
'testElement', array(), METADATA_PROPERTY_TYPE_URI);
146 self::assertFalse($metadataProperty->isValid(
'any string'));
147 self::assertEquals(array(METADATA_PROPERTY_TYPE_URI =>
null), $metadataProperty->isValid(
'ftp://some.domain.org/path'));
148 self::assertFalse($metadataProperty->isValid(
null));
149 self::assertFalse($metadataProperty->isValid(5));
150 self::assertFalse($metadataProperty->isValid(array(
'ftp://some.domain.org/path',
'http://some.domain.org/')));
160 $testControlledVocab = $controlledVocabDao->_build(
'test-controlled-vocab', 0, 0);
164 $testControlledVocabEntry = $controlledVocabEntryDao->newDataObject();
165 $testControlledVocabEntry->setName(
'testEntry',
'en_US');
166 $testControlledVocabEntry->setControlledVocabId($testControlledVocab->getId());
167 $controlledVocabEntryId = $controlledVocabEntryDao->insertObject($testControlledVocabEntry);
169 $metadataProperty =
new MetadataProperty(
'testElement', array(), array(METADATA_PROPERTY_TYPE_VOCABULARY =>
'test-controlled-vocab'));
172 self::assertEquals(array(METADATA_PROPERTY_TYPE_VOCABULARY =>
'test-controlled-vocab'), $metadataProperty->isValid($controlledVocabEntryId));
173 self::assertFalse($metadataProperty->isValid($controlledVocabEntryId + 1));
176 $controlledVocabDao->deleteObject($testControlledVocab);
183 $metadataProperty =
new MetadataProperty(
'testElement', array(), METADATA_PROPERTY_TYPE_DATE);
184 self::assertEquals(array(METADATA_PROPERTY_TYPE_DATE =>
null), $metadataProperty->isValid(
'2009-10-25'));
185 self::assertEquals(array(METADATA_PROPERTY_TYPE_DATE =>
null), $metadataProperty->isValid(
'2020-11'));
186 self::assertEquals(array(METADATA_PROPERTY_TYPE_DATE =>
null), $metadataProperty->isValid(
'1847'));
187 self::assertFalse($metadataProperty->isValid(
'XXXX'));
188 self::assertFalse($metadataProperty->isValid(
'2009-10-35'));
189 self::assertFalse($metadataProperty->isValid(
'2009-13-01'));
190 self::assertFalse($metadataProperty->isValid(
'2009-12-1'));
191 self::assertFalse($metadataProperty->isValid(
'2009-13'));
192 self::assertFalse($metadataProperty->isValid(5));
193 self::assertFalse($metadataProperty->isValid(array(
'2009-10-25',
'2009-10-26')));
200 $metadataProperty =
new MetadataProperty(
'testElement', array(), METADATA_PROPERTY_TYPE_INTEGER);
201 self::assertEquals(array(METADATA_PROPERTY_TYPE_INTEGER =>
null), $metadataProperty->isValid(5));
202 self::assertFalse($metadataProperty->isValid(
null));
203 self::assertFalse($metadataProperty->isValid(
'a string'));
204 self::assertFalse($metadataProperty->isValid(array(4, 8)));
211 $metadataProperty =
new MetadataProperty(
'testElement', array(), array(METADATA_PROPERTY_TYPE_COMPOSITE => 0x002),
false, METADATA_PROPERTY_CARDINALITY_ONE);
213 import(
'lib.pkp.classes.metadata.MetadataDescription');
214 $metadataDescription =
new MetadataDescription(
'lib.pkp.classes.metadata.MetadataSchema', 0x002);
215 $anotherMetadataDescription = clone($metadataDescription);
216 $stdObject =
new stdClass();
218 self::assertEquals(array(METADATA_PROPERTY_TYPE_COMPOSITE => 0x002), $metadataProperty->isValid($metadataDescription));
219 self::assertEquals(array(METADATA_PROPERTY_TYPE_COMPOSITE => 0x002), $metadataProperty->isValid(
'2:5'));
220 self::assertFalse($metadataProperty->isValid(
'1:5'));
221 self::assertFalse($metadataProperty->isValid(
'2:xxx'));
222 self::assertFalse($metadataProperty->isValid(
'2'));
223 self::assertFalse($metadataProperty->isValid(
null));
224 self::assertFalse($metadataProperty->isValid(5));
225 self::assertFalse($metadataProperty->isValid($stdObject));
226 self::assertFalse($metadataProperty->isValid(array($metadataDescription, $anotherMetadataDescription)));
233 $metadataProperty =
new MetadataProperty(
'testElement', array(), array(METADATA_PROPERTY_TYPE_DATE, METADATA_PROPERTY_TYPE_INTEGER),
false, METADATA_PROPERTY_CARDINALITY_ONE);
234 self::assertEquals(array(METADATA_PROPERTY_TYPE_DATE =>
null), $metadataProperty->isValid(
'2009-07-28'));
235 self::assertEquals(array(METADATA_PROPERTY_TYPE_INTEGER =>
null), $metadataProperty->isValid(5));
236 self::assertFalse($metadataProperty->isValid(
null));
237 self::assertFalse($metadataProperty->isValid(
'string'));