A usage for this is replacing all values == '[NULL'] with a true NULL value
Author: Mike Lively (m@digitalsandwich.com)
Inheritance: extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet
Ejemplo n.º 1
0
 /**
  * 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);
 }
Ejemplo n.º 2
0
 /**
  * @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;
 }
Ejemplo n.º 3
0
 /**
  * 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'));
 }
Ejemplo n.º 5
0
 /**
  * @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);
 }
Ejemplo n.º 7
0
 /** {@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;
     }
 }
Ejemplo n.º 8
0
 /**
  * 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);
 }
Ejemplo n.º 9
0
 /**
  * @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'));
 }
Ejemplo n.º 10
0
 /**
  * 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);
 }
Ejemplo n.º 11
0
 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;
 }
Ejemplo n.º 12
0
 /**
  * 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;
 }
Ejemplo n.º 14
0
 /**
  * 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);
 }