From f12768798b0e1e0db6db304fdb0b0528ada54772 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sun, 5 Sep 2010 16:18:21 +0000 Subject: [PATCH] MDL-16853 improver set_field() unittests, hopefully this would detect any potential Oracle problems mentioned in tracker --- lib/dml/simpletest/testdml.php | 47 +++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/lib/dml/simpletest/testdml.php b/lib/dml/simpletest/testdml.php index 981308062aa..8ab84ce2c2d 100755 --- a/lib/dml/simpletest/testdml.php +++ b/lib/dml/simpletest/testdml.php @@ -1629,15 +1629,44 @@ class dml_test extends UnitTestCase { $dbman->create_table($table); $this->tables[$tablename] = $table; - $DB->insert_record($tablename, array('course' => 1)); - - $this->assertTrue($DB->set_field($tablename, 'course', 2, array('id' => 1))); - $this->assertEqual(2, $DB->get_field($tablename, 'course', array('id' => 1))); - - // Add one set_field() example where the field being set is also one condition - // to check we haven't problem with any type of param (specially NAMED ones) - $DB->set_field($tablename, 'course', '1', array('course' => 2)); - $this->assertEqual(1, $DB->get_field($tablename, 'course', array('id' => 1))); + // simple set_field + $id1 = $DB->insert_record($tablename, array('course' => 1)); + $id2 = $DB->insert_record($tablename, array('course' => 1)); + $id3 = $DB->insert_record($tablename, array('course' => 3)); + $this->assertTrue($DB->set_field($tablename, 'course', 2, array('id' => $id1))); + $this->assertEqual(2, $DB->get_field($tablename, 'course', array('id' => $id1))); + $this->assertEqual(1, $DB->get_field($tablename, 'course', array('id' => $id2))); + $this->assertEqual(3, $DB->get_field($tablename, 'course', array('id' => $id3))); + $DB->delete_records($tablename, array()); + + // multiple fields affected + $id1 = $DB->insert_record($tablename, array('course' => 1)); + $id2 = $DB->insert_record($tablename, array('course' => 1)); + $id3 = $DB->insert_record($tablename, array('course' => 3)); + $DB->set_field($tablename, 'course', '5', array('course' => 1)); + $this->assertEqual(5, $DB->get_field($tablename, 'course', array('id' => $id1))); + $this->assertEqual(5, $DB->get_field($tablename, 'course', array('id' => $id2))); + $this->assertEqual(3, $DB->get_field($tablename, 'course', array('id' => $id3))); + $DB->delete_records($tablename, array()); + + // no field affected + $id1 = $DB->insert_record($tablename, array('course' => 1)); + $id2 = $DB->insert_record($tablename, array('course' => 1)); + $id3 = $DB->insert_record($tablename, array('course' => 3)); + $DB->set_field($tablename, 'course', '5', array('course' => 0)); + $this->assertEqual(1, $DB->get_field($tablename, 'course', array('id' => $id1))); + $this->assertEqual(1, $DB->get_field($tablename, 'course', array('id' => $id2))); + $this->assertEqual(3, $DB->get_field($tablename, 'course', array('id' => $id3))); + $DB->delete_records($tablename, array()); + + // all fields - no condition + $id1 = $DB->insert_record($tablename, array('course' => 1)); + $id2 = $DB->insert_record($tablename, array('course' => 1)); + $id3 = $DB->insert_record($tablename, array('course' => 3)); + $DB->set_field($tablename, 'course', 5, array()); + $this->assertEqual(5, $DB->get_field($tablename, 'course', array('id' => $id1))); + $this->assertEqual(5, $DB->get_field($tablename, 'course', array('id' => $id2))); + $this->assertEqual(5, $DB->get_field($tablename, 'course', array('id' => $id3))); // Note: All the nulls, booleans, empties, quoted and backslashes tests // go to set_field_select() because set_field() is just one wrapper over it -- 2.43.0