store = $this->getMockBuilder( '\SMW\Store' ) ->disableOriginalConstructor() ->getMockForAbstractClass(); $this->iteratorFactory = $this->getMockBuilder( '\SMW\IteratorFactory' ) ->disableOriginalConstructor() ->getMock(); $this->appendIterator = $this->getMockBuilder( '\SMW\Iterators\AppendIterator' ) ->disableOriginalConstructor() ->getMock(); } public function testCanConstruct() { $this->assertInstanceOf( ChangePropagationEntityLookup::class, new ChangePropagationEntityLookup( $this->store, $this->iteratorFactory ) ); } public function testFindByProperty() { $property = new DIProperty( 'Foo' ); $this->iteratorFactory->expects( $this->any() ) ->method( 'newAppendIterator' ) ->willReturn( $this->appendIterator ); $instance = new ChangePropagationEntityLookup( $this->store, $this->iteratorFactory ); $this->assertInstanceOf( 'Iterator', $instance->findByProperty( $property ) ); } public function testFindByProperty_TypePropagation() { $property = new DIProperty( 'Foo' ); $this->iteratorFactory->expects( $this->any() ) ->method( 'newAppendIterator' ) ->willReturn( $this->appendIterator ); $propertyTableInfoFetcher = $this->getMockBuilder( '\SMW\SQLStore\PropertyTableInfoFetcher' ) ->disableOriginalConstructor() ->getMock(); $propertyTableInfoFetcher->expects( $this->any() ) ->method( 'getDefaultDataItemTables' ) ->willReturn( [] ); $entityIdManager = $this->getMockBuilder( '\stdClass' ) ->disableOriginalConstructor() ->setMethods( [ 'getSMWPropertyID', 'getDataItemPoolHashListFor' ] ) ->getMock(); $entityIdManager->expects( $this->any() ) ->method( 'getSMWPropertyID' ) ->willReturn( 42 ); $entityIdManager->expects( $this->any() ) ->method( 'getDataItemPoolHashListFor' ) ->willReturn( [] ); $store = $this->getMockBuilder( '\SMW\SQLStore\SQLStore' ) ->disableOriginalConstructor() ->getMock(); $store->expects( $this->any() ) ->method( 'getObjectIds' ) ->willReturn( $entityIdManager ); $store->expects( $this->any() ) ->method( 'getPropertyTableInfoFetcher' ) ->willReturn( $propertyTableInfoFetcher ); $instance = new ChangePropagationEntityLookup( $store, $this->iteratorFactory ); $instance->isTypePropagation( true ); $res = $instance->findByProperty( $property ); $this->assertInstanceOf( 'Iterator', $res ); $this->assertEquals( $res, $instance->findAll( $property ) ); } public function testFindByCategory() { $category = new DIWikiPage( 'Foo', NS_CATEGORY ); $this->iteratorFactory->expects( $this->any() ) ->method( 'newAppendIterator' ) ->willReturn( $this->appendIterator ); $store = $this->getMockBuilder( '\SMW\SQLStore\SQLStore' ) ->disableOriginalConstructor() ->getMock(); $store->expects( $this->any() ) ->method( 'getPropertySubjects' ) ->with( new DIProperty( '_INST' ), $this->anything() ) ->willReturn( [] ); $store->expects( $this->any() ) ->method( 'getPropertyValues' ) ->with( $this->anything(), new DIProperty( '_SUBC' ) ) ->willReturn( [ DIWikiPage::newFromText( 'Bar' ) ] ); $instance = new ChangePropagationEntityLookup( $store, $this->iteratorFactory ); $res = $instance->findByCategory( $category ); $this->assertInstanceOf( 'Iterator', $res ); $this->assertEquals( $res, $instance->findAll( $category ) ); } public function testFindAllOnUnknownTypeThrowsException() { $instance = new ChangePropagationEntityLookup( $this->store, $this->iteratorFactory ); $this->expectException( 'RuntimeException' ); $instance->findAll( 'Foo' ); } }