Skip to content

Commit

Permalink
Refs #4125, make Referers_... blob test less useless and move out of …
Browse files Browse the repository at this point in the history
…OneVisitorTwoVisitsTest.
  • Loading branch information
Benaka Moorthi committed Oct 4, 2013
1 parent 9b89750 commit cefbc7f
Show file tree
Hide file tree
Showing 13 changed files with 262 additions and 71 deletions.
69 changes: 0 additions & 69 deletions tests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php
Expand Up @@ -7,12 +7,6 @@
*/
use Piwik\API\Proxy;
use Piwik\Archive;
use Piwik\Db;
use Piwik\Date;
use Piwik\Period;
use Piwik\Segment;
use Piwik\DataAccess\ArchiveWriter;
use Piwik\ArchiveProcessor\Rules;

/**
* This use case covers many simple tracking features.
Expand All @@ -26,48 +20,15 @@
*/
class Test_Piwik_Integration_OneVisitorTwoVisits extends IntegrationTestCase
{
const DUMMY_BLOB_VALUE = 'dummyblobvalue';

public static $oldReferrerRecordNames = array(
'Referers_keywordBySearchEngine',
'Referers_searchEngineByKeyword',
'Referers_keywordByCampaign',
'Referers_urlByWebsite',
'Referers_type',
'Referers_distinctSearchEngines',
'Referers_distinctKeywords',
'Referers_distinctCampaigns',
'Referers_distinctWebsites',
'Referers_distinctWebsitesUrls',
);

public static $fixture = null; // initialized below class

public static function setUpBeforeClass()
{
parent::setUpBeforeClass();

$idSite = self::$fixture->idSite;
$period = Period::factory('day', Date::factory('2010-05-06'));
$archiveWriter = new ArchiveWriter($idSite, new Segment('', array($idSite)), $period, 'Referers', $temp = false);

$archiveWriter->initNewArchive();
foreach (self::$oldReferrerRecordNames as $recordName) {
$archiveWriter->insertRecord('nb_visits', 1); // records are ignored if visits is absent or == 0
$archiveWriter->insertRecord($recordName, self::DUMMY_BLOB_VALUE);
}
$archiveWriter->finalizeArchive();
}

public function setUp()
{
Rules::$archivingDisabledByTests = false;
Proxy::getInstance()->setHideIgnoredFunctions(false);
}

public function tearDown()
{
Rules::$archivingDisabledByTests = false;
Proxy::getInstance()->setHideIgnoredFunctions(true);
}

Expand Down Expand Up @@ -240,36 +201,6 @@ public function testArchiveSitesWhenRestrictingToLogin()
// pass
}
}

/**
* Returns the old mispelled Referrer blob record names. Used as data provider for
* testReferrersReportsWhenOldBlobNameInDB.
*/
public function getOldReferrerRecordNames()
{
$result = array();
foreach (self::$oldReferrerRecordNames as $name) {
$result[] = array($name);
}
return $result;
}

/**
* Test that if old Referrer blob names (Referrer_...) are found in the DB, they will be
* used instead of launching archiving.
*
* @group Integration
* @group OneVisitorTwoVisits
* @dataProvider getOldReferrerRecordNames
*/
public function testReferrersReportsWhenOldBlobNameInDB($recordName)
{
Rules::$archivingDisabledByTests = true;

$archive = Archive::build(self::$fixture->idSite, 'day', '2010-05-06');
$blob = $archive->getBlob($recordName);
$this->assertNotEmpty($blob);
}
}

Test_Piwik_Integration_OneVisitorTwoVisits::$fixture = new Test_Piwik_Fixture_OneVisitorTwoVisits();
Expand Down
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<testcol3>testdata3</testcol3>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
</row>
</result>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<testcol3>testdata3</testcol3>
<label>Keyword not defined</label>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
<label>Keyword not defined</label>
</row>
</result>
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>5</result>
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>5</result>
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>5</result>
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>5</result>
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>5</result>
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<testcol3>testdata3</testcol3>
<label>Others</label>
<subtable>
<row>
<testcol3>testdata3</testcol3>
<label>Others</label>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
<label>Others</label>
</row>
</subtable>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
<label>Others</label>
<subtable>
<row>
<testcol3>testdata3</testcol3>
<label>Others</label>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
<label>Others</label>
</row>
</subtable>
</row>
</result>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<testcol3>testdata3</testcol3>
<url>URL unknown!</url>
<logo>plugins/Referers/images/searchEngines/xx.png</logo>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
<url>URL unknown!</url>
<logo>plugins/Referers/images/searchEngines/xx.png</logo>
</row>
</result>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<testcol3>testdata3</testcol3>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
</row>
</result>
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
<result date="2010-05-06">
<row>
<testcol3>testdata3</testcol3>
<label>Keyword not defined</label>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
<label>Keyword not defined</label>
</row>
</result>
<result date="2010-05-07">
<row>
<testcol3>testdata3</testcol3>
<label>Keyword not defined</label>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
<label>Keyword not defined</label>
</row>
</result>
</result>
<result idSite="2">
<result date="2010-05-06">
<row>
<testcol3>testdata3</testcol3>
<label>Keyword not defined</label>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
<label>Keyword not defined</label>
</row>
</result>
<result date="2010-05-07">
<row>
<testcol3>testdata3</testcol3>
<label>Keyword not defined</label>
</row>
<row>
<testcol1>testdata1</testcol1>
<testcol2>testdata2</testcol2>
<label>Keyword not defined</label>
</row>
</result>
</result>
</results>
123 changes: 121 additions & 2 deletions tests/PHPUnit/Plugins/ReferersTest.php
Expand Up @@ -7,8 +7,82 @@
*/
require_once 'Referers/Referers.php';

class ReferersTest extends PHPUnit_Framework_TestCase
use Piwik\Date;
use Piwik\Period;
use Piwik\Segment;
use Piwik\DataTable;
use Piwik\DataTable\Row;
use Piwik\DataAccess\ArchiveWriter;
use Piwik\ArchiveProcessor\Rules;

class ReferersTest extends IntegrationTestCase
{
public static $oldReferrerRecordNames = array(
'Referers_keywordBySearchEngine',
'Referers_searchEngineByKeyword',
'Referers_keywordByCampaign',
'Referers_urlByWebsite',
'Referers_type',
);

public static $oldReferrerMetricNames = array(
'Referers_distinctSearchEngines',
'Referers_distinctKeywords',
'Referers_distinctCampaigns',
'Referers_distinctWebsites',
'Referers_distinctWebsitesUrls',
);

public static function setUpBeforeClass()
{
parent::setUpBeforeClass();

Test_Piwik_BaseFixture::createWebsite('2010-01-01', $ecommerce = 0, $name = 'Site #1');
Test_Piwik_BaseFixture::createWebsite('2010-01-01', $ecommerce = 0, $name = 'Site #2');

$testDataTable = new DataTable();
$testDataTable->addRow(new Row(array(
Row::COLUMNS => array(
'testcol1' => 'testdata1',
'testcol2' => 'testdata2'
)
)));
$testDataTable->addRow(new Row(array(
Row::COLUMNS => array(
'testcol3' => 'testdata3',
)
)));
$testDataTableBlob = $testDataTable->getSerialized();
$testDataTableBlob = @gzcompress($testDataTableBlob[0]);

foreach (array(1, 2) as $idSite) {
foreach (array('2010-05-06', '2010-05-07') as $date) {
$period = Period::factory('day', Date::factory($date));
$archiveWriter = new ArchiveWriter($idSite, new Segment('', array($idSite)), $period, 'Referers', $temp = false);

$archiveWriter->initNewArchive();
$archiveWriter->insertRecord('nb_visits', 1); // records are ignored if visits is absent or == 0
foreach (self::$oldReferrerRecordNames as $recordName) {
$archiveWriter->insertRecord($recordName, $testDataTableBlob);
}
foreach (self::$oldReferrerMetricNames as $recordName) {
$archiveWriter->insertRecord($recordName, 5);
}
$archiveWriter->finalizeArchive();
}
}
}

public function setUp()
{
Rules::$archivingDisabledByTests = false;
}

public function tearDown()
{
Rules::$archivingDisabledByTests = false;
}

/**
* Dataprovider serving all search engine data
*/
Expand Down Expand Up @@ -140,4 +214,49 @@ public function testGetSearchEngineUrlFromUrlAndKeyword($url, $keyword, $expecte
include PIWIK_PATH_TEST_TO_ROOT . '/core/DataFiles/SearchEngines.php';
$this->assertEquals($expected, \Piwik\Plugins\Referers\getSearchEngineUrlFromUrlAndKeyword($url, $keyword));
}
}

public function getReferrerReportsToTest()
{
$idSite = 1;

$referrersApi = array(
'Referers.getRefererType',
'Referers.getKeywords',
'Referers.getSearchEngines',
'Referers.getCampaigns',
'Referers.getWebsites',
'Referers.getNumberOfDistinctSearchEngines',
'Referers.getNumberOfDistinctKeywords',
'Referers.getNumberOfDistinctCampaigns',
'Referers.getNumberOfDistinctWebsites',
'Referers.getNumberOfDistinctWebsitesUrls'
);

return array(
// test all Referrers reports alone
array($referrersApi, array('idSite' => $idSite,
'date' => '2010-05-06',
'period' => 'day',
'testSuffix' => '_referrerOldName')),

// test one Referrers report with multiple sites + dates
array('Referers.getKeywords', array('idSite' => 'all',
'date' => '2010-05-06,2010-05-07',
'period' => 'day',
'testSuffix' => '_referrerOldName_multiple')),
);
}

/**
* Test that if old Referrer blob names (Referrer_...) are found in the DB, they will be
* used instead of launching archiving.
*
* @group Integration
* @group OneVisitorTwoVisits
* @dataProvider getReferrerReportsToTest
*/
public function testReferrersReportsWhenOldBlobNameInDB($api, $params)
{
$this->runApiTests($api, $params);
}
}

0 comments on commit cefbc7f

Please sign in to comment.