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;
  
  
  

Reply via email to