Welcome to mirror list, hosted at ThFree Co, Russian Federation.

TwoVisitorsTwoWebsitesDifferentDaysTest.php « System « PHPUnit « tests - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 0396694a6e182515690de26746788c38abbbd279 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php

/**
 * Matomo - free/libre analytics platform
 *
 * @link    https://matomo.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */

namespace Piwik\Tests\System;

use Piwik\Tests\Fixtures\TwoSitesTwoVisitorsDifferentDays;
use Piwik\Tests\Framework\TestCase\SystemTestCase;

/**
 * tests Tracker several websites, different days.
 * tests API for period=day/week/month/year, requesting data for both websites,
 * and requesting data for last N periods.
 * Also tests a visit that spans over 2 days.
 * And testing empty URL and empty Page name request
 * Also testing a click on a mailto counted as outlink
 * Also testing metadata API for multiple periods
 *
 * @group TwoVisitorsTwoWebsitesDifferentDaysTest
 * @group TwoSitesTwoVisitorsDifferentDays
 * @group Plugins
 */
class TwoVisitorsTwoWebsitesDifferentDaysTest extends SystemTestCase
{
    public static $fixture = null; // initialized below class definition

    /**
     * @dataProvider getApiForTesting
     */
    public function testApi($api, $params)
    {
        $this->runApiTests($api, $params);
    }

    protected function getApiToCall()
    {
        return [
            'VisitFrequency.get',
            'VisitsSummary.get',
            'Referrers.getWebsites',
            'Actions.getPageUrls',
            'Actions.getPageTitles',
            'Actions.getOutlinks',
            'Actions.getPageTitle',
            'Actions.getPageUrl',
            'VisitorInterest.getNumberOfVisitsByDaysSinceLast',
        ];
    }

    public function getApiForTesting()
    {
        $idSite1  = self::$fixture->idSite1;
        $dateTime = self::$fixture->dateTime;

        $apiToCall       = $this->getApiToCall();
        $singlePeriodApi = ['VisitsSummary.get', 'Goals.get'];

        $periods = ['day', 'week', 'month', 'year'];

        $result = [];

        // testing metadata API for multiple periods
        $apiToCallProcessedReport = array_diff($apiToCall, ['Actions.getPageTitle', 'Actions.getPageUrl']);
        foreach ($apiToCallProcessedReport as $api) {
            [$apiModule, $apiAction] = explode(".", $api);

            $result[] = [
                'API.getProcessedReport',
                [
                    'idSite'       => $idSite1,
                    'date'         => $dateTime,
                    'periods'      => ['day'],
                    'setDateLastN' => true,
                    'apiModule'    => $apiModule,
                    'apiAction'    => $apiAction,
                    'testSuffix'   => '_' . $api . '_firstSite_lastN',
                ],
            ];
        }

        // Request data for the last 6 periods and idSite=all
        $result[] = [
            $apiToCall,
            [
                'idSite'       => 'all',
                'date'         => $dateTime,
                'periods'      => $periods,
                'setDateLastN' => true,
            ],
        ];

        // Request data for the last 6 periods and idSite=1
        $result[] = [
            $apiToCall,
            [
                'idSite'       => $idSite1,
                'date'         => $dateTime,
                'periods'      => $periods,
                'setDateLastN' => true,
                'testSuffix'   => '_idSiteOne_',
            ],
        ];

        // We also test a single period to check that this use case (Reports per idSite in the response) works
        $result[] = [
            $singlePeriodApi,
            [
                'idSite'       => 'all',
                'date'         => $dateTime,
                'periods'      => ['day', 'month'],
                'setDateLastN' => false,
                'testSuffix'   => '_NotLastNPeriods',
            ],
        ];

        return array_merge($result, self::getApiForTestingScheduledReports($dateTime, 'month'));
    }

    public static function getOutputPrefix()
    {
        return 'TwoVisitors_twoWebsites_differentDays';
    }
}

TwoVisitorsTwoWebsitesDifferentDaysTest::$fixture = new TwoSitesTwoVisitorsDifferentDays();