17 import(
'lib.pkp.tests.DatabaseTestCase');
18 import(
'lib.pkp.classes.filter.FilterDAO');
19 import(
'lib.pkp.classes.filter.FilterGroup');
26 return array(
'filters',
'filter_settings',
'filter_groups');
29 protected function setUp() : void {
34 $someGroup->setSymbolic(
'test-filter-group');
35 $someGroup->setDisplayName(
'some.test.filter.group.display');
36 $someGroup->setDescription(
'some.test.filter.group.description');
37 $someGroup->setInputType(
'primitive::string');
38 $someGroup->setOutputType(
'primitive::string');
40 self::assertTrue(is_integer($filterGroupId = $filterGroupDao->insertObject($someGroup)));
50 $settings = array(
'seq' =>
'1',
'some-key' =>
'some-value');
51 $testFilter = $filterDao->configureObject(
'lib.pkp.tests.classes.filter.PersistableTestFilter',
'test-filter-group', $settings,
false, 9999);
52 self::assertInstanceOf(
'PersistableFilter', $testFilter);
53 $filterId = $testFilter->getId();
54 self::assertTrue(is_integer($filterId));
57 self::assertTrue(is_numeric($filterId));
58 self::assertTrue($filterId > 0);
61 $filterById = $filterDao->getObjectById($filterId);
62 self::assertEquals($testFilter, $filterById);
65 $filtersByGroup = $filterDao->getObjectsByGroup(
'test-filter-group', 9999);
66 self::assertTrue(count($filtersByGroup) == 1);
67 $filterByGroup = array_pop($filtersByGroup);
68 self::assertEquals($testFilter, $filterByGroup);
71 $filtersByClassFactory = $filterDao->getObjectsByClass(
'lib.pkp.tests.classes.filter.PersistableTestFilter', 9999);
72 self::assertTrue($filtersByClassFactory->getCount() == 1);
73 $filterByClass = $filtersByClassFactory->next();
74 self::assertEquals($testFilter, $filterByClass);
77 $filtersByGroupAndClassFactory = $filterDao->getObjectsByGroupAndClass(
'test-filter-group',
'lib.pkp.tests.classes.filter.PersistableTestFilter', 9999);
78 self::assertTrue($filtersByGroupAndClassFactory->getCount() == 1);
79 $filterByGroupAndClass = $filtersByGroupAndClassFactory->next();
80 self::assertEquals($testFilter, $filterByGroupAndClass);
83 $testFilter->setData(
'some-key',
'another value');
84 $testFilter->setIsTemplate(
true);
86 $filterDao->updateObject($testFilter);
87 $filterAfterUpdate = $filterDao->getObject($testFilter);
88 self::assertEquals($testFilter, $filterAfterUpdate);
91 $filterDao->deleteObject($testFilter);
92 self::assertNull($filterDao->getObjectById($filterId));
96 $this->markTestSkipped();
100 $subFilter1Settings = array(
'seq' => 1,
'displayName' =>
'1st sub-filter');
101 $subFilter1 = $filterDao->configureObject(
'lib.pkp.tests.classes.filter.PersistableTestFilter',
'test-filter-group', $subFilter1Settings,
false, 9999, array(),
false);
104 $subSubFilter1Settings = array(
'seq' => 1,
'displayName' =>
'1st sub-sub-filter');
105 $subSubFilter1 = $filterDao->configureObject(
'lib.pkp.tests.classes.filter.PersistableTestFilter',
'test-filter-group', $subSubFilter1Settings,
false, 9999, array(),
false);
106 $subSubFilter2Settings = array(
'seq' => 2,
'displayName' =>
'2nd sub-sub-filter');
107 $subSubFilter2 = $filterDao->configureObject(
'lib.pkp.tests.classes.filter.PersistableTestFilter',
'test-filter-group', $subSubFilter2Settings,
false, 9999, array(),
false);
108 $subSubFilters = array($subSubFilter1, $subSubFilter2);
111 $subFilter2Settings = array(
'seq' => 2,
'displayName' =>
'2nd sub-filter');
112 $subFilter2 = $filterDao->configureObject(
'lib.pkp.classes.filter.GenericMultiplexerFilter',
'test-filter-group', $subFilter2Settings,
false, 9999, $subSubFilters,
false);
115 $subFilters = array($subFilter1, $subFilter2);
116 $testFilter = $filterDao->configureObject(
'lib.pkp.classes.filter.GenericSequencerFilter',
'test-filter-group', array(
'seq' => 1),
false, 9999, $subFilters);
117 self::assertInstanceOf(
'GenericSequencerFilter', $testFilter);
118 $filterId = $testFilter->getId();
119 self::assertTrue(is_numeric($filterId));
120 self::assertTrue($filterId > 0);
124 $subFilters =& $testFilter->getFilters();
125 self::assertEquals(2, count($subFilters));
126 foreach($subFilters as $subFilter) {
127 self::assertTrue($subFilter->getId() > 0);
128 self::assertEquals($filterId, $subFilter->getParentFilterId());
130 $subSubFilters =& $subFilters[2]->getFilters();
131 self::assertEquals(2, count($subSubFilters));
132 foreach($subSubFilters as $subSubFilter) {
133 self::assertTrue($subSubFilter->getId() > 0);
134 self::assertEquals($subFilters[2]->getId(), $subSubFilter->getParentFilterId());
138 $filterById = $filterDao->getObjectById($filterId);
139 self::assertEquals($testFilter, $filterById);
143 $testFilter->setDisplayName(
'composite filter');
144 $testFilter->setSequence(9999);
145 $testFilter->setId($filterId);
146 $testFilter->setIsTemplate(
true);
150 $testFilter->addFilter($subFilter1);
152 $subFilter3->setDisplayName(
'3rd sub-filter');
153 $subFilter3->addFilter($subSubFilter1);
155 $subSubFilter3->setDisplayName(
'3rd sub-sub-filter');
156 $subFilter3->addFilter($subSubFilter3);
157 $testFilter->addFilter($subFilter3);
159 $filterDao->updateObject($testFilter);
160 $filterAfterUpdate = $filterDao->getObject($testFilter);
161 self::assertEquals($testFilter, $filterAfterUpdate);
164 $filterDao->deleteObject($testFilter);
165 self::assertNull($filterDao->getObjectById($filterId));