'plugin_name1', 'PLUGIN_TYPE' => 'plugin_type1', 'PLUGIN_VERSION' => 'plugin_version1', 'PLUGIN_AUTHOR' => 'plugin_author1', 'PLUGIN_LICENSE' => 'plugin_license1', 'PLUGIN_DESCRIPTION' => 'plugin_description1', 'PLUGIN_STATUS' => 'ACTIVE', ]; $resultStub = $this->createMock(DummyResult::class); $dbi = $this->getMockBuilder(DatabaseInterface::class) ->disableOriginalConstructor() ->getMock(); $dbi->expects($this->once()) ->method('query') ->will($this->returnValue($resultStub)); $resultStub->expects($this->exactly(2)) ->method('fetchAssoc') ->will($this->onConsecutiveCalls($row, [])); $response = new ResponseRenderer(); $controller = new PluginsController($response, new Template(), new Plugins($dbi), $GLOBALS['dbi']); $this->dummyDbi->addSelectDb('mysql'); $controller(); $this->assertAllSelectsConsumed(); $actual = $response->getHTMLResult(); //validate 1:Items $this->assertStringContainsString('Plugin', $actual); $this->assertStringContainsString('Description', $actual); $this->assertStringContainsString('Version', $actual); $this->assertStringContainsString('Author', $actual); $this->assertStringContainsString('License', $actual); //validate 2: one Item HTML $this->assertStringContainsString('plugin_name1', $actual); $this->assertStringContainsString('plugin_description1', $actual); $this->assertStringContainsString('plugin_version1', $actual); $this->assertStringContainsString('plugin_author1', $actual); $this->assertStringContainsString('plugin_license1', $actual); } }