function test_genericHtml_class() { // test the class implementation $oComponent =& OX_Component::factory('bannerTypeHtml', 'demoBannerTypeHtml', 'demoHtml'); // common extension methods $this->_assertClass($oComponent, 'bannerTypeHtml', 'demoBannerTypeHtml', 'demoHtml'); // plugin-specific methods $this->assertTrue(method_exists($oComponent, '_buildHtmlTemplate'), $sender . ' missing method _buildHtmlTemplate'); $this->assertTrue(method_exists($oComponent, 'exportData'), $sender . ' missing method exportData'); // generate test data $doBanners = OA_Dal::factoryDO('banners'); $oDG = new DataGenerator(); $oDG->setData('banners', array('ext_bannertype' => array($oComponent->getComponentIdentifier()))); $aIds = $oDG->generate($doBanners, 5, false); $aFields = $aVariables = array(); // test the processForm method // this method joins the banners and banners_demo tables // by creating a banners_demo record where // banners_demo.banners_demo_id = banners.bannerid foreach ($aIds as $i => $bannerId) { $aFields['description'] = 'description_' . $bannerId; $this->assertTrue($oComponent->processForm(true, $bannerId, $aFields, $aVariables)); $doBannersDemo = OA_Dal::factoryDO('banners_demo'); $doBannersDemo->banners_demo_id = $bannerId; $this->assertTrue($doBannersDemo->find(true)); $this->assertEqual($doBannersDemo->banners_demo_desc, $aFields['description']); } // test the exportData method $aTables = $oComponent->exportData(); $this->assertIsA($aTables, 'array'); $this->assertEqual(count($aTables), 2); $prefix = $GLOBALS['_MAX']['CONF']['table']['prefix']; $pattern = '/' . $prefix . 'z_' . $oComponent->component . '[\\d]{8}_[\\d]{6}' . $prefix . 'banners/'; $this->assertPattern($pattern, $aTables[0]); $pattern = '/' . $prefix . 'z_' . $oComponent->component . '[\\d]{8}_[\\d]{6}' . $prefix . 'banners_demo/'; $this->assertPattern($pattern, $aTables[1]); $oDbh = OA_DB::singleton(); $query = "SELECT * FROM " . $oDbh->quoteIdentifier($aTables[0]); $aResult = $oDbh->queryAll($query, null, MDB2_FETCHMODE_ASSOC); foreach ($aResult as $i => $aFrom) { $this->assertEqual($aFrom['bannerid'], $aIds[$i]); } $query = "SELECT * FROM " . $oDbh->quoteIdentifier($aTables[1]); $aResult = $oDbh->queryAll($query, null, MDB2_FETCHMODE_ASSOC); foreach ($aResult as $i => $aFrom) { $this->assertEqual($aFrom['banners_demo_id'], $aIds[$i]); } }
function testBelongsToAccount() { OA_Dal::factoryDO('banners'); // Initialise the class so it can be mocked. Mock::generatePartial('DataObjects_Banners', $mockBanners = 'DataObjects_Banners' . rand(), array('getOwningAccountIds')); $doMockBanners = new $mockBanners($this); $doMockBanners->init(); $clientId = DataGenerator::generateOne('clients', true); $doClients = OA_Dal::staticGetDO('clients', $clientId); $agencyId = $doClients->agencyid; $accountId = $doClients->account_id; $doAgency = OA_Dal::staticGetDO('agency', $agencyId); $managerId = $doAgency->account_id; $dg = new DataGenerator(); $dg->setData('campaigns', array('clientid' => array($clientId))); $doMockBanners->setReturnValue('getOwningAccountIds', array(OA_ACCOUNT_MANAGER => $managerId, OA_ACCOUNT_ADVERTISER => $accountId)); $this->enableAuditing(true); $bannerId = $dg->generateOne($doMockBanners, true); $this->enableAuditing(false); $doAudit = OA_Dal::factoryDO('audit'); $doAudit->context = 'banners'; $doAudit->contextid = $bannerId; $this->assertTrue($doAudit->find(true)); $this->assertTrue($doAudit->belongsToAccount($accountId, false)); // generate different audit on campaign $dg = new DataGenerator(); $doMockBanners = new $mockBanners($this); $doMockBanners->init(); $clientId2 = DataGenerator::generateOne('clients', true); $doClients = OA_Dal::staticGetDO('clients', $clientId2); $agencyId2 = $doClients->agencyid; $accountId2 = $doClients->account_id; $doAgency = OA_Dal::staticGetDO('agency', $agencyId2); $managerId2 = $doAgency->account_id; $dg->setData('campaigns', array('clientid' => array($clientId2))); $doMockBanners->setReturnValue('getOwningAccountIds', array(OA_ACCOUNT_MANAGER => $managerId2, OA_ACCOUNT_ADVERTISER => $accountId2)); $this->enableAuditing(true); $bannerId2 = $dg->generateOne($doMockBanners, true); $this->enableAuditing(false); $doAudit = OA_Dal::factoryDO('audit'); $doAudit->context = 'banners'; $doAudit->contextid = $bannerId2; $this->assertTrue($doAudit->find(true)); $this->assertTrue($doAudit->belongsToAccount($accountId2, false)); $this->assertFalse($doAudit->belongsToAccount($accountId, false)); }
function testGetChannelsAndAffiliates() { // Insert 2 channels $aData = array('acls_updated' => array('2007-04-04 17:27:33')); $dg = new DataGenerator(); $dg->setData('channel', $aData); $aChannelId = $dg->generate('channel', 2, true); // Check the correct number of rows returned $expectedRows = 2; $rsChannel = $this->dalChannel->getChannelsAndAffiliates(); $rsChannel->find(); $actualRows = $rsChannel->getRowCount(); $this->assertEqual($actualRows, $expectedRows); // Check each row has the correct number of fields $rsChannel->fetch(); $aChannel = $rsChannel->export(); $this->assertEqual(count($aChannel), 4); }
function testDeleteWhereOne() { $this->oaTable->createTable('audit'); $this->oaTable->createTable('acls'); $dg = new DataGenerator(); $dg->setData('acls', array('bannerid' => array(1, 2, 3), 'executionorder' => array(0, 0, 0, 1, 1, 1, 2, 2, 2))); $dg->generate('acls', 5); OA_DB_Sql::deleteWhereOne('acls', 'bannerid', 1); $doAcls = OA_Dal::factoryDO('acls'); $doAcls->bannerid = 1; $doAcls->find(); $this->assertEqual(0, $doAcls->getRowCount()); $doAcls->bannerid = 2; $doAcls->find(); $this->assertEqual(2, $doAcls->getRowCount()); $aConf = $GLOBALS['_MAX']['CONF']; $this->oaTable->dropTable($aConf['table']['prefix'] . 'acls'); }
function testGetAclsByDataValueType() { $type = 'Site:Channel'; $bannerId = 1; $channelId = 1; // Test it returns empty set if no data exists $rsChannel = $this->dalAcls->getAclsByDataValueType($bannerId, $type); $rsChannel->reset(); $this->assertEqual($rsChannel->getRowCount(), 0); // Generate acls, two of them with the same $bannerId $data = array('bannerid' => array($bannerId, $bannerId, 3), 'data' => array("{$channelId},2,3", '4,5,6', "{$channelId}"), 'executionorder' => array(1, 2, 3)); $dg = new DataGenerator(); $dg->setData('acls', $data); // Add test data $doAcls = OA_Dal::factoryDO('acls'); $doAcls->type = $type; $dg->generate($doAcls, 3, true); // Test that $bannerId is in two sets $rsChannel = $this->dalAcls->getAclsByDataValueType($channelId, $type); $rsChannel->reset(); $this->assertEqual($rsChannel->getRowCount(), 2); }
function testGetAllCampaignsUnderAgency() { // Test it doesn't return any data if no records are added $this->assertEqual(count($this->oDalCampaigns->getAllCampaignsUnderAgency(123, 'name', 'up')), 0); // Add test data (add a little bit more than required) $numCampaigns1 = 3; $aData = array('reportlastdate' => array('2007-04-03 18:39:45')); $dg = new DataGenerator(); $dg->setData('clients', $aData); $aCampaigns1 = $dg->generate('campaigns', $numCampaigns1, true); $agencyId1 = DataGenerator::getReferenceId('agency'); $numCampaigns2 = 2; $aData = array('reportlastdate' => array('2007-04-03 18:39:45')); $dg = new DataGenerator(); $dg->setData('clients', $aData); $aCampaigns2 = $dg->generate('campaigns', $numCampaigns2, true); $agencyId2 = DataGenerator::getReferenceId('agency'); $clientId = DataGenerator::getReferenceId('clients'); $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->clientid = $clientId; $doCampaigns->campaignname = 'market campaign'; $doCampaigns->type = DataObjects_Campaigns::CAMPAIGN_TYPE_MARKET_CAMPAIGN_OPTIN; $marketCampaignId = DataGenerator::generateOne($doCampaigns); // Take test data $aCampaigns = $this->oDalCampaigns->getAllCampaignsUnderAgency($agencyId2, 'name', 'up'); $this->assertEqual(count($aCampaigns), $numCampaigns2); // Make sure that both arrays have the same sorting ksort($aCampaigns); sort($aCampaigns2); $this->assertEqual(array_keys($aCampaigns), array_values($aCampaigns2)); $aIncludeSystemTypes = array(DataObjects_Campaigns::CAMPAIGN_TYPE_MARKET_CAMPAIGN_OPTIN); $aCampaigns = $this->oDalCampaigns->getAllCampaignsUnderAgency($agencyId2, 'name', 'up', $aIncludeSystemTypes); $this->assertEqual(count($aCampaigns), $numCampaigns2 + 1); }
function testGetBannersCampaignsClients() { // Insert 2 banners $doBanners = OA_Dal::factoryDO('banners'); $doBanners->acls_updated = '2007-04-03 18:39:45'; $aData = array('reportlastdate' => array('2007-04-03 18:39:45')); $dg = new DataGenerator(); $dg->setData('clients', $aData); $aBannerIds = $dg->generate($doBanners, 2, true); // Check the correct number of rows returned $expectedRows = 2; $rsBanners = $this->dalBanners->getBannersCampaignsClients(); $rsBanners->find(); $actualRows = $rsBanners->getRowCount(); $this->assertEqual($actualRows, $expectedRows); // Check each row has the correct number of fields $rsBanners->fetch(); $aBanner = $rsBanners->export(); $this->assertEqual(count($aBanner), 6); }
function testHasAccessToObject() { $userTables = array(OA_ACCOUNT_ADVERTISER => 'clients', OA_ACCOUNT_TRAFFICKER => 'affiliates', OA_ACCOUNT_MANAGER => 'agency'); // Test if all users have access to new objects foreach ($userTables as $userType => $userTable) { $this->assertTrue(OA_Permission::hasAccessToObject('banners', null, OA_Permission::OPERATION_ALL, rand(1, 100), $userType)); } // Create some record $doBanners = OA_Dal::factoryDO('banners'); $doBanners->acls_updated = '2007-04-05 16:18:00'; $aData = array('reportlastdate' => array('2007-04-05 16:18:00')); $dg = new DataGenerator(); $dg->setData('clients', $aData); $bannerId = $dg->generateOne($doBanners, true); $clientId = DataGenerator::getReferenceId('clients'); $doClient = OA_Dal::staticGetDO('clients', $clientId); $agencyId = DataGenerator::getReferenceId('agency'); $doAgency = OA_Dal::staticGetDO('agency', $agencyId); // Test that admin doesn't have access anymore to all objects $this->assertFalse(OA_Permission::hasAccessToObject('banners', 'booId', OA_Permission::OPERATION_ALL, 1, OA_ACCOUNT_ADMIN)); // Test accounts have access $this->assertTrue(OA_Permission::hasAccessToObject('banners', $bannerId, OA_Permission::OPERATION_ALL, $doClient->account_id, OA_ACCOUNT_ADVERTISER)); $this->assertTrue(OA_Permission::hasAccessToObject('banners', $bannerId, OA_Permission::OPERATION_ALL, $doAgency->account_id, OA_ACCOUNT_MANAGER)); // Create users who don't have access $doClients = OA_Dal::factoryDO('clients'); $doClients->reportlastdate = '2007-04-05 16:18:00'; $clientId2 = DataGenerator::generateOne($doClients); $agencyId2 = DataGenerator::generateOne('agency'); $doClientId2 = OA_Dal::staticGetDO('clients', $clientId2); $doAgency2 = OA_Dal::staticGetDO('agency', $agencyId2); $this->assertFalse(OA_Permission::hasAccessToObject('banners', $bannerId, $fakeId = 123, OA_Permission::OPERATION_ALL, OA_ACCOUNT_TRAFFICKER)); $this->assertFalse(OA_Permission::hasAccessToObject('banners', $bannerId, $doClientId2->account_id, OA_Permission::OPERATION_ALL, OA_ACCOUNT_ADVERTISER)); $this->assertFalse(OA_Permission::hasAccessToObject('banners', $bannerId, $doAgency2->account_id, OA_Permission::OPERATION_ALL, OA_ACCOUNT_MANAGER)); }
function testGetUniqueValuesFromColumn() { $data = array('name' => array(1, 1, 2, 2, 3)); $dg = new DataGenerator(); $dg->setData('agency', $data); $dg->generate('agency', 5); // Test that it takes 3 unique variables $doAgency = OA_Dal::factoryDO('agency'); $aUnique = $doAgency->getUniqueValuesFromColumn('name'); sort($aUnique); $this->assertEqual($aUnique, array(1, 2, 3)); $doAgency = OA_Dal::factoryDO('agency'); $aUnique = $doAgency->getUniqueValuesFromColumn('name', $exceptValue = 2); sort($aUnique); $this->assertEqual(array_values($aUnique), array(1, 3)); }