Author: spadkins
Date: Tue Jan 23 15:51:34 2007
New Revision: 8687
Modified:
p5ee/trunk/App-Repository/t/DBI-insert.t
Log:
more tests
Modified: p5ee/trunk/App-Repository/t/DBI-insert.t
==============================================================================
--- p5ee/trunk/App-Repository/t/DBI-insert.t (original)
+++ p5ee/trunk/App-Repository/t/DBI-insert.t Tue Jan 23 15:51:34 2007
@@ -156,6 +156,101 @@
}),
"insert \\ and ' and \\' seems to work");
is($db->get("test_person",11,"first_name"),'[EMAIL PROTECTED]'', "yep.
first_name worked.");
+
+ my $new_hashes =
+ [{ age=>39, first_name=>"stephen", gender=>"M", state=>"GA",
foo=>"bar"},
+ { age=>37, first_name=>"susan", gender=>"F", state=>"GA", foo=>"bar"},
+ { age=>6, first_name=>"maryalice", gender=>"F", state=>"GA",
foo=>"bar"},
+ { age=>3, first_name=>"paul", gender=>"M", state=>"GA", foo=>"bar"},
+ { age=>1, first_name=>"christine", gender=>"F", state=>"GA",
foo=>"bar"},
+ { age=>45, first_name=>"tim", gender=>"M", state=>"GA", foo=>"bar"},
+ { age=>39, first_name=>"keith", gender=>"M", state=>"GA",
foo=>"bar"},];
+
+ my $new_rows =
+ [[39,"stephen", "M","GA"],
+ [37,"susan", "F","GA"],
+ [6,"maryalice", "F","GA"],
+ [3,"paul", "M","GA"],
+ [1,"christine", "F","GA"],
+ [45,"tim", "M","GA"],
+ [39,"keith", "M","GA"],];
+
+ my $dup_rows =
+ [[1, 39,"stephen", "M","GA"],
+ [2, 37,"susan", "F","GA"],
+ [3, 6,"maryalice", "F","GA"],
+ [4, 3,"paul", "M","GA"],
+ [5, 1,"christine", "F","GA"],
+ [6, 45,"tim", "M","GA"],
+ [7, 39,"keith", "M","GA"],];
+
+ my ($expect_sql, $sql);
+$expect_sql = <<EOF;
+insert into test_person
+ (age, first_name, gender, state)
+values
+ (39, 'stephen', 'M', 'GA'),
+ (37, 'susan', 'F', 'GA'),
+ (6, 'maryalice', 'F', 'GA'),
+ (3, 'paul', 'M', 'GA'),
+ (1, 'christine', 'F', 'GA'),
+ (45, 'tim', 'M', 'GA'),
+ (39, 'keith', 'M', 'GA')
+EOF
+$sql = $db->_mk_insert_rows_sql("test_person",
["age","first_name","gender","state"], $new_rows);
+is($sql, $expect_sql, "_mk_insert_rows_sql(): 7 rows, bulk insert");
+$sql = $db->_mk_insert_rows_sql("test_person",
["age","first_name","gender","state"], $new_hashes);
+is($sql, $expect_sql, "_mk_insert_rows_sql(): 7 rows, bulk insert (from
hashes)");
+
+$expect_sql = <<EOF;
+replace into test_person
+ (age, first_name, gender, state)
+values
+ (39, 'stephen', 'M', 'GA'),
+ (37, 'susan', 'F', 'GA'),
+ (6, 'maryalice', 'F', 'GA'),
+ (3, 'paul', 'M', 'GA'),
+ (1, 'christine', 'F', 'GA'),
+ (45, 'tim', 'M', 'GA'),
+ (39, 'keith', 'M', 'GA')
+EOF
+$sql = $db->_mk_insert_rows_sql("test_person",
["age","first_name","gender","state"], $new_rows, { replace => 1 });
+is($sql, $expect_sql, "_mk_insert_rows_sql(): 7 rows, bulk replace");
+
+$expect_sql = <<EOF;
+insert into test_person
+ (person_id, age, first_name, gender, state)
+values
+ (1, 39, 'stephen', 'M', 'GA'),
+ (2, 37, 'susan', 'F', 'GA'),
+ (3, 6, 'maryalice', 'F', 'GA'),
+ (4, 3, 'paul', 'M', 'GA'),
+ (5, 1, 'christine', 'F', 'GA'),
+ (6, 45, 'tim', 'M', 'GA'),
+ (7, 39, 'keith', 'M', 'GA')
+on duplicate key update
+ person_id = values(person_id),
+ age = values(age),
+ first_name = values(first_name),
+ gender = values(gender),
+ state = values(state)
+EOF
+$sql = $db->_mk_insert_rows_sql("test_person", ["person_id",
"age","first_name","gender","state"], $dup_rows, { update => 1 });
+is($sql, $expect_sql, "_mk_insert_rows_sql(): 7 rows, bulk insert/update");
+
+#######################################
+my ($nrows);
+$nrows = $db->insert_rows("test_person",
["age","first_name","gender","state"], $new_rows);
+is($nrows, 7, "insert_rows(): 7 rows, bulk insert");
+$nrows = $db->insert_rows("test_person",
["person_id","age","first_name","gender","state"], $dup_rows, { replace => 1 });
+is($nrows, 14, "insert_rows(): 7 rows (14 affected), bulk replace");
+$nrows = $db->insert_rows("test_person", ["person_id",
"age","first_name","gender","state"], $dup_rows, { update => 1 });
+is($nrows, 14, "insert_rows(): 7 rows (14 affected), bulk insert/update");
+$nrows = $db->insert_rows("test_person",
["person_id","age","first_name","gender","state"], $dup_rows, { replace => 1,
maxrows => 4 });
+is($nrows, 14, "insert_rows(): 7 rows (14 affected), bulk replace (4 at a
time)");
+$nrows = $db->insert_rows("test_person", ["person_id",
"age","first_name","gender","state"], $dup_rows, { update => 1, maxrows => 4 });
+is($nrows, 14, "insert_rows(): 7 rows (14 affected), bulk insert/update (4 at
a time)");
+
}
exit 0;