public function testGetMetadataUndefinedClassWithCache()
 {
     $this->configProvider->expects($this->once())->method('hasConfig')->with(self::UNDEFINED_CLASS)->willReturn(false);
     $this->configProvider->expects($this->never())->method('getConfig');
     $this->cache->expects($this->at(0))->method('fetch')->with(self::UNDEFINED_CLASS)->willReturn(false);
     $this->cache->expects($this->at(2))->method('fetch')->with(self::UNDEFINED_CLASS)->willReturn(true);
     $this->cache->expects($this->once())->method('save')->with(self::UNDEFINED_CLASS, true);
     $metadata = new OwnershipMetadata();
     $providerWithCleanCache = clone $this->provider;
     // no cache
     $this->assertEquals($metadata, $this->provider->getMetadata(self::UNDEFINED_CLASS));
     // local cache
     $this->assertEquals($metadata, $this->provider->getMetadata(self::UNDEFINED_CLASS));
     // cache
     $this->assertEquals($metadata, $providerWithCleanCache->getMetadata(self::UNDEFINED_CLASS));
 }