public function testLoadMetadata() { $version = '1.1'; $requestType = 'rest'; $entityClass = 'Test\\Class'; $configExtras = [new TestConfigSection('section1'), new TestConfigSection('section2')]; $config = ConfigUtil::getInitialConfig(); $metadata = new EntityMetadata(); $metadataExtras = [new TestMetadataExtra('extra1')]; $this->context->setVersion($version); $this->context->setRequestType($requestType); $this->context->setConfigExtras($configExtras); $this->context->setMetadataExtras($metadataExtras); $this->context->setClassName($entityClass); $this->configProvider->expects($this->once())->method('getConfig')->with($entityClass, $version, [$requestType], $configExtras)->willReturn([ConfigUtil::DEFINITION => $config]); $this->metadataProvider->expects($this->once())->method('getMetadata')->with($entityClass, $version, [$requestType], $metadataExtras, $config)->willReturn($metadata); // test that metadata are not loaded yet $this->assertFalse($this->context->hasMetadata()); $this->assertSame($metadata, $this->context->getMetadata()); // load metadata $this->assertTrue($this->context->hasMetadata()); $this->assertTrue($this->context->has(Context::METADATA)); $this->assertSame($metadata, $this->context->get(Context::METADATA)); $this->assertEquals($config, $this->context->getConfig()); // test that metadata are loaded only once $this->assertSame($metadata, $this->context->getMetadata()); }