tassoman
(Tassoman)
November 19, 2015, 3:39pm
1
My Plugin is essentially a PHPunit tests container, it should catch metrics from a remote Piwik installation, then from local installation.
My problem is submitting a local request to Piwik\API, I’m simply getting Exception: General_ExceptionInvalidRendererFormat
This is the code:
private $queryURL; private $local; private $remoteHost = 'http://demo.piwik.org/index.php?'; private $queryParams = array( 'module=API', 'method=API.get', 'period=day', 'date=yesterday', 'format=JSON', );
`public function setUp()
{
// set up here if needed
$this->queryURL = implode(’&’, $this->queryParams);
$url = new Url();
$this->local = $url->getCurrentUrl();
}`
public function testCompare() { $http = new Http(); $json = $http->fetchRemoteFile($this->remoteHost . $this->queryURL . '&idSite=7'); $remote_data = json_decode($json, true); $request = new Request($this->queryURL . '&idSite=1'); $response = $request->process(); $local_data = $response->getSerialized(); $this->assertEquals($remote_data, $local_data); }
tassoman
(Tassoman)
November 19, 2015, 3:44pm
2
Pretty unreadable in this forum lol, I hope someone could decypher it
Calling this URL in the browser works: http://demo.piwik.org/index.php?module=API&method=API.get&period=day&date=yesterday&format=JSON&idSite=7 so fetching the remote file should work and I presume it is a problem with new Request(...)
. There it seems to not find any renderer as the plugins are not loaded. For some reason you probably need to load the API
plugin manually:
public function setUp()
{
\Piwik\Plugin\Manager::getInstance()->loadPlugins(array('API'));
}
Do you know if this is an IntegrationTestCase? Then it should do this automatically. It looks like this is a UnitTestCase maybe. For unit tests we do not bootstrap any Piwik plugins etc
1 Like
tassoman
(Tassoman)
November 24, 2015, 12:56pm
4
Ciao Thomas,
your hint is correct!
Infact I’ve started using console commands:
php console generate:plugin
php console generate:test
And I got a barebone extension of UnitTestCase class.
Then I’ve refactored my test class loading the plugins on setUp() as you suggest and now It’s working.
I’ve tried also to get started using a IntegrationTestCase but It’s slower because it loads all the Piwik’s environment.
Thank your for inspiration