17 import(
'lib.pkp.tests.PKPTestCase');
18 import(
'lib.pkp.classes.filter.Filter');
19 import(
'lib.pkp.tests.classes.filter.TestClass1');
20 import(
'lib.pkp.tests.classes.filter.TestClass2');
28 $mockFilter = $this->getFilterMock();
31 self::assertEquals(
'Mock_Filter_', substr($mockFilter->getDisplayName(), 0, 12));
32 $mockFilter->setDisplayName(
'Some other display name');
33 self::assertEquals(
'Some other display name', $mockFilter->getDisplayName());
34 $mockFilter->setSequence(5);
35 self::assertEquals(5, $mockFilter->getSequence());
38 $mockFilter->addError(
'some error message');
39 $mockFilter->addError(
'a second error message');
40 $expectedErrors = array(
42 'a second error message'
44 self::assertEquals($expectedErrors, $mockFilter->getErrors());
45 self::assertTrue($mockFilter->hasErrors());
46 $mockFilter->clearErrors();
47 self::assertEquals(array(), $mockFilter->getErrors());
51 $inputTypeDescription =
'class::lib.pkp.tests.classes.filter.TestClass1';
52 $outputTypeDescription =
'class::lib.pkp.tests.classes.filter.TestClass2';
53 self::assertEquals($inputTypeDescription, $mockFilter->getInputType()->getTypeDescription());
54 self::assertEquals($outputTypeDescription, $mockFilter->getOutputType()->getTypeDescription());
58 $testInput->testField =
'some filter input';
59 self::assertInstanceOf(
'TestClass2', $testOutput = $mockFilter->execute($testInput));
61 self::assertEquals($this->getTestOutput(), $testOutput);
62 self::assertEquals($testInput, $mockFilter->getLastInput());
63 self::assertEquals($this->getTestOutput(), $mockFilter->getLastOutput());
68 $mockFilter = $this->getFilterMock();
69 $mockFilter->setData(
'phpVersionMin',
'5.0.0');
70 $testOutput = $mockFilter->execute($testInput);
71 $runtimeEnvironment = $mockFilter->getRuntimeEnvironment();
72 self::assertEquals(
'5.0.0', $runtimeEnvironment->getPhpVersionMin());
76 $mockFilter = $this->getFilterMock();
77 $mockFilter->setRuntimeEnvironment($runtimeEnvironment);
78 $testOutput = $mockFilter->execute($testInput);
79 $runtimeEnvironment = $mockFilter->getRuntimeEnvironment();
80 self::assertEquals(
'5.0.0', $runtimeEnvironment->getPhpVersionMin());
81 self::assertEquals(
'5.0.0', $mockFilter->getData(
'phpVersionMin'));
85 self::assertNull($mockFilter->execute($unsupportedInput));
86 self::assertNull($mockFilter->getLastInput());
87 self::assertNull($mockFilter->getLastOutput());
90 $mockFilter = $this->getFilterMock(
'class::lib.pkp.tests.classes.filter.TestClass1');
91 self::assertNull($mockFilter->execute($testInput));
92 self::assertEquals($testInput, $mockFilter->getLastInput());
93 self::assertNull($mockFilter->getLastOutput());
100 $mockFilter = $this->getFilterMock();
101 $mockFilter->setData(
'phpVersionMin',
'20.0.0');
102 $this->expectError();
103 $testOutput = $mockFilter->execute($testInput);
113 return $this->getTestOutput();
121 private function getTestOutput() {
123 if (is_null($output)) {
126 $output->testField =
'some filter result';
135 private function getFilterMock($outputType =
'class::lib.pkp.tests.classes.filter.TestClass2') {
137 $mockFilter = $this->getMockBuilder(Filter::class)
138 ->setMethods(array(
'process'))
139 ->setConstructorArgs(array(
'class::lib.pkp.tests.classes.filter.TestClass1', $outputType))
143 $mockFilter->expects($this->any())
145 ->will($this->returnCallback(array($this,
'processCallback')));