<?php /** * Piwik - free/libre analytics platform * * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ use Piwik\Access; use Piwik\Plugins\Goals\API; use Piwik\WidgetsList; use Piwik\Tests\Framework\Fixture; use Piwik\Tests\Framework\TestCase\IntegrationTestCase; /** * Class Core_WidgetsListTest * * @group Core */ class Core_WidgetsListTest extends IntegrationTestCase { /** * @group Core */ public function testGet() { // setup the access layer $pseudoMockAccess = new FakeAccess; FakeAccess::$superUser = true; Access::setSingletonInstance($pseudoMockAccess); Fixture::createWebsite('2009-01-04 00:11:42'); $_GET['idSite'] = 1; WidgetsList::_reset(); $widgets = WidgetsList::get(); WidgetsList::_reset(); // check if each category has the right number of widgets $numberOfWidgets = array( 'VisitsSummary_VisitsSummary' => 6, 'Live!' => 4, 'General_Visitors' => 12, 'UserSettings_VisitorSettings' => 11, 'General_Actions' => 10, 'Events_Events' => 3, 'Actions_SubmenuSitesearch' => 5, 'Referrers_Referrers' => 7, 'Goals_Goals' => 1, 'SEO' => 2, 'Example Widgets' => 4, 'DevicesDetection_DevicesDetection' => 8, 'Insights_WidgetCategory' => 2 ); // number of main categories $this->assertEquals(count($numberOfWidgets), count($widgets)); foreach ($numberOfWidgets as $category => $widgetCount) { $this->assertEquals($widgetCount, count($widgets[$category]), sprintf("Widget: %s", $category)); } } /** * @group Core */ public function testGetWithGoals() { // setup the access layer $pseudoMockAccess = new FakeAccess; FakeAccess::$superUser = true; Access::setSingletonInstance($pseudoMockAccess); Fixture::createWebsite('2009-01-04 00:11:42'); API::getInstance()->addGoal(1, 'Goal 1 - Thank you', 'title', 'Thank you', 'contains', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = 1); $_GET['idSite'] = 1; WidgetsList::_reset(); $widgets = WidgetsList::get(); WidgetsList::_reset(); // number of main categories $this->assertEquals(13, count($widgets)); // check that the goal widget was added $numberOfWidgets = array( 'Goals_Goals' => 2, ); foreach ($numberOfWidgets as $category => $widgetCount) { $this->assertEquals($widgetCount, count($widgets[$category])); } } /** * @group Core */ public function testGetWithGoalsAndEcommerce() { // setup the access layer $pseudoMockAccess = new FakeAccess; FakeAccess::$superUser = true; Access::setSingletonInstance($pseudoMockAccess); Fixture::createWebsite('2009-01-04 00:11:42', true); API::getInstance()->addGoal(1, 'Goal 1 - Thank you', 'title', 'Thank you', 'contains', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = 1); $_GET['idSite'] = 1; WidgetsList::_reset(); $widgets = WidgetsList::get(); WidgetsList::_reset(); // number of main categories $this->assertEquals(14, count($widgets)); // check if each category has the right number of widgets $numberOfWidgets = array( 'Goals_Goals' => 2, 'Goals_Ecommerce' => 5, ); foreach ($numberOfWidgets as $category => $widgetCount) { $this->assertEquals($widgetCount, count($widgets[$category])); } } /** * @group Core */ public function testRemove() { // setup the access layer $pseudoMockAccess = new FakeAccess; FakeAccess::$superUser = true; Access::setSingletonInstance($pseudoMockAccess); Fixture::createWebsite('2009-01-04 00:11:42', true); API::getInstance()->addGoal(1, 'Goal 1 - Thank you', 'title', 'Thank you', 'contains', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = 1); $_GET['idSite'] = 1; WidgetsList::_reset(); $widgets = WidgetsList::get(); $this->assertCount(14, $widgets); WidgetsList::remove('SEO', 'NoTeXiStInG'); $widgets = WidgetsList::get(); $this->assertCount(14, $widgets); $this->assertArrayHasKey('SEO', $widgets); $this->assertCount(2, $widgets['SEO']); WidgetsList::remove('SEO', 'SEO_SeoRankings'); $widgets = WidgetsList::get(); $this->assertCount(1, $widgets['SEO']); WidgetsList::remove('SEO'); $widgets = WidgetsList::get(); $this->assertArrayNotHasKey('SEO', $widgets); WidgetsList::_reset(); } /** * @group Core */ public function testIsDefined() { // setup the access layer $pseudoMockAccess = new FakeAccess; FakeAccess::$superUser = true; Access::setSingletonInstance($pseudoMockAccess); \Piwik\Translate::loadEnglishTranslation(); Fixture::createWebsite('2009-01-04 00:11:42', true); $_GET['idSite'] = 1; WidgetsList::_reset(); WidgetsList::add('Actions', 'Pages', 'Actions', 'getPageUrls'); $this->assertTrue(WidgetsList::isDefined('Actions', 'getPageUrls')); $this->assertFalse(WidgetsList::isDefined('Actions', 'inValiD')); } }