Showing 4 changed files with 58 additions and 48 deletions
+5 -2
lib/DBI/Custom.pm
... ...
@@ -85,7 +85,7 @@ sub connect {
85 85
     my $connect_info = $self->connect_info;
86 86
     
87 87
     foreach my $key (keys %{$self->connect_info}) {
88
-        croak("connect_info '$key' is invald")
88
+        croak("connect_info '$key' is wrong name")
89 89
           unless $VALID_CONNECT_INFO{$key};
90 90
     }
91 91
     
... ...
@@ -319,6 +319,7 @@ sub create_sql {
319 319
 
320 320
 our $TAG_SYNTAX = <<'EOS';
321 321
 [tag]            [expand]
322
+{? name}         ?
322 323
 {= name}         name = ?
323 324
 {<> name}        name <> ?
324 325
 
... ...
@@ -364,7 +365,7 @@ sub parse {
364 365
             my ($tag_name, @args) = split /\s+/, $tag;
365 366
             
366 367
             $tag ||= '';
367
-            croak("Tag '$tag' in SQL template is invalid.\n\n" .
368
+            croak("Tag '$tag' in SQL template is not exist.\n\n" .
368 369
                   "SQL template tag syntax\n$TAG_SYNTAX\n\n" .
369 370
                   "Your SQL template is \n$original_template\n\n")
370 371
               unless $VALID_TAG_NAMES{$tag_name};
... ...
@@ -486,6 +487,8 @@ Version 0.0101
486 487
 
487 488
 =head2 add_filter
488 489
 
490
+    
491
+
489 492
 =head2 bind_filter
490 493
 
491 494
 =head2 clone
+1 -1
t/01-core.t
... ...
@@ -164,7 +164,7 @@ use Scalar::Util qw/blessed/;
164 164
     );
165 165
     eval{$dbi->connect};
166 166
     
167
-    like($@, qr/connect_info 'no_exist' is invald/, 'no exist');
167
+    like($@, qr/connect_info 'no_exist' is wrong name/, 'no exist');
168 168
 }
169 169
 
170 170
 {
+52 -7
t/02-sqlite.t
... ...
@@ -1,6 +1,7 @@
1 1
 use Test::More;
2 2
 use strict;
3 3
 use warnings;
4
+use DBI;
4 5
 
5 6
 BEGIN {
6 7
     eval { require DBD::SQLite; 1 }
... ...
@@ -12,14 +13,57 @@ BEGIN {
12 13
     use_ok('DBI::Custom');
13 14
 }
14 15
 
15
-my $dbi = DBI::Custom->new(
16
-   connect_info => {data_source => 'dbi:SQLite:dbname=:memory:'}
17
-);
16
+package Test::DBI::Custom;
17
+use Object::Simple;
18 18
 
19
-$dbi->query_raw_sql("create table t1 (k1 char(10), k2 char(10))");
19
+sub dbi : Attr {}
20 20
 
21
-{
22
-    $dbi->query("insert into t1 {insert_values}",{insert_values => {k1 => 1, k2 => 2}});
21
+sub new {
22
+    my $self = shift->SUPER::new;
23
+    my $dbi = DBI::Custom->new->connect_info(data_source => 'dbi:SQLite:dbname=:memory:');
24
+    
25
+    $dbi->connect;
26
+    $self->dbi($dbi);
27
+    return $self;
28
+}
29
+
30
+sub create_table {
31
+    my ($self, $create_table) = @_;
32
+    $self->dbi->query_raw_sql($create_table);
33
+    return $self;
34
+}
35
+
36
+sub create_table1 {
37
+    my $self = shift;
38
+    $self->create_table("create table t1 (k1 char(255), k2 char(255), k3 char(255), k4 char(255), k5 char(255));");
39
+    return $self;
40
+}
41
+
42
+sub insert {
43
+    my ($self, @values_list) = @_;
44
+    my $table = ref $values_list[0] ? '' : shift;
45
+    $table ||= 't1';
46
+    
47
+    foreach my $values (@values_list) {
48
+        my $sql = $self->dbi->query(
49
+            "insert into $table {insert_values}", {insert_values => $values}
50
+        );
51
+    }
52
+    return $self;
53
+}
54
+
55
+sub test {
56
+    my ($self, $code) = @_;
57
+    $code->($self->dbi);
58
+}
59
+
60
+Object::Simple->build_class;
61
+
62
+package main;
63
+my $t = Test::DBI::Custom->new;
64
+
65
+$t->new->create_table1->insert({k1 => 1, k2 => 2}, {k1 => 3, k2 => 4})->test(sub {
66
+    my $dbi = shift;
23 67
     
24 68
     $dbi->fetch_filter(sub {
25 69
         my ($key, $value) = @_;
... ...
@@ -36,4 +80,5 @@ $dbi->query_raw_sql("create table t1 (k1 char(10), k2 char(10))");
36 80
     $result->finish;
37 81
     
38 82
     is_deeply(\@values, [3, 2]);
39
-}
83
+});
84
+
-38
t/99-mysql_private.t
... ...
@@ -1,38 +0,0 @@
1
-use Test::More;
2
-use strict;
3
-use warnings;
4
-
5
-# user password database
6
-our ($U, $P, $D) = connect_info();
7
-
8
-plan skip_all => 'private MySQL test' unless $U;
9
-
10
-plan 'no_plan';
11
-
12
-use DBI::Custom;
13
-use Scalar::Util 'blessed';
14
-{
15
-    my $dbi = DBI::Custom->new(
16
-        connect_info => {
17
-            user => $U,
18
-            password => $P,
19
-            data_source => "dbi:mysql:$D"
20
-        }
21
-    );
22
-    $dbi->connect;
23
-    
24
-    ok(blessed $dbi->dbh);
25
-    can_ok($dbi->dbh, qw/prepare/);
26
-}
27
-
28
-sub connect_info {
29
-    my $file = 'password.tmp';
30
-    open my $fh, '<', $file
31
-      or return;
32
-    
33
-    my ($user, $password, $database) = split(/\s/, (<$fh>)[0]);
34
-    
35
-    close $fh;
36
-    
37
-    return ($user, $password, $database);
38
-}