Implemented a facade for ObjectRetriever to allow static access
This commit is contained in:
76
tests/OfflineTests/ObjectRetrieverFacadeTest.php
Normal file
76
tests/OfflineTests/ObjectRetrieverFacadeTest.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?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));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user