/** * Load iniital data from CSVs. */ protected function load_csv_data() { $dataset = $this->createCsvDataSet(array('user' => elispm::file('tests/fixtures/mdluser.csv'), 'user_info_field' => elispm::file('tests/fixtures/user_info_field.csv'), 'user_info_data' => elispm::file('tests/fixtures/user_info_data.csv'), user::TABLE => elispm::file('tests/fixtures/pmuser.csv'), usermoodle::TABLE => elispm::file('tests/fixtures/usermoodle.csv'), field::TABLE => elispm::file('tests/fixtures/user_field.csv'), field_owner::TABLE => elispm::file('tests/fixtures/user_field_owner.csv'), curriculum::TABLE => elispm::file('tests/fixtures/curriculum.csv'), track::TABLE => elispm::file('tests/fixtures/track.csv'), course::TABLE => elispm::file('tests/fixtures/pmcourse.csv'), pmclass::TABLE => elispm::file('tests/fixtures/pmclass.csv'), userset::TABLE => elispm::file('tests/fixtures/userset.csv'))); $dataset = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataset); $dataset->addSubStrReplacement('\\n', "\n"); $this->loadDataSet($dataset); }
/** * @return PHPUnit_Extensions_Database_DataSet_IDataSet */ protected function getDataSet() { $ds = $this->createFlatXmlDataSet(ROOT_PATH . '/data/fixtures/tests.xml'); $rds = new \PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($ds); $rds->addFullReplacement('##null##', null); return $rds; }
/** * Load initial data from CSVs. */ protected function load_csv_data() { $dataset = $this->createCsvDataSet(array('user' => elispm::file('tests/fixtures/mdluser.csv'), 'user_info_field' => elispm::file('tests/fixtures/user_info_field.csv'), 'user_info_data' => elispm::file('tests/fixtures/user_info_data.csv'), user::TABLE => elispm::file('tests/fixtures/pmuser.csv'), usermoodle::TABLE => elispm::file('tests/fixtures/usermoodle.csv'), field::TABLE => elispm::file('tests/fixtures/user_field.csv'), field_owner::TABLE => elispm::file('tests/fixtures/user_field_owner.csv'))); $dataset = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataset); $dataset->addSubStrReplacement('\\n', "\n"); $this->loadDataSet($dataset); // Load field data next (we need the user context ID and context level). $usercontext = \local_elisprogram\context\user::instance(103); $dataset = $this->createCsvDataSet(array(field_contextlevel::TABLE => elispm::file('tests/fixtures/user_field_contextlevel.csv'), field_category_contextlevel::TABLE => elispm::file('tests/fixtures/user_field_category_contextlevel.csv'), field_data_int::TABLE => elispm::file('tests/fixtures/user_field_data_int.csv'), field_data_char::TABLE => elispm::file('tests/fixtures/user_field_data_char.csv'), field_data_text::TABLE => elispm::file('tests/fixtures/user_field_data_text.csv'))); $dataset = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataset); $dataset->addFullReplacement('##USERCTXID##', $usercontext->id); $dataset->addFullReplacement('##USERCTXLVL##', CONTEXT_ELIS_USER); $this->loadDataSet($dataset); }
/** * @dataProvider addFieldProvider */ public function testAddField($type, $columnType, $length, $internalType) { static::$_table->addField('New field', $type); $id = static::$_table->getLastInsertValue(); $table = static::$_nada->getTable('accountinfo'); $column = $table->getColumn('fields_' . $id); // Reset table before any assertions $table->dropColumn($column->getName()); $this->assertEquals($columnType, $column->getDatatype()); $this->assertThat($column->getLength(), $length); $dataSet = new \PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($this->_loadDataSet('AddField')); $dataSet->addFullReplacement("##ID##", $id); $dataSet->addFullReplacement("##TYPE##", $internalType); $this->assertTablesEqual($dataSet->getTable('accountinfo_config'), $this->getConnection()->createQueryTable('accountinfo_config', 'SELECT id, name, type, account_type, show_order FROM accountinfo_config')); }
/** * @dataProvider addFieldProvider */ public function testAddField($type, $columnType, $length, $internalType) { static::$_table->addField('New field', $type); // getLastInsertValue() is not portable. Query database instead. The // name filter is sufficient for this particular test case. $id = static::$_table->select(array('name' => 'New field'))->current()['id']; $table = static::$_nada->getTable('accountinfo'); $column = $table->getColumn('fields_' . $id); // Reset table before any assertions $table->dropColumn($column->getName()); $this->assertEquals($columnType, $column->getDatatype()); $this->assertThat($column->getLength(), $length); $dataSet = new \PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($this->_loadDataSet('AddField')); $dataSet->addFullReplacement("##ID##", $id); $dataSet->addFullReplacement("##TYPE##", $internalType); $this->assertTablesEqual($dataSet->getTable('accountinfo_config'), $this->getConnection()->createQueryTable('accountinfo_config', 'SELECT id, name, type, account_type, show_order FROM accountinfo_config')); }
public function testSubStrReplacement() { $table1MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', array('table1_id', 'column1', 'column2', 'column3', 'column4')); $table2MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table2', array('table2_id', 'column5', 'column6', 'column7', 'column8')); $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table1MetaData); $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table2MetaData); $table1->addRow(array('table1_id' => 1, 'column1' => 'My name is Mike Lively', 'column2' => 200, 'column3' => 34.64, 'column4' => 'yghkf;a hahfg8ja h;')); $table1->addRow(array('table1_id' => 2, 'column1' => 'hk;afg', 'column2' => 654, 'column3' => 46.54, 'column4' => '24rwehhads')); $table1->addRow(array('table1_id' => 3, 'column1' => 'ha;gyt', 'column2' => 462, 'column3' => 1654.4, 'column4' => '[NULL]')); $table2->addRow(array('table2_id' => 1, 'column5' => 'fhah', 'column6' => 456, 'column7' => 46.5, 'column8' => 'My name is Mike Lively')); $table2->addRow(array('table2_id' => 2, 'column5' => 'asdhfoih', 'column6' => 654, 'column7' => '[NULL]', 'column8' => '43asdfhgj')); $table2->addRow(array('table2_id' => 3, 'column5' => 'ajsdlkfguitah', 'column6' => 654, 'column7' => '[NULL]', 'column8' => '[NULL] not really')); $expected = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2)); $actual = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($this->startingDataSet); $actual->addSubStrReplacement('%%%name%%%', 'Mike Lively'); PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($expected, $actual); }
/** {@inheritdoc} */ protected function _loadDataSet($testName = null) { // Get current time from database as reference point for all operations. $this->_currentTimestamp = new \DateTime($this->getConnection()->createQueryTable('current', 'SELECT CURRENT_TIMESTAMP AS current')->getValue(0, 'current'), new \DateTimeZone('UTC')); $dataSet = parent::_loadDataSet($testName); $locks = $dataSet->getTable('locks'); if ($locks) { // Replace offsets with timestamps (current - offset) $count = $locks->getRowCount(); $replacement = new \PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataSet); for ($i = 0; $i < $count; $i++) { $offset = $locks->getValue($i, 'since'); $interval = new \DateInterval(sprintf('PT%dS', trim($offset, '#'))); $since = clone $this->_currentTimestamp; $since->sub($interval); $replacement->addFullReplacement($offset, $since->format('Y-m-d H:i:s')); } return $replacement; } else { return $dataSet; } }
/** * Test that modifying a Moodle user also updates the corresponding PM user. */ public function test_modifyingmoodleuserupdatespmuser() { global $CFG, $DB; require_once $CFG->dirroot . '/admin/tool/uploaduser/locallib.php'; $this->load_csv_data(); // Update a record. $src = new stdClass(); $src->id = 100; $src->firstname = 'Testuser'; $src->lastname = 'One'; $src->profile_field_sometext = 'boo'; $src->profile_field_sometextfrompm = 'bla'; $DB->update_record('user', $src); $mdluser = $DB->get_record('user', array('id' => 100)); $mcopy = clone $src; $mcopy = uu_pre_process_custom_profile_data($mcopy); profile_save_data($mcopy); events_trigger('user_updated', $mdluser); // Read the PM user and compare. $retr = new user(103, null, array(), false, array()); $retr->reset_custom_field_list(); $this->assertEquals($mdluser->firstname, $retr->firstname); $this->assertEquals($mdluser->lastname, $retr->lastname); // Check custom fields. $result = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(); $result->addTable(new moodle_recordset_phpunit_datatable(field_data_int::TABLE, $DB->get_recordset(field_data_int::TABLE, null, '', 'contextid, fieldid, data'))); $result->addTable(new moodle_recordset_phpunit_datatable(field_data_char::TABLE, $DB->get_recordset(field_data_char::TABLE, null, '', 'contextid, fieldid, data'))); $result->addTable(new moodle_recordset_phpunit_datatable(field_data_text::TABLE, $DB->get_recordset(field_data_text::TABLE, null, '', 'contextid, fieldid, data'))); $usercontext = \local_elisprogram\context\user::instance(103); $dataset = new PHPUnit_Extensions_Database_DataSet_CsvDataSet(); $dataset->addTable(field_data_int::TABLE, elispm::file('tests/fixtures/user_field_data_int.csv')); $dataset->addTable(field_data_char::TABLE, elispm::file('tests/fixtures/user_field_data_char.csv')); $dataset->addTable(field_data_text::TABLE, elispm::file('tests/fixtures/user_field_data_text.csv')); $dataset = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataset); $dataset->addFullReplacement('##USERCTXID##', $usercontext->id); $dataset->addFullReplacement('##USERCTXLVL##', CONTEXT_ELIS_USER); // Only the first text field should be changed; everything else should be the same. $dataset->addFullReplacement('First text entry field', $src->profile_field_sometext); $ret = $dataset->addFullReplacement('Second text entry field', $src->profile_field_sometextfrompm); $this->assertDataSetsEqual($dataset, $result); }
/** * @dataProvider createGroupProvider */ public function testCreateGroup($description, $expectedDescription) { $model = $this->_getModel(array('Database\\Table\\GroupInfo' => $this->_groupInfo, 'Library\\Now' => new \DateTime('2015-02-12 22:07:00'))); $model->createGroup('name3', $description); $table = static::$serviceManager->get('Database\\Table\\ClientsAndGroups'); $id = $table->select(array('name' => 'name3', 'deviceid' => '_SYSTEMGROUP_'))->current()['id']; $dataSet = new \PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($this->_loadDataSet('CreateGroup')); $dataSet->addFullReplacement('#ID#', $id); $dataSet->addFullReplacement('#DESCRIPTION#', $expectedDescription); $connection = $this->getConnection(); $this->assertTablesEqual($dataSet->getTable('hardware'), $connection->createQueryTable('hardware', 'SELECT id, deviceid, name, description, lastdate FROM hardware')); $this->assertTablesEqual($dataSet->getTable('groups'), $connection->createQueryTable('groups', 'SELECT hardware_id, request, create_time, revalidate_from FROM groups')); }
/** * Load dataset from XML file. * * @param string $file The name of the file to load * @return array */ protected function load_xml_data_file($file) { static $replacements = null; $raw = $this->createXMLDataSet($file); $clean = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($raw); foreach ($this->replacements as $placeholder => $value) { $clean->addFullReplacement($placeholder, $value); } $logs = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($clean); $logs->addIncludeTables(array('log')); $stats = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($clean); $stats->addIncludeTables(array('stats_daily', 'stats_user_daily')); return array($logs, $stats); }
private function getReplacementDataset() { /* * This dataset is used to replace some data in a current dataset, one * of the powerfull usecase of this dataset is to implement null in flat * XML dataset. Below is the example code. * $ds = $this->createFlatXmlDataSet('myFlatXmlFixture.xml'); $rds = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($ds); $rds->addFullReplacement('##NULL##', null); return $rds; */ # But lets replace some name here only $arr_ds = $this->getArrayDataset(); $rds = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($arr_ds); $rds->addFullReplacement('two', 'two kumar'); return $rds; }
/** * Test buildPackage() method * * @param string $platform Internal platform descriptor (windows, linux, mac) * @param mixed $platformValue Database identifier (WINDOWS, LINUX, MacOSX) * @param string $content File content to validate (NULL to simulate no source file and no archive) * @param bool $createArchive Create archive, otherwise source file is assumed to be archive * @param string $hash Expected hash * @param integer $size Expected size * @param bool $deleteSource Passed to buildPackage() * @param bool $deleteArchive Expected argument for StorageInterface::write() * @dataProvider buildPackageProvider */ public function testBuild($platform, $platformValue, $content, $createArchive, $hash, $size, $deleteSource, $deleteArchive) { // vfsStream is difficult to set up from a data provider, so the files are created here. $root = vfsStream::setup('root'); if ($content) { if ($createArchive) { $fileLocation = 'source_file'; $archive = vfsStream::newFile('archive')->withContent($content)->at($root)->url(); } else { $fileLocation = vfsStream::newFile('test')->withContent($content)->at($root)->url(); $archive = $fileLocation; } } else { $fileLocation = ''; $archive = ''; } // Input data. More fields are added and tested internally $data = array('Id' => 1423401452, 'Platform' => $platform, 'Name' => 'package_new', 'Priority' => '7', 'Comment' => 'New package', 'FileLocation' => $fileLocation); // Callback to test the static part of package data (input values) $checkStaticData = function ($testData) use($data) { unset($testData['Hash']); unset($testData['Size']); return $testData === $data; }; // Callback to test the added file properties $checkFileProperties = function ($testData) use($hash, $size) { return $testData['Hash'] === $hash and $testData['Size'] === $size; }; // Storage mock $storage = $this->createMock('Model\\Package\\Storage\\Direct'); $storage->expects($this->once())->method('prepare')->with($this->callback($checkStaticData))->willReturn('Path'); $storage->expects($this->once())->method('write')->with($this->logicalAnd($this->callback($checkStaticData), $this->callback($checkFileProperties)), $archive, $deleteArchive)->willReturn(23); $packages = static::$serviceManager->get('Database\\Table\\Packages'); $serviceManager = $this->createMock('Zend\\ServiceManager\\ServiceManager'); $serviceManager->method('get')->willReturnMap(array(array('Database\\Table\\Packages', $packages), array('Library\\Now', new \DateTime('2015-02-08 14:17:32')), array('Model\\Package\\Storage\\Direct', $storage))); // Model mock $model = $this->getMockBuilder($this->_getClass())->setMethods(array('packageExists', 'autoArchive', 'deletePackage'))->setConstructorArgs(array($serviceManager))->getMock(); $model->expects($this->once())->method('packageExists')->willReturn(false); $model->expects($this->once())->method('autoArchive')->with($this->callback($checkStaticData), 'Path', $deleteSource)->willReturn($archive); $model->expects($this->never())->method('deletePackage'); // Invoke buildPackage method $model->buildPackage($data, $deleteSource); // Test database results $connection = $this->getConnection(); $dataset = new \PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($this->_loadDataSet('Build')); $dataset->addFullReplacement('#PLATFORM#', $platformValue); $dataset->addFullReplacement('#SIZE#', $size); $this->assertTablesEqual($dataset->getTable('download_available'), $connection->createQueryTable('download_available', 'SELECT * FROM download_available ORDER BY fileid')); $this->assertTablesEqual($dataset->getTable('download_enable'), $connection->createQueryTable('download_enable', 'SELECT fileid, info_loc, pack_loc FROM download_enable ORDER BY fileid')); }
/** * 2. German * 4. Genusswelten * 5. Getränke * 3. English * 6. World of food * 7. Spirits * * @return PHPUnit_Extensions_Database_DataSet_IDataSet */ public function getDataSet() { $dataset = $this->createFlatXMLDataSet(__DIR__ . '/_CategoryDenormalization/category-seed.xml'); $dataset = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataset); $dataset->addFullReplacement('##NULL##', null); return $dataset; }
/** * Load custom profile field data from CSV. */ protected function load_csv_data() { $dataset = $this->createCsvDataSet(array('user' => elis::component_file('elisprogram', 'tests/fixtures/mdluser.csv'), 'user_info_field' => elis::component_file('elisprogram', 'tests/fixtures/user_info_field.csv'), 'user_info_data' => elis::component_file('elisprogram', 'tests/fixtures/user_info_data.csv'), user::TABLE => elis::component_file('elisprogram', 'tests/fixtures/pmuser.csv'), usermoodle::TABLE => elis::component_file('elisprogram', 'tests/fixtures/usermoodle.csv'), field::TABLE => elis::component_file('elisprogram', 'tests/fixtures/user_field.csv'), field_owner::TABLE => elis::component_file('elisprogram', 'tests/fixtures/user_field_owner.csv'), userset::TABLE => elis::component_file('elisprogram', 'tests/fixtures/userset.csv'))); $dataset = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataset); $dataset->addSubStrReplacement('\\n', "\n"); $this->loadDataSet($dataset); }
protected function load_csv_data() { global $CFG; $dataset = $this->createCsvDataSet(array('user' => dirname(__FILE__) . '/fixtures/usertable.csv', 'user_info_field' => dirname(__FILE__) . '/fixtures/user_info_field.csv')); $dataset = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($dataset); $dataset->addFullReplacement('##MNET_LOCALHOST_ID##', $CFG->mnet_localhost_id); $this->loadDataSet($dataset); }