indexer = $this->getMockBuilder('\Drupal\drupalmoduleupgrader\Plugin\DMU\Indexer\Functions') ->disableOriginalConstructor() ->getMock(); $this->container ->get('plugin.manager.drupalmoduleupgrader.indexer') ->method('createInstance') ->with('function') ->willReturn($this->indexer); } /** * @expectedException \RuntimeException */ public function testInvalidBasePath() { // Trying to create a target with an invalid path should instantly // throw an exception. new Target('foobar', $this->container); } public function testID() { $this->assertEquals('foo', $this->target->id()); } public function testGetBasePath() { $this->assertEquals($this->dir->url(), $this->target->getBasePath()); } public function testGetPath() { $this->assertEquals($this->dir->getChild('foo.module')->url(), $this->target->getPath('.module')); $this->assertEquals($this->dir->getChild('foo.install')->url(), $this->target->getPath('.install')); } public function testGetFinder() { $this->assertInstanceOf('\Symfony\Component\Finder\Finder', $this->target->getFinder()); } /** * @depends testGetFinder */ public function testFinder() { $expected = $this->target->getFinder() ->exclude('menu_example') ->name('*.module') ->name('*.install') ->name('*.inc') ->name('*.test') ->name('*.php'); $this->assertEquals(array_keys(iterator_to_array($expected)), array_keys(iterator_to_array($this->target->getFinder()))); } public function testGetIndexer() { $this->assertSame($this->indexer, $this->target->getIndexer('function')); } public function testGetServices() { $this->assertInstanceOf('\Doctrine\Common\Collections\ArrayCollection', $this->target->getServices()); } public function testImplementsHook() { $this->indexer->method('has')->willReturnMap([ ['hook_permission', TRUE], ['hook_menu_alter', FALSE], ]); $this->assertTrue($this->target->implementsHook('permission')); $this->assertFalse($this->target->implementsHook('menu_alter')); } /** * @expectedException \InvalidArgumentException */ public function testExecuteUnimplementedHook() { $this->indexer->method('has')->with('hook_menu')->willReturn(FALSE); $this->target->executeHook('menu'); } public function testExecuteHook() { $expected = [ 'foo/baz' => [ 'title' => 'It worked!', ], ]; $this->indexer->method('has')->with('hook_menu')->willReturn(TRUE); $this->indexer->method('hasExecutable')->with('hook_menu')->willReturn(TRUE); $this->indexer->method('execute')->with('hook_menu')->willReturn($expected); $actual = $this->target->executeHook('menu'); $this->assertInternalType('array', $actual); $this->assertSame($expected, $actual); } }