Author: Mike Lively (m@digitalsandwich.com)
Inheritance: extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet
Example #1
0
 private function runTableTests($expectedDataset, $tables, $filters)
 {
     $expectedDataset = new PHPUnit_Extensions_Database_DataSet_XmlDataSet($expectedDataset);
     $actualDataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($this->getConnection()->createDataSet($tables), $filters);
     foreach ($tables as $table) {
         $this->assertTablesEqual($expectedDataset->getTable($table), $actualDataset->getTable($table));
     }
 }
 public function testIncludeExcludeMixedDataSet()
 {
     $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($this->expectedDataSet);
     $dataSet = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__) . '/../_files/XmlDataSets/FilteredTestComparison.xml');
     $filteredDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet);
     $filteredDataSet->addIncludeTables(array('table1', 'table3'));
     $filteredDataSet->setExcludeColumnsForTable('table1', array('table1_id'));
     $filteredDataSet->setIncludeColumnsForTable('table3', array('column9', 'column10', 'column11', 'column12'));
     self::assertThat($filteredDataSet, $constraint);
 }
 public function testImportWithoutHeaders()
 {
     $tableName = 'csv_2cols';
     $result = $this->import->setIgnoreLines(0)->import($tableName, ['col1', 'col2'], [new CsvFile(__DIR__ . '/_data/csv-import/escaping/raw-without-headers.csv', "\t", "", "\\")]);
     $expectedDataset = $this->createMySQLXMLDataSet(__DIR__ . "/_data/csv-import/escaping/expectation.standard.xml");
     $currentDataset = $this->getConnection()->createDataSet();
     $expectedDataset = new \PHPUnit_Extensions_Database_DataSet_DataSetFilter($expectedDataset, [$tableName]);
     $expectedDataset->setExcludeColumnsForTable($tableName, ['timestamp']);
     $currentDataset = new \PHPUnit_Extensions_Database_DataSet_DataSetFilter($currentDataset, [$tableName]);
     $currentDataset->setExcludeColumnsForTable($tableName, ['timestamp']);
     $this->assertTablesEqual($expectedDataset->getTable($tableName), $currentDataset->getTable($tableName));
     $this->assertEmpty($result->getWarnings());
 }
 /**
  * compares a database table to an xml file
  * $xmlFile = the path to the xml file. dir is tests/_files/
  * $table = the db table you're looking up
  * $ignoredColumns = an array of columns to ignore (such as primary keys that could get different numbers)
  */
 public function dbXmlCompare($xmlFile, $table, $ignoredColumns)
 {
     $config = Zend_Registry::get('config');
     $tablePrefix = $config->app->tablePrefix;
     $xmlSet = $this->getDataSet(TESTS_PATH . '/_files/' . $xmlFile);
     $dbSetTable = $this->getConnection()->createDataSet();
     if ($ignoredColumns) {
         if (!is_array($ignoredColumns)) {
             $ignoredColumns = array($ignoredColumns);
         }
         $dbset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dbSetTable, array($tablePrefix . $table => $ignoredColumns));
     }
     $this->assertTablesEqual($xmlSet->getTable($tablePrefix . $table), $dbset->getTable($tablePrefix . $table));
 }
 public function testAddMessageNoAttach()
 {
     $message = new ModelMessage(null, 'ivan', '2015-11-15 13:48:26', 1, 'Cool!', null);
     $actual1 = $message->addMessage(null);
     //fwrite(STDERR, print_r($actual1, true));
     $expected1 = ['id' => 16, 'username' => 'ivan', 'timestamp' => '2015-11-15 13:48:26', 'thread_id' => '1', 'text' => 'Cool!', 'likes' => 0, 'didlike' => false, 'attachments' => null];
     $this->assertEquals($expected1, $actual1);
     $actual = $this->getConnection()->createDataSet(['messages']);
     $actualFilter = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($actual);
     $actualFilter->setExcludeColumnsForTable('messages', ['timestamp']);
     $expected = $this->createFlatXmlDataSet('_files/messages_add.xml');
     $expectedFilter = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($expected);
     $expectedFilter->setExcludeColumnsForTable('messages', ['timestamp']);
     $this->assertDataSetsEqual($expectedFilter, $actualFilter);
 }
Example #6
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);
 }
Example #7
0
 public function testRolesRemoveRecursive()
 {
     $role_id_1 = $this->Instance()->add($this->type() . '_1', $this->type() . ' Description 1');
     $role_id_2 = $this->Instance()->add($this->type() . '_2', $this->type() . ' Description 2', $role_id_1);
     $role_id_3 = $this->Instance()->add($this->type() . '_3', $this->type() . ' Description 3', $role_id_1);
     $role_id_4 = $this->Instance()->add($this->type() . '_4', $this->type() . ' Description 4');
     $perm_id_1 = self::$rbac->Permissions->add('permissions_1', 'permissions Description 1');
     $this->Instance()->assign($role_id_1, $perm_id_1);
     self::$rbac->Users->assign($role_id_1, 5);
     $result = $this->Instance()->remove($role_id_1, true);
     $dataSet = $this->getConnection()->createDataSet();
     $filterDataSet = new \PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet);
     $filterDataSet->addIncludeTables(array($this->Instance()->tablePrefix() . 'rolepermissions', $this->Instance()->tablePrefix() . $this->type(), $this->Instance()->tablePrefix() . 'userroles'));
     $filterDataSet->setExcludeColumnsForTable($this->Instance()->tablePrefix() . 'rolepermissions', array('assignmentdate'));
     $filterDataSet->setExcludeColumnsForTable($this->Instance()->tablePrefix() . 'userroles', array('assignmentdate'));
     $expectedDataSet = $this->_dataSet($this->type() . '/expected_remove_recursive');
     $this->assertDataSetsEqual($expectedDataSet, $filterDataSet);
 }
Example #8
0
 public function testUpdateDepDate()
 {
     $this->obj->update_dep_dates(28);
     $xml_file_dataset = $this->createXMLDataSet(dirname(__FILE__) . '/../db_files/tasksTestUpdateDepDates.xml');
     $xml_file_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_file_dataset, array('tasks' => array('task_updated')));
     $xml_db_dataset = $this->getConnection()->createDataSet();
     $xml_db_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_db_dataset, array('tasks' => array('task_updated')));
     $this->assertTablesEqual($xml_file_filtered_dataset->getTable('tasks'), $xml_db_filtered_dataset->getTable('tasks'));
     $now_secs = time();
     $min_time = $now_secs - 10;
     /**
      * Get updated dates to test against
      */
     $q = new DBQuery();
     $q->addTable('tasks');
     $q->addQuery('task_updated');
     $q->addWhere('task_id IN(28)');
     $results = $q->loadList();
     foreach ($results as $dates) {
         $this->assertGreaterThanOrEqual($min_time, strtotime($dates['task_updated']));
         $this->assertLessThanOrEqual($now_secs, strtotime($dates['task_updated']));
     }
 }
Example #9
0
 public function testWithDatasetOnly()
 {
     // Create a dataset from live table through sql dataset
     // This is also a kind of live data only
     $ds1 = new PHPUnit_Extensions_Database_DataSet_QueryDataSet($this->getConnection());
     $ds1->addTable('user');
     $ds2 = $this->getArrayDataset();
     $filterDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($ds2);
     $filterDataSet->addIncludeTables(array('user'));
     $this->assertDataSetsEqual($ds1, $filterDataSet);
 }
Example #10
0
 /**
  * Tests importing tasks from one project to another
  */
 public function testImportTasks()
 {
     $this->obj->load(4);
     $response = $this->obj->importTasks(3);
     $this->assertEquals(array(), $response);
     $xml_file_dataset = $this->createXMLDataSet($this->getDataSetPath() . 'projectsTestImportTasks.xml');
     $xml_file_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_file_dataset, array('tasks' => array('task_created', 'task_updated')));
     $xml_db_dataset = $this->getConnection()->createDataSet();
     $xml_db_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_db_dataset, array('tasks' => array('task_created', 'task_updated')));
     $this->assertTablesEqual($xml_file_filtered_dataset->getTable('tasks'), $xml_db_filtered_dataset->getTable('tasks'));
     $now_secs = time();
     $min_time = $now_secs - 10;
     /**
      * Get created dates to test against
      */
     $q = new w2p_Database_Query();
     $q->addTable('tasks');
     $q->addQuery('task_created');
     $q->addWhere('task_project = 4');
     $results = $q->loadColumn();
     foreach ($results as $created) {
         $this->assertGreaterThanOrEqual($min_time, strtotime($created));
         $this->assertLessThanOrEqual($now_secs, strtotime($created));
     }
     /**
      * Get updated dates to test against
      */
     $q = new w2p_Database_Query();
     $q->addTable('tasks');
     $q->addQuery('task_updated');
     $q->addWhere('task_project = 4');
     $results = $q->loadColumn();
     foreach ($results as $updated) {
         $this->assertGreaterThanOrEqual($min_time, strtotime($updated));
         $this->assertLessThanOrEqual($now_secs, strtotime($updated));
     }
     $xml_dataset = $this->createXMLDataSet($this->getDataSetPath() . 'projectsTestImportTasks.xml');
     $this->assertTablesEqual($xml_dataset->getTable('user_tasks'), $this->getConnection()->createDataSet()->getTable('user_tasks'));
     $this->assertTablesEqual($xml_dataset->getTable('task_dependencies'), $this->getConnection()->createDataSet()->getTable('task_dependencies'));
 }
Example #11
0
 public function testUsersResetAssignments()
 {
     $role_id_1 = self::$rbac->Roles->add('roles_1', 'roles Description 1');
     $role_id_2 = self::$rbac->Roles->add('roles_2', 'roles Description 2');
     $role_id_3 = self::$rbac->Roles->add('roles_3', 'roles Description 3');
     self::$rbac->Users->assign($role_id_1, 5);
     self::$rbac->Users->assign($role_id_2, 5);
     self::$rbac->Users->assign($role_id_3, 5);
     self::$rbac->Users->resetAssignments(true);
     $dataSet = $this->getConnection()->createDataSet();
     $filterDataSet = new \PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet);
     $filterDataSet->addIncludeTables(array(self::$rbac->Users->tablePrefix() . 'userroles'));
     $filterDataSet->setExcludeColumnsForTable(self::$rbac->Users->tablePrefix() . 'userroles', array('assignmentdate'));
     $expectedDataSet = $this->_dataSet('users/expected_reset_assignments');
     $this->assertDataSetsEqual($expectedDataSet, $filterDataSet);
 }
Example #12
0
 /**
  * @covers ::update
  */
 public function testUpdate()
 {
     $carTable = new CarTable($this->pdo);
     $cars = $carTable->findAll();
     $this->assertCount(2, $cars);
     /**
      * Alter first car
      */
     $firstCar = $cars[0];
     $this->assertFalse($firstCar->isAltered());
     $firstCar->set('horsepower', 21);
     $this->assertTrue($firstCar->isAltered());
     $carTable->update($firstCar);
     /**
      * Alter second car
      */
     $secondCar = $cars[1];
     $this->assertFalse($secondCar->isAltered());
     $secondCar->set('horsepower', 41);
     $this->assertTrue($secondCar->isAltered());
     $carTable->update($secondCar);
     /**
      * Assert data set
      */
     $expectedCsvDataSet = new \PHPUnit_Extensions_Database_DataSet_CsvDataSet();
     $expectedCsvDataSet->addTable('cars', dirname(__FILE__) . '/../Fixture/cars_after-update.csv');
     $expectedDataSet = new \PHPUnit_Extensions_Database_DataSet_DataSetFilter($expectedCsvDataSet);
     $expectedDataSet->setExcludeColumnsForTable('cars', ['modified', 'created']);
     $dataSet = new \PHPUnit_Extensions_Database_DataSet_QueryDataSet($this->getConnection());
     $dataSet->addTable('cars', 'SELECT * FROM `cars`');
     $dataSet = new \PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet);
     $dataSet->setExcludeColumnsForTable('cars', ['modified', 'created']);
     $this->assertDataSetsEqual($expectedDataSet, $dataSet);
 }
Example #13
0
 public function testManagerReset()
 {
     $role_id_1 = self::$rbac->Roles->add('roles_1', 'roles Description 1');
     $perm_id_1 = self::$rbac->Permissions->add('permissions_1', 'permissions Description 1');
     self::$rbac->Roles->assign($role_id_1, $perm_id_1);
     self::$rbac->Users->assign($role_id_1, 5);
     $result = self::$rbac->reset(true);
     $dataSet = $this->getConnection()->createDataSet();
     $filterDataSet = new \PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet);
     $filterDataSet->setExcludeColumnsForTable(self::$rbac->tablePrefix() . 'rolepermissions', array('assignmentdate'));
     $filterDataSet->setExcludeColumnsForTable(self::$rbac->tablePrefix() . 'userroles', array('assignmentdate'));
     $expectedDataSet = $this->_dataSet('/manager/expected_reset');
     $this->assertDataSetsEqual($expectedDataSet, $filterDataSet);
 }
Example #14
0
 public function filterTable($tableName, $dataSet)
 {
     $filterDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet);
     if (is_string($tableName)) {
         $tableName = array($tableName);
     }
     foreach ($tableName as $name) {
         $filterDataSet->setExcludeColumnsForTable($name, array('created', 'last_updated'));
     }
     return $filterDataSet;
 }
Example #15
0
 /**
  * Tests the proper creation of a project.
  */
 public function testCreateFile()
 {
     global $AppUI;
     $this->obj->bind($this->post_data);
     $errorArray = $this->obj->store($AppUI);
     $this->assertTrue($errorArray);
     $xml_file_dataset = $this->createXMLDataSet($this->getDataSetPath() . 'filesTestCreate.xml');
     $xml_file_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_file_dataset, array('files' => array('project_created', 'project_updated')));
     $xml_db_dataset = $this->getConnection()->createDataSet();
     $xml_db_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_db_dataset, array('files' => array('project_created', 'project_updated')));
     $this->assertTablesEqual($xml_file_filtered_dataset->getTable('files'), $xml_db_filtered_dataset->getTable('files'));
 }
Example #16
0
 /**
  * Test deleting a tasklog
  */
 public function testDelete()
 {
     global $AppUI;
     $this->obj->load(1);
     $msg = $this->obj->delete();
     $xml_file_dataset = $this->createXMLDataSet($this->getDataSetPath() . 'tasklogsTestDelete.xml');
     $xml_file_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_file_dataset, array('task_log' => array('task_log_updated')));
     $xml_db_dataset = $this->getConnection()->createDataSet();
     $xml_db_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_db_dataset, array('task_log' => array('task_log_updated')));
     $this->assertTablesEqual($xml_file_filtered_dataset->getTable('task_log'), $xml_db_filtered_dataset->getTable('task_log'));
     $this->assertTablesEqual($xml_file_filtered_dataset->getTable('tasks'), $xml_db_filtered_dataset->getTable('tasks'));
     $this->assertTablesEqual($xml_file_filtered_dataset->getTable('projects'), $xml_db_filtered_dataset->getTable('projects'));
 }
Example #17
0
 public function testReset()
 {
     $this->Instance()->add($this->type() . '_title_1', $this->type() . ' Description 1');
     $this->Instance()->add($this->type() . '_title_2', $this->type() . ' Description 2');
     $this->Instance()->add($this->type() . '_title_3', $this->type() . ' Description 3');
     $this->Instance()->reset(true);
     $dataSet = $this->getConnection()->createDataSet();
     $filterDataSet = new \PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet);
     $filterDataSet->addIncludeTables(array($this->Instance()->tablePrefix() . $this->type()));
     $expectedDataSet = $this->_dataSet('base/expected_reset_' . $this->type());
     $this->assertDataSetsEqual($expectedDataSet, $filterDataSet);
 }
Example #18
0
 /**
  * Tests adding a reminder to a task
  */
 public function testAddReminder()
 {
     global $AppUI;
     global $w2Pconfig;
     $this->obj->load(1);
     // Ensure our global setting for task_reminder_control is set properly for this
     $old_task_reminder_control = $w2Pconfig['task_reminder_control'];
     $w2Pconfig['task_reminder_control'] = true;
     $this->obj->addReminder();
     $this->obj->task_percent_complete = 50;
     $xml_file_dataset = $this->createXMLDataset($this->getDataSetPath() . 'tasksTestAddReminder.xml');
     $xml_file_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_file_dataset, array('event_queue' => array('queue_start')));
     $xml_db_dataset = $this->getConnection()->createDataSet();
     $xml_db_filtered_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($xml_db_dataset, array('event_queue' => array('queue_start')));
     $this->assertTablesEqual($xml_file_filtered_dataset->getTable('event_queue'), $xml_db_filtered_dataset->getTable('event_queue'));
     $now_secs = time();
     $min_time = $now_secs - 10;
     /**
      * Get updated dates to test against
      */
     $q = new w2p_Database_Query();
     $q->addTable('event_queue');
     $q->addQuery('queue_start');
     $q->addWhere('queue_id = 2');
     $results = $q->loadColumn();
     foreach ($results as $queue_start) {
         $this->assertGreaterThanOrEqual($min_time, $queue_start);
         $this->assertLessThanOrEqual($now_secs, $queue_start);
     }
     $w2Pconfig['task_reminder_control'] = $old_task_reminder_control;
 }
Example #19
0
 public function testPermissionsUnassignRoles()
 {
     $perm_id_1 = $this->Instance()->add($this->type() . '_1', $this->type() . ' Description 1');
     $role_id_1 = self::$rbac->Roles->add('roles_1', 'roles Description 1');
     $role_id_2 = self::$rbac->Roles->add('roles_2', 'roles Description 2');
     $role_id_3 = self::$rbac->Roles->add('roles_3', 'roles Description 3');
     $this->Instance()->assign($role_id_1, $perm_id_1);
     $this->Instance()->assign($role_id_2, $perm_id_1);
     $this->Instance()->assign($role_id_3, $perm_id_1);
     $result = $this->Instance()->unassignRoles($perm_id_1);
     $dataSet = $this->getConnection()->createDataSet();
     $filterDataSet = new \PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet);
     $filterDataSet->addIncludeTables(array($this->Instance()->tablePrefix() . 'rolepermissions'));
     $filterDataSet->setExcludeColumnsForTable($this->Instance()->tablePrefix() . 'rolepermissions', array('assignmentdate'));
     $expectedDataSet = $this->_dataSet('/' . $this->type() . '/expected_unassign_roles');
     $this->assertDataSetsEqual($expectedDataSet, $filterDataSet);
 }