cvs commit: p5ee/App-Repository/t DBI-select.t

[email protected] (Stephen Adkins)
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
cvsuser     04/12/14 07:43:15

  Modified:    App-Repository/t DBI-select.t
  Log:
  reconnect on error in _get_rows() and _get_row()
  
  Revision  Changes    Path
  1.7       +140 -2    p5ee/App-Repository/t/DBI-select.t
  
  Index: DBI-select.t
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Repository/t/DBI-select.t,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DBI-select.t	2 Sep 2004 20:59:16 -0000	1.6
  +++ DBI-select.t	14 Dec 2004 15:43:15 -0000	1.7
  @@ -463,6 +463,60 @@
   &check_select($sql,0);
   
   ###########################################################################
  +# EXCEPTIONS
  +###########################################################################
  +
  +{
  +    my ($rows, $row);
  +    open(SAVE, ">&STDERR");
  +    open(STDERR, "/dev/null");
  +
  +    $rows = [];
  +    eval {
  +        $rows = $rep->get_rows("table_y", {}, ["x"]);
  +    };
  +    ok($@ =~ /fail/, "get_rows(): bad SQL causes exception");
  +
  +    $rows = [];
  +    eval {
  +        $rows = $rep->get_row("table_y", {}, ["x"]);
  +    };
  +    ok($@ =~ /fail/, "get_row(): bad SQL causes exception");
  +
  +    $rep->insert("test_person",["person_id","last_name","first_name"],[1,"Stephen","Adkins"]);
  +
  +    $rep->_disconnect();
  +    $rows = [];
  +    eval {
  +        $rows = $rep->get_rows("test_person", {}, ["person_id"]);
  +    };
  +    ok($#$rows == 0, "get_rows(): reconnect because rep was _disconnect()ed");
  +
  +    $rep->{dbh}{mysql_auto_reconnect} = 0;
  +    $rep->{dbh}->disconnect();
  +    $rows = [];
  +    eval {
  +        $rows = $rep->get_rows("test_person", {}, ["person_id"]);
  +    };
  +    ok($#$rows == 0, "get_rows(): reconnect because dbh was disconnect()ed");
  +
  +    $rep->{dbh}{mysql_auto_reconnect} = 0;
  +    $rep->{dbh}->disconnect();
  +    $row = undef;
  +    eval {
  +        $row = $rep->get_row("test_person", {person_id => 1}, ["person_id"]);
  +    };
  +    ok(defined $row && $#$row == 0, "get_row(): reconnect because dbh was disconnect()ed");
  +
  +    open(STDERR, ">&SAVE");
  +    close(SAVE);
  +
  +    $rep->delete("test_person",{person_id => 1});
  +}
  +
  +exit(0);
  +
  +###########################################################################
   # JOINED (MULTI-TABLE) SELECT SQL-GENERATION TESTS
   ###########################################################################
   
  @@ -474,8 +528,92 @@
   EOF
   #$App::trace_subs = 1;
   &test_get_rows($expect_sql,0,"_mk_select_joined_sql(): 1 col, no params","test_person",{},"age");
  +
   exit(0);
   
  +$expect_sql = <<EOF;
  +select
  +   t1.first_name,
  +   t1.state,
  +   t1.age
  +from test_person
  +where (age in (14,15) or age > 18 or age is null)
  +EOF
  +&test_get_rows($expect_sql, 0, "_mk_select_joined_sql(): OR conditions with [] value",
  +    "test_person",
  +    {age => [14, 15, ">18", undef]},
  +    ["first_name","state","age"]);
  +$sql = $rep->_mk_select_sql("test_person",
  +                            {age => [14,15,">18",undef]},
  +                            ["first_name","state","age"]);
  +is($sql, $expect_sql, "_mk_select_sql(): OR conditions with [] value");
  +&check_select($sql,0);
  +
  +$expect_sql = <<EOF;
  +select
  +   t1.first_name,
  +   t1.state,
  +   t1.age
  +from test_person
  +where age > 14
  +  and first_name like '%A%'
  +EOF
  +&test_get_rows($expect_sql, 0, "_mk_select_joined_sql(): square bracket [] params",
  +    "test_person",
  +    [age => ">14", first_name => "*A*"],
  +    ["first_name","state","age"]);
  +$sql = $rep->_mk_select_sql("test_person",
  +                            [age => ">14", first_name => "*A*"],
  +                            ["first_name","state","age"]);
  +is($sql, $expect_sql, "_mk_select_sql(): square bracket [] params");
  +&check_select($sql,0);
  +
  +$expect_sql = <<EOF;
  +select
  +   t1.first_name,
  +   t1.state,
  +   t1.age
  +from test_person
  +where age > 14
  +   or not (first_name like '%A%')
  +   or (state in ('GA','CA') and
  +       age <= 2)
  +EOF
  +&test_get_rows($expect_sql, 0, "_mk_select_joined_sql(): ordercols, directions",
  +    "test_person",
  +    ["_or", age => ">14",
  +      ["_not", first_name => "*A*"],
  +      ["_and", state => "GA,CA", "age.le" => 2]],
  +    ["first_name","state","age"]);
  +$sql = $rep->_mk_select_sql("test_person",
  +                            [age => ">14", first_name => "*A*"],
  +                            ["first_name","state","age"]);
  +is($sql, $expect_sql, "_mk_select_sql(): verbatim");
  +&check_select($sql,0);
  +
  +$expect_sql = <<EOF;
  +select
  +   t1.first_name,
  +   t1.state,
  +   t1.age
  +from test_person
  +where not (not(age > 14)
  +  and not (first_name like '%A%')
  +  and not (state in ('GA','CA') and
  +           age <= 2))
  +EOF
  +&test_get_rows($expect_sql, 0, "_mk_select_joined_sql(): ordercols, directions",
  +    "test_person",
  +    ["_not", age => ">14",
  +      ["_not_or", first_name => "*A*"],
  +      ["_not_and", state => ["GA","CA"], "age.le" => 2]],
  +    ["first_name","state","age"]);
  +$sql = $rep->_mk_select_sql("test_person",
  +                            [age => ">14", first_name => "*A*"],
  +                            ["first_name","state","age"]);
  +is($sql, $expect_sql, "_mk_select_sql(): verbatim");
  +&check_select($sql,0);
  +
   &test_get_rows($expect_sql,0,"_mk_select_joined_sql(): 1 col as array, no params","test_person",{},["age"]);
   
   $expect_sql = <<EOF;
  @@ -804,14 +942,14 @@
   from test_person
   where age in (14,15,16,17,18)
   EOF
  -&test_get_rows($expect_sql, 0, "_mk_select_joined_sql(): ordercols, directions",
  +&test_get_rows($expect_sql, 0, "_mk_select_joined_sql(): verbatim (boo. hiss. evil.)",
       "test_person",
       {"age.verbatim" => "age in (14,15,16,17,18)"},
       ["first_name","last_name","city","state","age"]);
   $sql = $rep->_mk_select_sql("test_person",
                               {"age.verbatim" => "age in (14,15,16,17,18)"},
                               ["first_name","last_name","city","state","age"]);
  -is($sql, $expect_sql, "_mk_select_sql(): verbatim");
  +is($sql, $expect_sql, "_mk_select_sql(): verbatim (boo. hiss. evil.)");
   &check_select($sql,0);
   
   exit 0;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.