77 lines
2.6 KiB
PHP
77 lines
2.6 KiB
PHP
<?php
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
namespace CloudObjects\SDK;
|
|
|
|
use Exception;
|
|
use ML\IRI\IRI;
|
|
use ML\JsonLD\Node;
|
|
use ReflectionProperty;
|
|
|
|
class ObjectRetrieverFacadeTest extends \PHPUnit\Framework\TestCase {
|
|
|
|
protected function setUp(): void {
|
|
$prop = new ReflectionProperty(ObjectRetrieverFacade::class, 'instance');
|
|
$prop->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));
|
|
}
|
|
|
|
}
|