diff --git a/model/Index/Service/AdvancedSearchIndexDocumentBuilder.php b/model/Index/Service/AdvancedSearchIndexDocumentBuilder.php index 9c735ed..fb4edce 100644 --- a/model/Index/Service/AdvancedSearchIndexDocumentBuilder.php +++ b/model/Index/Service/AdvancedSearchIndexDocumentBuilder.php @@ -44,6 +44,8 @@ class AdvancedSearchIndexDocumentBuilder implements IndexDocumentBuilderInterfac { private const ASSETS_KEY = 'asset_uris'; private const TEST_KEY = 'test_uri'; + private const PROPERTY_MARKING_TEST = 'http://www.tao.lu/Ontologies/TAOTest.rdf#TestTestModel'; + private const PROPERTY_MARKING_ITEM = 'http://www.tao.lu/Ontologies/TAOItem.rdf#ItemModel'; private ElementReferencesExtractor $itemElementReferencesExtractor; private QtiItemService $qtiItemService; @@ -178,6 +180,14 @@ private function getResolverForResource( private function isA(string $type, core_kernel_classes_Resource $resource): bool { + if ($type === TaoOntology::CLASS_URI_TEST && $this->isTest($resource)) { + return true; + } + + if ($type === TaoOntology::CLASS_URI_ITEM && $this->isItem($resource)) { + return true; + } + $rootClass = $resource->getClass($type); foreach ($resource->getTypes() as $type) { @@ -188,4 +198,14 @@ private function isA(string $type, core_kernel_classes_Resource $resource): bool return false; } + + private function isTest(core_kernel_classes_Resource $resource): bool + { + return !!$resource->getOnePropertyValue($resource->getProperty(self::PROPERTY_MARKING_TEST)); + } + + private function isItem(core_kernel_classes_Resource $resource): bool + { + return !!$resource->getOnePropertyValue($resource->getProperty(self::PROPERTY_MARKING_ITEM)); + } } diff --git a/tests/Unit/Index/Service/AdvancedSearchIndexDocumentBuilderTest.php b/tests/Unit/Index/Service/AdvancedSearchIndexDocumentBuilderTest.php index fd69e25..7e66d4e 100644 --- a/tests/Unit/Index/Service/AdvancedSearchIndexDocumentBuilderTest.php +++ b/tests/Unit/Index/Service/AdvancedSearchIndexDocumentBuilderTest.php @@ -306,6 +306,23 @@ private function mockResource(array $types): MockObject [TaoOntology::CLASS_URI_OBJECT, $this->genericType], ]); + $testProp = new \core_kernel_classes_Property(TaoOntology::CLASS_URI_TEST); + $itemProp = new \core_kernel_classes_Property(TaoOntology::CLASS_URI_ITEM); + $anItem + ->method('getProperty') + ->willReturnMap([ + ['http://www.tao.lu/Ontologies/TAOTest.rdf#TestTestModel', $testProp], + ['http://www.tao.lu/Ontologies/TAOItem.rdf#ItemModel', $itemProp], + ]); + + $anItem + ->method('getOnePropertyValue') + ->willReturnCallback( + function (\core_kernel_classes_Property $res) use ($types) { + return in_array($res->getUri(), $types); + } + ); + return $anItem; }