Skip to content
Extraits de code Groupes Projets
OneVisitorTwoVisitsTest.php 12,1 ko
Newer Older
  • Learn to ignore specific revisions
  •  * Piwik - free/libre analytics platform
    
     *
     * @link    http://piwik.org
     * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
     */
    
    mattab's avatar
    mattab a validé
    use Piwik\Archive;
    
    use Piwik\Tests\Framework\TestCase\SystemTestCase;
    
    Thomas Steur's avatar
    Thomas Steur a validé
    use Piwik\Tests\Fixtures\OneVisitorTwoVisits;
    
    
    /**
     * This use case covers many simple tracking features.
     * - Tracking Goal by manual trigger, and URL matching, with custom revenue
     * - Tracking the same Goal twice only records it once
     * - Tracks 4 page views: 3 clicks and a file download
     * - URLs parameters exclude is tested
     * - In a returning visit, tracks a Goal conversion
    
     *   URL matching, with custom referrer and keyword
    
     *   NO cookie support
    
    class OneVisitorTwoVisitsTest extends SystemTestCase
    
        /**
         * @var Test_Piwik_Fixture_OneVisitorTwoVisits
         */
    
        public static $fixture = null; // initialized below class
    
        public function setUp()
        {
    
            Proxy::getInstance()->setHideIgnoredFunctions(false);
    
            Proxy::getInstance()->setHideIgnoredFunctions(true);
    
        public static function getOutputPrefix()
        {
            return "OneVisitorTwoVisits";
        }
    
    
        /**
         * @dataProvider getApiForTesting
         */
        public function testApi($api, $params)
        {
            $this->runApiTests($api, $params);
        }
    
        public function getApiForTesting()
        {
    
            $idSite = self::$fixture->idSite;
    
            $idSiteBis = self::$fixture->idSiteEmptyBis;
            $idSiteTer = self::$fixture->idSiteEmptyTer;
    
    
            $dateTime = self::$fixture->dateTime;
    
    
            $enExtraParam = array('expanded' => 1,
                                  'flat' => 1,
                                  'include_aggregate_rows' => 0,
    
                // Testing with several days
                "idSite=" . $idSite . "&date=2010-03-06,2010-03-07&expanded=1&period=day&method=VisitsSummary.get",
                "idSite=" . $idSite . ",$idSiteBis,$idSiteTer&date=2010-03-06,2010-03-07&expanded=1&period=day&method=VisitsSummary.get",
    
                "idSite=" . $idSite . "&date=2010-03-06&expanded=1&period=day&method=VisitorInterest.getNumberOfVisitsPerVisitDuration"
    
            foreach ($bulkUrls as &$url) {
                $url = urlencode($url);
    
    benakamoorthi's avatar
    benakamoorthi a validé
            }
    
                array('all', array('idSite' => $idSite,
                                   'date' => $dateTime,
                                   'otherRequestParameters' => array(
                                       'hideColumns' => 'nb_users',
                                   )
                )),
    
    
                // test API.get (for bug that incorrectly reorders columns of CSV output)
                //   note: bug only affects rows after first
    
                array('API.get', array('idSite'                 => $idSite,
    
                                       'date'                   => '2009-10-01',
                                       'format'                 => 'csv',
                                       'periods'                => array('month'),
                                       'setDateLastN'           => true,
                                       'otherRequestParameters' => $enExtraParam,
                                       'language'               => 'en',
                                       'testSuffix'             => '_csv')),
    
    
                array('API.getBulkRequest', array('format' => 'xml',
                                                   'testSuffix' => '_bulk_xml',
                                                   'otherRequestParameters' => array('urls' => $bulkUrls))),
    
                array('API.getBulkRequest', array('format' => 'json',
                                                  'testSuffix' => '_bulk_json',
                                                  'otherRequestParameters' => array('urls' => $bulkUrls))),
    
                // test API.getProcessedReport w/ report that is its own 'actionToLoadSubTables'
    
                array('API.getProcessedReport', array('idSite'        => $idSite,
                                                      'date'          => $dateTime,
                                                      'periods'       => array('week'),
                                                      'apiModule'     => 'Actions',
                                                      'apiAction'     => 'getPageUrls',
                                                      'supertableApi' => 'Actions.getPageUrls',
                                                      'testSuffix'    => '__subtable')),
    
                // test hideColumns && showColumns parameters
                array('VisitsSummary.get', array('idSite'                 => $idSite, 'date' => $dateTime, 'periods' => 'day',
                                                 'testSuffix'             => '_hideColumns_',
                                                 'otherRequestParameters' => array(
                                                     'hideColumns' => 'nb_visits_converted,max_actions,bounce_count,nb_hits,'
                                                         . 'nb_visits,nb_actions,sum_visit_length,avg_time_on_site'
                                                 ))),
                array('VisitsSummary.get', array('idSite'                 => $idSite, 'date' => $dateTime, 'periods' => 'day',
                                                 'testSuffix'             => '_showColumns_',
                                                 'otherRequestParameters' => array(
                                                     'showColumns' => 'nb_visits,nb_actions,nb_hits'
                                                 ))),
                array('VisitsSummary.get', array('idSite'                 => $idSite, 'date' => $dateTime, 'periods' => 'day',
                                                 'testSuffix'             => '_hideAllColumns_',
                                                 'otherRequestParameters' => array(
                                                     'hideColumns' => 'nb_visits_converted,max_actions,bounce_count,nb_hits,'
                                                         . 'nb_visits,nb_actions,sum_visit_length,avg_time_on_site,'
                                                         . 'bounce_rate,nb_uniq_visitors,nb_actions_per_visit,'
                                                 ))),
    
                // test hideColumns w/ API.getProcessedReport
                array('API.getProcessedReport', array('idSite'                 => $idSite, 'date' => $dateTime,
                                                      'periods'                => 'day', 'apiModule' => 'Actions',
                                                      'apiAction'              => 'getPageTitles', 'testSuffix' => '_hideColumns_',
                                                      'otherRequestParameters' => array(
                                                          'hideColumns' => 'nb_visits_converted,xyzaug,entry_nb_visits,' .
    
                                                              'bounce_rate,nb_hits,nb_visits,avg_time_on_page,' .
    														  'avg_time_generation,nb_hits_with_time_generation'
    
                                                      ))),
    
                array('API.getProcessedReport', array('idSite'                 => $idSite, 'date' => $dateTime,
                                                      'periods'                => 'day', 'apiModule' => 'Actions',
                                                      'apiAction'              => 'getPageTitles', 'testSuffix' => '_showColumns_',
                                                      'otherRequestParameters' => array(
                                                          'showColumns' => 'nb_visits_converted,xuena,entry_nb_visits,' .
                                                              'bounce_rate,nb_hits'
                                                      ))),
                array('API.getProcessedReport', array('idSite'                 => $idSite, 'date' => $dateTime,
                                                      'periods'                => 'day', 'apiModule' => 'VisitTime',
                                                      'apiAction'              => 'getVisitInformationPerServerTime',
                                                      'testSuffix'             => '_showColumnsWithProcessedMetrics_',
                                                      'otherRequestParameters' => array(
                                                          'showColumns' => 'nb_visits,revenue'
                                                      ))),
    
    
                // showColumns with only one column and report having no dimension
                array('API.getProcessedReport', array('idSite'                 => $idSite, 'date' => $dateTime,
                                                      'periods'                => 'day', 'apiModule' => 'VisitsSummary',
                                                      'apiAction'              => 'get',
                                                      'testSuffix'             => '_showColumns_onlyOne',
                                                      'otherRequestParameters' => array(
                                                          'showColumns'        => 'nb_visits'
                                                      ))),
    
    
                // test hideColumns w/ expanded=1
                array('Actions.getPageTitles', array('idSite'                 => $idSite, 'date' => $dateTime,
                                                     'periods'                => 'day', 'testSuffix' => '_hideColumns_',
                                                     'otherRequestParameters' => array(
                                                         'hideColumns' => 'nb_visits_converted,entry_nb_visits,' .
                                                             'bounce_rate,nb_hits,nb_visits,sum_time_spent,' .
                                                             'entry_sum_visit_length,entry_bounce_count,exit_nb_visits,' .
                                                             'entry_nb_uniq_visitors,exit_nb_uniq_visitors,entry_nb_actions,' .
    
                                                             'avg_time_generation,nb_hits_with_time_generation',
    
    
                // test showColumns on API.get
                array('API.get', array(
                    'idSite'                 => $idSite,
                    'date'                   => $dateTime,
                    'periods'                => 'day',
    
                    'otherRequestParameters' => array(
                        'showColumns'        => 'nb_uniq_visitors,nb_pageviews,bounce_rate'
                    )
                )),
    
         * Test that Archive::getBlob won't fetch extra unnecessary blobs.
    
    mattab's avatar
    mattab a validé
            $archive = Archive::build(self::$fixture->idSite, 'day', self::$fixture->dateTime);
    
            $cache = $archive->getBlob('Actions_actions', 'all');
    
    
            $foundSubtable = false;
    
            $this->assertTrue(count($cache) > 0, "empty blob cache");
            foreach ($cache as $name => $value) {
                $this->assertTrue(strpos($name, "Actions_actions_url") === false, "found blob w/ name '$name'");
    
                if (strpos($name, "Actions_actions_") !== false) {
                    $foundSubtable = true;
                }
            }
    
            $this->assertTrue($foundSubtable, "Actions_actions subtable was not loaded");
        }
    
        /**
         * Test that restricting the number of sites to those viewable to another login
         * works when building an archive query object.
         */
        public function testArchiveSitesWhenRestrictingToLogin()
        {
            try
            {
    
    mattab's avatar
    mattab a validé
                Archive::build(
    
                    'all', 'day', self::$fixture->dateTime, $segment = false, $_restrictToLogin = 'anotherLogin');
                $this->fail("Restricting sites to invalid login did not return 0 sites.");
            }
            catch (Exception $ex)
            {
                // pass
            }
        }
    
    OneVisitorTwoVisitsTest::$fixture = new OneVisitorTwoVisits();
    
    OneVisitorTwoVisitsTest::$fixture->excludeMozilla = true;