setAccessible(true); $prop->setValue(null, null); } public function testThrowsExceptionBeforeInitialization(): void { $this->expectException(Exception::class); ObjectRetrieverFacade::getObjectNode(new IRI('coid://cloudobjects.io')); } public function testForwardsGetObjectNodeToInstance(): void { $coid = new IRI('coid://cloudobjects.io'); $mockNode = $this->createMock(Node::class); $mockRetriever = $this->createMock(ObjectRetriever::class); $mockRetriever->expects($this->once()) ->method('getObjectNode') ->with($coid) ->willReturn($mockNode); ObjectRetrieverFacade::setObjectRetriever($mockRetriever); $this->assertSame($mockNode, ObjectRetrieverFacade::getObjectNode($coid)); } public function testForwardsGetCloudObjectToInstance(): void { $coid = new IRI('coid://cloudobjects.io'); $mockCloudObject = $this->createMock(CloudObject::class); $mockRetriever = $this->createMock(ObjectRetriever::class); $mockRetriever->expects($this->once()) ->method('getCloudObject') ->with($coid) ->willReturn($mockCloudObject); ObjectRetrieverFacade::setObjectRetriever($mockRetriever); $this->assertSame($mockCloudObject, ObjectRetrieverFacade::getCloudObject($coid)); } public function testReplacingRetrieverUsesNewInstance(): void { $coid = new IRI('coid://cloudobjects.io'); $mockNode = $this->createMock(Node::class); $firstRetriever = $this->createMock(ObjectRetriever::class); $firstRetriever->expects($this->never())->method('getObjectNode'); $secondRetriever = $this->createMock(ObjectRetriever::class); $secondRetriever->expects($this->once()) ->method('getObjectNode') ->with($coid) ->willReturn($mockNode); ObjectRetrieverFacade::setObjectRetriever($firstRetriever); ObjectRetrieverFacade::setObjectRetriever($secondRetriever); $this->assertSame($mockNode, ObjectRetrieverFacade::getObjectNode($coid)); } }