DBIx-Custom / t / dbix-custom-core-sqlite.t /
Newer Older
1614 lines | 54.386kb
removed register_format()
yuki-kimoto authored on 2010-05-26
1
use Test::More;
2
use strict;
3
use warnings;
4

            
5
use utf8;
6
use Encode qw/encode_utf8 decode_utf8/;
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
7
use Data::Dumper;
removed register_format()
yuki-kimoto authored on 2010-05-26
8

            
9
BEGIN {
10
    eval { require DBD::SQLite; 1 }
11
        or plan skip_all => 'DBD::SQLite required';
12
    eval { DBD::SQLite->VERSION >= 1.25 }
13
        or plan skip_all => 'DBD::SQLite >= 1.25 required';
14

            
15
    plan 'no_plan';
16
    use_ok('DBIx::Custom');
17
}
18

            
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
19
use FindBin;
20
use lib "$FindBin::Bin/dbix-custom-core-sqlite";
21

            
removed register_format()
yuki-kimoto authored on 2010-05-26
22
# Function for test name
table object call dbi object...
Yuki Kimoto authored on 2011-01-25
23
sub test { print "# $_[0]\n" }
removed register_format()
yuki-kimoto authored on 2010-05-26
24

            
25
# Constant varialbes for test
26
my $CREATE_TABLE = {
27
    0 => 'create table table1 (key1 char(255), key2 char(255));',
28
    1 => 'create table table1 (key1 char(255), key2 char(255), key3 char(255), key4 char(255), key5 char(255));',
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
29
    2 => 'create table table2 (key1 char(255), key3 char(255));',
30
    3 => 'create table table1 (key1 Date, key2 datetime);'
removed register_format()
yuki-kimoto authored on 2010-05-26
31
};
32

            
add tests
yuki-kimoto authored on 2010-08-10
33
my $SELECT_SOURCES = {
removed register_format()
yuki-kimoto authored on 2010-05-26
34
    0 => 'select * from table1;'
35
};
36

            
37
my $DROP_TABLE = {
38
    0 => 'drop table table1'
39
};
40

            
41
my $NEW_ARGS = {
42
    0 => {data_source => 'dbi:SQLite:dbname=:memory:'}
43
};
44

            
45
# Variables
46
my $dbi;
47
my $sth;
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
48
my $source;
49
my @sources;
add tests
yuki-kimoto authored on 2010-08-10
50
my $select_SOURCE;
51
my $insert_SOURCE;
52
my $update_SOURCE;
removed register_format()
yuki-kimoto authored on 2010-05-26
53
my $params;
54
my $sql;
55
my $result;
56
my $row;
57
my @rows;
58
my $rows;
59
my $query;
60
my @queries;
61
my $select_query;
62
my $insert_query;
63
my $update_query;
64
my $ret_val;
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
65
my $infos;
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
66
my $model;
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
67
my $where;
removed register_format()
yuki-kimoto authored on 2010-05-26
68

            
69
# Prepare table
70
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
71
$dbi->execute($CREATE_TABLE->{0});
72
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
73
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
74

            
75
test 'DBIx::Custom::Result test';
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
76
$source = "select key1, key2 from table1";
77
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
78
$result = $dbi->execute($query);
79

            
80
@rows = ();
81
while (my $row = $result->fetch) {
82
    push @rows, [@$row];
83
}
cleanup
Yuki Kimoto authored on 2011-01-23
84
is_deeply(\@rows, [[1, 2], [3, 4]], "fetch");
removed register_format()
yuki-kimoto authored on 2010-05-26
85

            
86
$result = $dbi->execute($query);
87
@rows = ();
88
while (my $row = $result->fetch_hash) {
89
    push @rows, {%$row};
90
}
cleanup
Yuki Kimoto authored on 2011-01-23
91
is_deeply(\@rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "fetch_hash");
removed register_format()
yuki-kimoto authored on 2010-05-26
92

            
93
$result = $dbi->execute($query);
94
$rows = $result->fetch_all;
cleanup
Yuki Kimoto authored on 2011-01-23
95
is_deeply($rows, [[1, 2], [3, 4]], "fetch_all");
removed register_format()
yuki-kimoto authored on 2010-05-26
96

            
97
$result = $dbi->execute($query);
removed reconnect method
yuki-kimoto authored on 2010-05-28
98
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
99
is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "fetch_hash_all");
removed register_format()
yuki-kimoto authored on 2010-05-26
100

            
101
test 'Insert query return value';
102
$dbi->execute($DROP_TABLE->{0});
103
$dbi->execute($CREATE_TABLE->{0});
renamed update tag to update...
yuki-kimoto authored on 2010-08-09
104
$source = "insert into table1 {insert_param key1 key2}";
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
105
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
106
$ret_val = $dbi->execute($query, param => {key1 => 1, key2 => 2});
cleanup
Yuki Kimoto authored on 2011-01-23
107
ok($ret_val);
removed register_format()
yuki-kimoto authored on 2010-05-26
108

            
109

            
110
test 'Direct query';
111
$dbi->execute($DROP_TABLE->{0});
112
$dbi->execute($CREATE_TABLE->{0});
add tests
yuki-kimoto authored on 2010-08-10
113
$insert_SOURCE = "insert into table1 {insert_param key1 key2}";
114
$dbi->execute($insert_SOURCE, param => {key1 => 1, key2 => 2});
115
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
116
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
117
is_deeply($rows, [{key1 => 1, key2 => 2}]);
removed register_format()
yuki-kimoto authored on 2010-05-26
118

            
119
test 'Filter basic';
120
$dbi->execute($DROP_TABLE->{0});
121
$dbi->execute($CREATE_TABLE->{0});
122
$dbi->register_filter(twice       => sub { $_[0] * 2}, 
123
                    three_times => sub { $_[0] * 3});
124

            
add tests
yuki-kimoto authored on 2010-08-10
125
$insert_SOURCE  = "insert into table1 {insert_param key1 key2};";
126
$insert_query = $dbi->create_query($insert_SOURCE);
removed register_format()
yuki-kimoto authored on 2010-05-26
127
$insert_query->filter({key1 => 'twice'});
128
$dbi->execute($insert_query, param => {key1 => 1, key2 => 2});
add tests
yuki-kimoto authored on 2010-08-10
129
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
130
$rows = $result->filter({key2 => 'three_times'})->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
131
is_deeply($rows, [{key1 => 2, key2 => 6}], "filter fetch_filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
132
$dbi->execute($DROP_TABLE->{0});
133

            
134
test 'Filter in';
135
$dbi->execute($CREATE_TABLE->{0});
add tests
yuki-kimoto authored on 2010-08-10
136
$insert_SOURCE  = "insert into table1 {insert_param key1 key2};";
137
$insert_query = $dbi->create_query($insert_SOURCE);
removed register_format()
yuki-kimoto authored on 2010-05-26
138
$dbi->execute($insert_query, param => {key1 => 2, key2 => 4});
add tests
yuki-kimoto authored on 2010-08-10
139
$select_SOURCE = "select * from table1 where {in table1.key1 2} and {in table1.key2 2}";
140
$select_query = $dbi->create_query($select_SOURCE);
removed register_format()
yuki-kimoto authored on 2010-05-26
141
$select_query->filter({'table1.key1' => 'twice'});
142
$result = $dbi->execute($select_query, param => {'table1.key1' => [1,5], 'table1.key2' => [2,4]});
143
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
144
is_deeply($rows, [{key1 => 2, key2 => 4}], "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
145

            
146
test 'DBIx::Custom::SQLTemplate basic tag';
147
$dbi->execute($DROP_TABLE->{0});
148
$dbi->execute($CREATE_TABLE->{1});
149
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
150
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
151

            
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
152
$source = "select * from table1 where {= key1} and {<> key2} and {< key3} and {> key4} and {>= key5};";
153
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
154
$result = $dbi->execute($query, param => {key1 => 1, key2 => 3, key3 => 4, key4 => 3, key5 => 5});
155
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
156
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "basic tag1");
removed register_format()
yuki-kimoto authored on 2010-05-26
157

            
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
158
$source = "select * from table1 where {<= key1} and {like key2};";
159
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
160
$result = $dbi->execute($query, param => {key1 => 1, key2 => '%2%'});
161
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
162
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "basic tag2");
removed register_format()
yuki-kimoto authored on 2010-05-26
163

            
164
test 'DIB::Custom::SQLTemplate in tag';
165
$dbi->execute($DROP_TABLE->{0});
166
$dbi->execute($CREATE_TABLE->{1});
167
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
168
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
169

            
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
170
$source = "select * from table1 where {in key1 2};";
171
$query = $dbi->create_query($source);
removed register_format()
yuki-kimoto authored on 2010-05-26
172
$result = $dbi->execute($query, param => {key1 => [9, 1]});
173
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
174
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
175

            
176
test 'DBIx::Custom::SQLTemplate insert tag';
177
$dbi->execute("delete from table1");
add tests
yuki-kimoto authored on 2010-08-10
178
$insert_SOURCE = 'insert into table1 {insert_param key1 key2 key3 key4 key5}';
179
$dbi->execute($insert_SOURCE, param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
removed register_format()
yuki-kimoto authored on 2010-05-26
180

            
add tests
yuki-kimoto authored on 2010-08-10
181
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
182
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
183
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
184

            
185
test 'DBIx::Custom::SQLTemplate update tag';
186
$dbi->execute("delete from table1");
add tests
yuki-kimoto authored on 2010-08-10
187
$insert_SOURCE = "insert into table1 {insert_param key1 key2 key3 key4 key5}";
188
$dbi->execute($insert_SOURCE, param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
189
$dbi->execute($insert_SOURCE, param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
removed register_format()
yuki-kimoto authored on 2010-05-26
190

            
add tests
yuki-kimoto authored on 2010-08-10
191
$update_SOURCE = 'update table1 {update_param key1 key2 key3 key4} where {= key5}';
192
$dbi->execute($update_SOURCE, param => {key1 => 1, key2 => 1, key3 => 1, key4 => 1, key5 => 5});
removed register_format()
yuki-kimoto authored on 2010-05-26
193

            
add tests
yuki-kimoto authored on 2010-08-10
194
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
195
$rows = $result->fetch_hash_all;
196
is_deeply($rows, [{key1 => 1, key2 => 1, key3 => 1, key4 => 1, key5 => 5},
cleanup
Yuki Kimoto authored on 2011-01-23
197
                  {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
198

            
199
test 'Error case';
200
eval {DBIx::Custom->connect(data_source => 'dbi:SQLit')};
cleanup
Yuki Kimoto authored on 2011-01-23
201
ok($@, "connect error");
removed register_format()
yuki-kimoto authored on 2010-05-26
202

            
203
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
204
eval{$dbi->create_query("{p }")};
cleanup
Yuki Kimoto authored on 2011-01-23
205
ok($@, "create_query invalid SQL template");
removed register_format()
yuki-kimoto authored on 2010-05-26
206

            
207
test 'insert';
208
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
209
$dbi->execute($CREATE_TABLE->{0});
210
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
211
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
add tests
yuki-kimoto authored on 2010-08-10
212
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
213
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
214
is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
215

            
216
$dbi->execute('delete from table1');
217
$dbi->register_filter(
218
    twice       => sub { $_[0] * 2 },
219
    three_times => sub { $_[0] * 3 }
220
);
renamed default_query_filter...
yuki-kimoto authored on 2010-08-03
221
$dbi->default_bind_filter('twice');
removed register_format()
yuki-kimoto authored on 2010-05-26
222
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, filter => {key1 => 'three_times'});
add tests
yuki-kimoto authored on 2010-08-10
223
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
224
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
225
is_deeply($rows, [{key1 => 3, key2 => 4}], "filter");
renamed default_query_filter...
yuki-kimoto authored on 2010-08-03
226
$dbi->default_bind_filter(undef);
removed register_format()
yuki-kimoto authored on 2010-05-26
227

            
228
$dbi->execute($DROP_TABLE->{0});
229
$dbi->execute($CREATE_TABLE->{0});
230
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, append => '   ');
231
$rows = $dbi->select(table => 'table1')->fetch_hash_all;
232
is_deeply($rows, [{key1 => 1, key2 => 2}], 'insert append');
233

            
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
234
eval{$dbi->insert(table => 'table1', noexist => 1)};
cleanup
Yuki Kimoto authored on 2011-01-23
235
like($@, qr/noexist/, "invalid argument");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
236

            
select() where can't receive...
Yuki Kimoto authored on 2011-01-27
237
eval{$dbi->insert(table => 'table', param => {';' => 1})};
238
like($@, qr/safety/);
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
239

            
removed register_format()
yuki-kimoto authored on 2010-05-26
240
test 'update';
241
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
242
$dbi->execute($CREATE_TABLE->{1});
243
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
244
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
245
$dbi->update(table => 'table1', param => {key2 => 11}, where => {key1 => 1});
add tests
yuki-kimoto authored on 2010-08-10
246
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
247
$rows   = $result->fetch_hash_all;
248
is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 3, key4 => 4, key5 => 5},
249
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
250
                  "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
251
                  
252
$dbi->execute("delete from table1");
253
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
254
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
255
$dbi->update(table => 'table1', param => {key2 => 12}, where => {key2 => 2, key3 => 3});
add tests
yuki-kimoto authored on 2010-08-10
256
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
257
$rows   = $result->fetch_hash_all;
258
is_deeply($rows, [{key1 => 1, key2 => 12, key3 => 3, key4 => 4, key5 => 5},
259
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
260
                  "update key same as search key");
removed register_format()
yuki-kimoto authored on 2010-05-26
261

            
add tests
yuki-kimoto authored on 2010-08-10
262
$dbi->update(table => 'table1', param => {key2 => [12]}, where => {key2 => 2, key3 => 3});
263
$result = $dbi->execute($SELECT_SOURCES->{0});
264
$rows   = $result->fetch_hash_all;
265
is_deeply($rows, [{key1 => 1, key2 => 12, key3 => 3, key4 => 4, key5 => 5},
266
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
267
                  "update key same as search key : param is array ref");
add tests
yuki-kimoto authored on 2010-08-10
268

            
removed register_format()
yuki-kimoto authored on 2010-05-26
269
$dbi->execute("delete from table1");
270
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
271
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
272
$dbi->register_filter(twice => sub { $_[0] * 2 });
273
$dbi->update(table => 'table1', param => {key2 => 11}, where => {key1 => 1},
many changed
Yuki Kimoto authored on 2011-01-23
274
              filter => {key2 => sub { $_[0] * 2 }});
add tests
yuki-kimoto authored on 2010-08-10
275
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
276
$rows   = $result->fetch_hash_all;
277
is_deeply($rows, [{key1 => 1, key2 => 22, key3 => 3, key4 => 4, key5 => 5},
278
                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
279
                  "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
280

            
281
$result = $dbi->update(table => 'table1', param => {key2 => 11}, where => {key1 => 1}, append => '   ');
282

            
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
283
eval{$dbi->update(table => 'table1', noexist => 1)};
cleanup
Yuki Kimoto authored on 2011-01-23
284
like($@, qr/noexist/, "invalid argument");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
285

            
286
eval{$dbi->update(table => 'table1')};
cleanup
Yuki Kimoto authored on 2011-01-23
287
like($@, qr/where/, "not contain where");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
288

            
improved delete() and update...
Yuki Kimoto authored on 2011-01-26
289
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
290
$dbi->execute($CREATE_TABLE->{0});
291
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
292
$where = $dbi->where;
293
$where->clause(['and', '{= key1}', '{= key2}']);
294
$where->param({key1 => 1, key2 => 2});
295
$dbi->update(table => 'table1', param => {key1 => 3}, where => $where);
296
$result = $dbi->select(table => 'table1');
297
is_deeply($result->fetch_hash_all, [{key1 => 3, key2 => 2}], 'delete() where');
298

            
299
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
300
$dbi->execute($CREATE_TABLE->{0});
301
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
302
$where = $dbi->where;
303
$where->clause(['and', '{= key2}']);
304
$where->param({key2 => 2});
305
$dbi->update(table => 'table1', param => {key1 => 3}, where => $where);
306
$result = $dbi->select(table => 'table1');
307
is_deeply($result->fetch_hash_all, [{key1 => 3, key2 => 2}], 'delete() where');
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
308

            
select() where can't receive...
Yuki Kimoto authored on 2011-01-27
309
eval{$dbi->update(table => 'table1', param => {';' => 1})};
310
like($@, qr/safety/);
311

            
312
eval{$dbi->update(table => 'table1', param => {'key1' => 1}, where => {';' => 1})};
313
like($@, qr/safety/);
314

            
removed register_format()
yuki-kimoto authored on 2010-05-26
315
test 'update_all';
316
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
317
$dbi->execute($CREATE_TABLE->{1});
318
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
319
$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
320
$dbi->register_filter(twice => sub { $_[0] * 2 });
321
$dbi->update_all(table => 'table1', param => {key2 => 10}, filter => {key2 => 'twice'});
add tests
yuki-kimoto authored on 2010-08-10
322
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
323
$rows   = $result->fetch_hash_all;
324
is_deeply($rows, [{key1 => 1, key2 => 20, key3 => 3, key4 => 4, key5 => 5},
325
                  {key1 => 6, key2 => 20, key3 => 8, key4 => 9, key5 => 10}],
cleanup
Yuki Kimoto authored on 2011-01-23
326
                  "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
327

            
328

            
329
test 'delete';
330
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
331
$dbi->execute($CREATE_TABLE->{0});
332
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
333
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
334
$dbi->delete(table => 'table1', where => {key1 => 1});
add tests
yuki-kimoto authored on 2010-08-10
335
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
336
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
337
is_deeply($rows, [{key1 => 3, key2 => 4}], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
338

            
339
$dbi->execute("delete from table1;");
340
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
341
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
342
$dbi->register_filter(twice => sub { $_[0] * 2 });
343
$dbi->delete(table => 'table1', where => {key2 => 1}, filter => {key2 => 'twice'});
add tests
yuki-kimoto authored on 2010-08-10
344
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
345
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
346
is_deeply($rows, [{key1 => 3, key2 => 4}], "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
347

            
348
$dbi->delete(table => 'table1', where => {key1 => 1}, append => '   ');
349

            
350
$dbi->delete_all(table => 'table1');
351
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
352
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
353
$dbi->delete(table => 'table1', where => {key1 => 1, key2 => 2});
354
$rows = $dbi->select(table => 'table1')->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
355
is_deeply($rows, [{key1 => 3, key2 => 4}], "delete multi key");
removed register_format()
yuki-kimoto authored on 2010-05-26
356

            
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
357
eval{$dbi->delete(table => 'table1', noexist => 1)};
cleanup
Yuki Kimoto authored on 2011-01-23
358
like($@, qr/noexist/, "invalid argument");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
359

            
improved delete() and update...
Yuki Kimoto authored on 2011-01-26
360
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
361
$dbi->execute($CREATE_TABLE->{0});
362
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
363
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
364
$where = $dbi->where;
365
$where->clause(['and', '{= key1}', '{= key2}']);
366
$where->param({ke1 => 1, key2 => 2});
367
$dbi->delete(table => 'table1', where => $where);
368
$result = $dbi->select(table => 'table1');
369
is_deeply($result->fetch_hash_all, [{key1 => 3, key2 => 4}], 'delete() where');
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
370

            
removed register_format()
yuki-kimoto authored on 2010-05-26
371
test 'delete error';
372
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
373
$dbi->execute($CREATE_TABLE->{0});
374
eval{$dbi->delete(table => 'table1')};
make delete() using where ob...
Yuki Kimoto authored on 2011-01-26
375
like($@, qr/"where" must be specified/,
cleanup
Yuki Kimoto authored on 2011-01-23
376
         "where key-value pairs not specified");
removed register_format()
yuki-kimoto authored on 2010-05-26
377

            
select() where can't receive...
Yuki Kimoto authored on 2011-01-27
378
eval{$dbi->delete(table => 'table1', where => {';' => 1})};
379
like($@, qr/safety/);
380

            
removed register_format()
yuki-kimoto authored on 2010-05-26
381
test 'delete_all';
382
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
383
$dbi->execute($CREATE_TABLE->{0});
384
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
385
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
386
$dbi->delete_all(table => 'table1');
add tests
yuki-kimoto authored on 2010-08-10
387
$result = $dbi->execute($SELECT_SOURCES->{0});
removed register_format()
yuki-kimoto authored on 2010-05-26
388
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
389
is_deeply($rows, [], "basic");
removed register_format()
yuki-kimoto authored on 2010-05-26
390

            
391

            
392
test 'select';
393
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
394
$dbi->execute($CREATE_TABLE->{0});
395
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
396
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
397
$rows = $dbi->select(table => 'table1')->fetch_hash_all;
398
is_deeply($rows, [{key1 => 1, key2 => 2},
cleanup
Yuki Kimoto authored on 2011-01-23
399
                  {key1 => 3, key2 => 4}], "table");
removed register_format()
yuki-kimoto authored on 2010-05-26
400

            
update document
yuki-kimoto authored on 2010-05-27
401
$rows = $dbi->select(table => 'table1', column => ['key1'])->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
402
is_deeply($rows, [{key1 => 1}, {key1 => 3}], "table and columns and where key");
removed register_format()
yuki-kimoto authored on 2010-05-26
403

            
404
$rows = $dbi->select(table => 'table1', where => {key1 => 1})->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
405
is_deeply($rows, [{key1 => 1, key2 => 2}], "table and columns and where key");
removed register_format()
yuki-kimoto authored on 2010-05-26
406

            
update document
yuki-kimoto authored on 2010-05-27
407
$rows = $dbi->select(table => 'table1', column => ['key1'], where => {key1 => 3})->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
408
is_deeply($rows, [{key1 => 3}], "table and columns and where key");
removed register_format()
yuki-kimoto authored on 2010-05-26
409

            
410
$rows = $dbi->select(table => 'table1', append => "order by key1 desc limit 1")->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
411
is_deeply($rows, [{key1 => 3, key2 => 4}], "append statement");
removed register_format()
yuki-kimoto authored on 2010-05-26
412

            
413
$dbi->register_filter(decrement => sub { $_[0] - 1 });
update document
yuki-kimoto authored on 2010-05-27
414
$rows = $dbi->select(table => 'table1', where => {key1 => 2}, filter => {key1 => 'decrement'})
removed register_format()
yuki-kimoto authored on 2010-05-26
415
            ->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
416
is_deeply($rows, [{key1 => 1, key2 => 2}], "filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
417

            
418
$dbi->execute($CREATE_TABLE->{2});
419
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
420
$rows = $dbi->select(
421
    table => [qw/table1 table2/],
select method column option ...
Yuki Kimoto authored on 2011-02-22
422
    column => 'table1.key1 as table1_key1, table2.key1 as table2_key1, key2, key3',
removed register_format()
yuki-kimoto authored on 2010-05-26
423
    where   => {'table1.key2' => 2},
added commit method
yuki-kimoto authored on 2010-05-27
424
    relation  => {'table1.key1' => 'table2.key1'}
removed register_format()
yuki-kimoto authored on 2010-05-26
425
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
426
is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}], "relation : exists where");
added commit method
yuki-kimoto authored on 2010-05-27
427

            
428
$rows = $dbi->select(
429
    table => [qw/table1 table2/],
430
    column => ['table1.key1 as table1_key1', 'table2.key1 as table2_key1', 'key2', 'key3'],
431
    relation  => {'table1.key1' => 'table2.key1'}
432
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
433
is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}], "relation : no exists where");
removed register_format()
yuki-kimoto authored on 2010-05-26
434

            
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
435
eval{$dbi->select(table => 'table1', noexist => 1)};
cleanup
Yuki Kimoto authored on 2011-01-23
436
like($@, qr/noexist/, "invalid argument");
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
437

            
438

            
removed register_format()
yuki-kimoto authored on 2010-05-26
439
test 'fetch filter';
440
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
441
$dbi->register_filter(
442
    twice       => sub { $_[0] * 2 },
443
    three_times => sub { $_[0] * 3 }
444
);
445
$dbi->default_fetch_filter('twice');
446
$dbi->execute($CREATE_TABLE->{0});
447
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
448
$result = $dbi->select(table => 'table1');
449
$result->filter({key1 => 'three_times'});
removed reconnect method
yuki-kimoto authored on 2010-05-28
450
$row = $result->fetch_hash_first;
cleanup
Yuki Kimoto authored on 2011-01-23
451
is_deeply($row, {key1 => 3, key2 => 4}, "default_fetch_filter and filter");
removed register_format()
yuki-kimoto authored on 2010-05-26
452

            
453
test 'filters';
454
$dbi = DBIx::Custom->new;
455

            
update document
yuki-kimoto authored on 2010-05-27
456
is($dbi->filters->{decode_utf8}->(encode_utf8('あ')),
cleanup
Yuki Kimoto authored on 2011-01-23
457
   'あ', "decode_utf8");
removed register_format()
yuki-kimoto authored on 2010-05-26
458

            
459
is($dbi->filters->{encode_utf8}->('あ'),
cleanup
Yuki Kimoto authored on 2011-01-23
460
   encode_utf8('あ'), "encode_utf8");
removed register_format()
yuki-kimoto authored on 2010-05-26
461

            
added commit method
yuki-kimoto authored on 2010-05-27
462
test 'transaction';
463
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
464
$dbi->execute($CREATE_TABLE->{0});
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
465
$dbi->dbh->begin_work;
added commit method
yuki-kimoto authored on 2010-05-27
466
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
467
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 3});
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
468
$dbi->dbh->commit;
added commit method
yuki-kimoto authored on 2010-05-27
469
$result = $dbi->select(table => 'table1');
470
is_deeply(scalar $result->fetch_hash_all, [{key1 => 1, key2 => 2}, {key1 => 2, key2 => 3}],
cleanup
Yuki Kimoto authored on 2011-01-23
471
          "commit");
added commit method
yuki-kimoto authored on 2010-05-27
472

            
473
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
474
$dbi->execute($CREATE_TABLE->{0});
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
475
$dbi->dbh->begin_work(0);
added commit method
yuki-kimoto authored on 2010-05-27
476
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
477
$dbi->dbh->rollback;
added commit method
yuki-kimoto authored on 2010-05-27
478

            
479
$result = $dbi->select(table => 'table1');
cleanup
Yuki Kimoto authored on 2011-01-23
480
ok(! $result->fetch_first, "rollback");
add cache attribute
yuki-kimoto authored on 2010-06-14
481

            
482
test 'cache';
483
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
484
$dbi->execute($CREATE_TABLE->{0});
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
485
$source = 'select * from table1 where {= key1} and {= key2};';
486
$dbi->create_query($source);
487
is_deeply($dbi->{_cached}->{$source}, 
add table tag
Yuki Kimoto authored on 2011-02-09
488
          {sql => "select * from table1 where key1 = ? and key2 = ?;", columns => ['key1', 'key2'], tables => []}, "cache");
add cache attribute
yuki-kimoto authored on 2010-06-14
489

            
490
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
491
$dbi->execute($CREATE_TABLE->{0});
492
$dbi->{_cached} = {};
493
$dbi->cache(0);
494
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
495
is(scalar keys %{$dbi->{_cached}}, 0, 'not cache');
496

            
add tests
yuki-kimoto authored on 2010-08-10
497
test 'execute';
498
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
499
$dbi->execute($CREATE_TABLE->{0});
removed experimental registe...
yuki-kimoto authored on 2010-08-24
500
{
501
    local $Carp::Verbose = 0;
502
    eval{$dbi->execute('select * frm table1')};
cleanup
Yuki Kimoto authored on 2011-01-23
503
    like($@, qr/\Qselect * frm table1;/, "fail prepare");
504
    like($@, qr/\.t /, "fail : not verbose");
removed experimental registe...
yuki-kimoto authored on 2010-08-24
505
}
506
{
507
    local $Carp::Verbose = 1;
508
    eval{$dbi->execute('select * frm table1')};
cleanup
Yuki Kimoto authored on 2011-01-23
509
    like($@, qr/Custom.*\.t /s, "fail : verbose");
removed experimental registe...
yuki-kimoto authored on 2010-08-24
510
}
add tests
yuki-kimoto authored on 2010-08-10
511

            
512
eval{$dbi->execute('select * from table1', no_exists => 1)};
cleanup
Yuki Kimoto authored on 2011-01-23
513
like($@, qr/\Q"no_exists" is invalid argument/, "invald SQL");
add tests
yuki-kimoto authored on 2010-08-10
514

            
515
$query = $dbi->create_query('select * from table1 where {= key1}');
516
$dbi->dbh->disconnect;
517
eval{$dbi->execute($query, param => {key1 => {a => 1}})};
cleanup
Yuki Kimoto authored on 2011-01-23
518
ok($@, "execute fail");
add tests
yuki-kimoto authored on 2010-08-10
519

            
removed experimental registe...
yuki-kimoto authored on 2010-08-24
520
{
521
    local $Carp::Verbose = 0;
522
    eval{$dbi->create_query('select * from table1 where {0 key1}')};
cleanup
Yuki Kimoto authored on 2011-01-23
523
    like($@, qr/\Q.t /, "caller spec : not vebose");
removed experimental registe...
yuki-kimoto authored on 2010-08-24
524
}
525
{
526
    local $Carp::Verbose = 1;
527
    eval{$dbi->create_query('select * from table1 where {0 key1}')};
cleanup
Yuki Kimoto authored on 2011-01-23
528
    like($@, qr/QueryBuilder.*\.t /s, "caller spec : not vebose");
removed experimental registe...
yuki-kimoto authored on 2010-08-24
529
}
cleanup
yuki-kimoto authored on 2010-10-17
530

            
531

            
532
test 'transaction';
533
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
534
$dbi->execute($CREATE_TABLE->{0});
535

            
536
$dbi->begin_work;
537

            
538
eval {
539
    $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
540
    die "Error";
541
    $dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
542
};
543

            
544
$dbi->rollback if $@;
545

            
546
$result = $dbi->select(table => 'table1');
547
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
548
is_deeply($rows, [], "rollback");
cleanup
yuki-kimoto authored on 2010-10-17
549

            
550
$dbi->begin_work;
551

            
552
eval {
553
    $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
554
    $dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
555
};
556

            
557
$dbi->commit unless $@;
558

            
559
$result = $dbi->select(table => 'table1');
560
$rows = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
561
is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "commit");
cleanup
yuki-kimoto authored on 2010-10-17
562

            
563
$dbi->dbh->{AutoCommit} = 0;
564
eval{ $dbi->begin_work };
cleanup
Yuki Kimoto authored on 2011-01-23
565
ok($@, "exception");
cleanup
yuki-kimoto authored on 2010-10-17
566
$dbi->dbh->{AutoCommit} = 1;
567

            
added helper method
yuki-kimoto authored on 2010-10-17
568

            
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
569
test 'method';
added helper method
yuki-kimoto authored on 2010-10-17
570
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
571
$dbi->method(
added helper method
yuki-kimoto authored on 2010-10-17
572
    one => sub { 1 }
573
);
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
574
$dbi->method(
added helper method
yuki-kimoto authored on 2010-10-17
575
    two => sub { 2 }
576
);
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
577
$dbi->method({
added helper method
yuki-kimoto authored on 2010-10-17
578
    twice => sub {
579
        my $self = shift;
580
        return $_[0] * 2;
581
    }
582
});
583

            
cleanup
Yuki Kimoto authored on 2011-01-23
584
is($dbi->one, 1, "first");
585
is($dbi->two, 2, "second");
586
is($dbi->twice(5), 10 , "second");
added helper method
yuki-kimoto authored on 2010-10-17
587

            
588
eval {$dbi->XXXXXX};
autoload DBI method
Yuki Kimoto authored on 2011-01-26
589
ok($@, "not exists");
added helper method
yuki-kimoto authored on 2010-10-17
590

            
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
591
test 'out filter';
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
592
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
593
$dbi->execute($CREATE_TABLE->{0});
594
$dbi->register_filter(twice => sub { $_[0] * 2 });
595
$dbi->register_filter(three_times => sub { $_[0] * 3});
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
596
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
597
    'table1', 'key1' => {out => 'twice', in => 'three_times'}, 
598
              'key2' => {out => 'three_times', in => 'twice'});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
599
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
600
$result = $dbi->execute($SELECT_SOURCES->{0});
601
$row   = $result->fetch_hash_first;
cleanup
Yuki Kimoto authored on 2011-01-23
602
is_deeply($row, {key1 => 2, key2 => 6}, "insert");
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
603
$result = $dbi->select(table => 'table1');
604
$row   = $result->fetch_hash_first;
cleanup
Yuki Kimoto authored on 2011-01-23
605
is_deeply($row, {key1 => 6, key2 => 12}, "insert");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
606

            
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
607
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
608
$dbi->execute($CREATE_TABLE->{0});
609
$dbi->register_filter(twice => sub { $_[0] * 2 });
610
$dbi->register_filter(three_times => sub { $_[0] * 3});
611
$dbi->apply_filter(
612
    'table1', 'key1' => {out => 'twice', in => 'three_times'}, 
613
              'key2' => {out => 'three_times', in => 'twice'});
614
$dbi->apply_filter(
615
    'table1', 'key1' => {out => undef}
616
); 
617
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
618
$result = $dbi->execute($SELECT_SOURCES->{0});
619
$row   = $result->fetch_hash_first;
620
is_deeply($row, {key1 => 1, key2 => 6}, "insert");
621

            
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
622
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
623
$dbi->execute($CREATE_TABLE->{0});
624
$dbi->register_filter(twice => sub { $_[0] * 2 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
625
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
626
    'table1', 'key1' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
627
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
628
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, filter => {key1 => undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
629
$dbi->update(table => 'table1', param => {key1 => 2}, where => {key2 => 2});
630
$result = $dbi->execute($SELECT_SOURCES->{0});
631
$row   = $result->fetch_hash_first;
cleanup
Yuki Kimoto authored on 2011-01-23
632
is_deeply($row, {key1 => 4, key2 => 2}, "update");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
633

            
634
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
635
$dbi->execute($CREATE_TABLE->{0});
636
$dbi->register_filter(twice => sub { $_[0] * 2 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
637
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
638
    'table1', 'key1' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
639
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
640
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 2}, filter => {key1=> undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
641
$dbi->delete(table => 'table1', where => {key1 => 1});
642
$result = $dbi->execute($SELECT_SOURCES->{0});
643
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
644
is_deeply($rows, [], "delete");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
645

            
646
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
647
$dbi->execute($CREATE_TABLE->{0});
648
$dbi->register_filter(twice => sub { $_[0] * 2 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
649
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
650
    'table1', 'key1' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
651
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
652
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 2}, filter => {key1 => undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
653
$result = $dbi->select(table => 'table1', where => {key1 => 1});
654
$result->filter({'key2' => 'twice'});
655
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
656
is_deeply($rows, [{key1 => 4, key2 => 4}], "select");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
657

            
658
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
659
$dbi->execute($CREATE_TABLE->{0});
660
$dbi->register_filter(twice => sub { $_[0] * 2 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
661
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
662
    'table1', 'key1' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
663
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
664
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 2}, filter => {key1 => undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
665
$result = $dbi->execute("select * from table1 where {= key1} and {= key2};",
666
                        param => {key1 => 1, key2 => 2},
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
667
                        table => ['table1']);
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
668
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
669
is_deeply($rows, [{key1 => 4, key2 => 2}], "execute");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
670

            
add table tag
Yuki Kimoto authored on 2011-02-09
671
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
672
$dbi->execute($CREATE_TABLE->{0});
673
$dbi->register_filter(twice => sub { $_[0] * 2 });
674
$dbi->apply_filter(
675
    'table1', 'key1' => {out => 'twice', in => 'twice'}
676
);
677
$dbi->insert(table => 'table1', param => {key1 => 2, key2 => 2}, filter => {key1 => undef});
678
$result = $dbi->execute("select * from {table table1} where {= key1} and {= key2};",
679
                        param => {key1 => 1, key2 => 2});
680
$rows   = $result->fetch_hash_all;
681
is_deeply($rows, [{key1 => 4, key2 => 2}], "execute table tag");
682

            
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
683
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
684
$dbi->execute($CREATE_TABLE->{0});
685
$dbi->execute($CREATE_TABLE->{2});
686
$dbi->register_filter(twice => sub { $_[0] * 2 });
687
$dbi->register_filter(three_times => sub { $_[0] * 3 });
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
688
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
689
    'table1', 'key2' => {out => 'twice', in => 'twice'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
690
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
691
$dbi->apply_filter(
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
692
    'table2', 'key3' => {out => 'three_times', in => 'three_times'}
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
693
);
renamed auto_filter to apply...
Yuki Kimoto authored on 2011-01-12
694
$dbi->insert(table => 'table1', param => {key1 => 5, key2 => 2}, filter => {key2 => undef});
695
$dbi->insert(table => 'table2', param => {key1 => 5, key3 => 6}, filter => {key3 => undef});
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
696
$result = $dbi->select(
697
     table => ['table1', 'table2'],
698
     column => ['key2', 'key3'],
699
     where => {'table1.key2' => 1, 'table2.key3' => 2}, relation => {'table1.key1' => 'table2.key1'});
700

            
701
$result->filter({'key2' => 'twice'});
702
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
703
is_deeply($rows, [{key2 => 4, key3 => 18}], "select : join");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
704

            
705
$result = $dbi->select(
706
     table => ['table1', 'table2'],
707
     column => ['key2', 'key3'],
708
     where => {'key2' => 1, 'key3' => 2}, relation => {'table1.key1' => 'table2.key1'});
709

            
710
$result->filter({'key2' => 'twice'});
711
$rows   = $result->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
712
is_deeply($rows, [{key2 => 4, key3 => 18}], "select : join : omit");
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
713

            
pod fix
Yuki Kimoto authored on 2011-01-21
714
test 'each_column';
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
715
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
716
$dbi->execute($CREATE_TABLE->{2});
717
$dbi->execute($CREATE_TABLE->{3});
718

            
719
$infos = [];
pod fix
Yuki Kimoto authored on 2011-01-21
720
$dbi->each_column(sub {
removed experimental txn_sco...
Yuki Kimoto authored on 2011-01-24
721
    my ($self, $table, $column, $cinfo) = @_;
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
722
    
723
    if ($table =~ /^table/) {
724
         my $info = [$table, $column, $cinfo->{COLUMN_NAME}];
725
         push @$infos, $info;
726
    }
727
});
728
$infos = [sort { $a->[0] cmp $b->[0] || $a->[1] cmp $b->[1] } @$infos];
729
is_deeply($infos, 
730
    [
731
        ['table1', 'key1', 'key1'],
732
        ['table1', 'key2', 'key2'],
733
        ['table2', 'key1', 'key1'],
734
        ['table2', 'key3', 'key3']
735
    ]
cleanup
Yuki Kimoto authored on 2011-01-23
736
    
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
737
);
added auto_filter method
kimoto.yuki@gmail.com authored on 2010-12-21
738

            
add examples
Yuki Kimoto authored on 2011-01-07
739
test 'limit';
740
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
741
$dbi->execute($CREATE_TABLE->{0});
742
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
743
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 4});
744
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 6});
renamed DBIx::Custom::TagPro...
Yuki Kimoto authored on 2011-01-24
745
$dbi->register_tag(
add examples
Yuki Kimoto authored on 2011-01-07
746
    limit => sub {
747
        my ($count, $offset) = @_;
748
        
749
        my $s = '';
750
        $s .= "limit $count";
751
        $s .= " offset $offset" if defined $offset;
752
        
753
        return [$s, []];
754
    }
755
);
756
$rows = $dbi->select(
757
  table => 'table1',
758
  where => {key1 => 1},
759
  append => "order by key2 {limit 1 0}"
760
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
761
is_deeply($rows, [{key1 => 1, key2 => 2}]);
add examples
Yuki Kimoto authored on 2011-01-07
762
$rows = $dbi->select(
763
  table => 'table1',
764
  where => {key1 => 1},
765
  append => "order by key2 {limit 2 1}"
766
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
767
is_deeply($rows, [{key1 => 1, key2 => 4},{key1 => 1, key2 => 6}]);
add examples
Yuki Kimoto authored on 2011-01-07
768
$rows = $dbi->select(
769
  table => 'table1',
770
  where => {key1 => 1},
771
  append => "order by key2 {limit 1}"
772
)->fetch_hash_all;
cleanup
Yuki Kimoto authored on 2011-01-23
773
is_deeply($rows, [{key1 => 1, key2 => 2}]);
added insert, update, update...
Yuki Kimoto authored on 2011-01-04
774

            
remove DBIx::Custom::Model
Yuki Kimoto authored on 2011-01-12
775
test 'connect super';
776
{
777
    package MyDBI;
778
    
779
    use base 'DBIx::Custom';
780
    sub connect {
781
        my $self = shift->SUPER::connect(@_);
782
        
783
        return $self;
784
    }
785
    
786
    sub new {
cleanup
Yuki Kimoto authored on 2011-01-25
787
        my $self = shift->SUPER::new(@_);
remove DBIx::Custom::Model
Yuki Kimoto authored on 2011-01-12
788
        
789
        return $self;
790
    }
791
}
792

            
793
$dbi = MyDBI->connect($NEW_ARGS->{0});
794
$dbi->execute($CREATE_TABLE->{0});
795
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
cleanup
Yuki Kimoto authored on 2011-01-23
796
is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
remove DBIx::Custom::Model
Yuki Kimoto authored on 2011-01-12
797

            
798
$dbi = MyDBI->new($NEW_ARGS->{0});
cleanup
Yuki Kimoto authored on 2011-01-25
799
$dbi->connect;
remove DBIx::Custom::Model
Yuki Kimoto authored on 2011-01-12
800
$dbi->execute($CREATE_TABLE->{0});
801
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
cleanup
Yuki Kimoto authored on 2011-01-23
802
is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
803

            
cleanup
Yuki Kimoto authored on 2011-01-25
804
{
805
    package MyDBI2;
806
    
807
    use base 'DBIx::Custom';
808
    sub connect {
809
        my $self = shift->SUPER::new(@_);
810
        $self->connect;
811
        
812
        return $self;
813
    }
814
}
815

            
816
$dbi = MyDBI->connect($NEW_ARGS->{0});
817
$dbi->execute($CREATE_TABLE->{0});
818
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
819
is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
820

            
821
test 'end_filter';
822
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
823
$dbi->execute($CREATE_TABLE->{0});
824
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
825
$result = $dbi->select(table => 'table1');
826
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
827
$result->end_filter(key1 => sub { $_[0] * 3 }, key2 => sub { $_[0] * 5 });
828
$row = $result->fetch_first;
829
is_deeply($row, [6, 40]);
830

            
many changed
Yuki Kimoto authored on 2011-01-23
831
$dbi->register_filter(five_times => sub { $_[0] * 5 });
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
832
$result = $dbi->select(table => 'table1');
833
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
many changed
Yuki Kimoto authored on 2011-01-23
834
$result->end_filter({key1 => sub { $_[0] * 3 }, key2 => 'five_times' });
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
835
$row = $result->fetch_hash_first;
836
is_deeply($row, {key1 => 6, key2 => 40});
fix select method empty wher...
Yuki Kimoto authored on 2011-01-17
837

            
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
838
$dbi->register_filter(five_times => sub { $_[0] * 5 });
839
$dbi->apply_filter('table1',
840
    key1 => {end => sub { $_[0] * 3 } },
841
    key2 => {end => 'five_times'}
842
);
843
$result = $dbi->select(table => 'table1');
844
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
845
$row = $result->fetch_hash_first;
846
is_deeply($row, {key1 => 6, key2 => 40}, 'apply_filter');
847

            
848
$dbi->register_filter(five_times => sub { $_[0] * 5 });
849
$dbi->apply_filter('table1',
850
    key1 => {end => sub { $_[0] * 3 } },
851
    key2 => {end => 'five_times'}
852
);
853
$result = $dbi->select(table => 'table1');
854
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
855
$result->filter(key1 => undef);
856
$result->end_filter(key1 => undef);
857
$row = $result->fetch_hash_first;
858
is_deeply($row, {key1 => 1, key2 => 40}, 'apply_filter overwrite');
fix select method empty wher...
Yuki Kimoto authored on 2011-01-17
859

            
860
test 'empty where select';
861
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
862
$dbi->execute($CREATE_TABLE->{0});
863
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
864
$result = $dbi->select(table => 'table1', where => {});
865
$row = $result->fetch_hash_first;
866
is_deeply($row, {key1 => 1, key2 => 2});
867

            
added experimental sugar met...
Yuki Kimoto authored on 2011-01-17
868
test 'select query option';
869
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
870
$dbi->execute($CREATE_TABLE->{0});
871
$query = $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, query => 1);
872
is(ref $query, 'DBIx::Custom::Query');
873
$query = $dbi->update(table => 'table1', where => {key1 => 1}, param => {key2 => 2}, query => 1);
874
is(ref $query, 'DBIx::Custom::Query');
875
$query = $dbi->delete(table => 'table1', where => {key1 => 1}, query => 1);
876
is(ref $query, 'DBIx::Custom::Query');
877
$query = $dbi->select(table => 'table1', where => {key1 => 1, key2 => 2}, query => 1);
878
is(ref $query, 'DBIx::Custom::Query');
879

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
880
test 'DBIx::Custom::Where';
experimental extended select...
Yuki Kimoto authored on 2011-01-17
881
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
882
$dbi->execute($CREATE_TABLE->{0});
883
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
884
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
renamed DBIx::Custom::TagPro...
Yuki Kimoto authored on 2011-01-24
885
$where = $dbi->where->clause(['and', '{= key1}', '{= key2}']);
886
is("$where", "where ( {= key1} and {= key2} )", 'no param');
887

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
888
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
889
             ->clause(['and', '{= key1}', '{= key2}'])
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
890
             ->param({key1 => 1});
added test
Yuki Kimoto authored on 2011-01-19
891

            
experimental extended select...
Yuki Kimoto authored on 2011-01-17
892
$result = $dbi->select(
893
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
894
    where => $where
experimental extended select...
Yuki Kimoto authored on 2011-01-17
895
);
896
$row = $result->fetch_hash_all;
897
is_deeply($row, [{key1 => 1, key2 => 2}]);
898

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
899
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
900
             ->clause(['and', '{= key1}', '{= key2}'])
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
901
             ->param({key1 => 1, key2 => 2});
experimental extended select...
Yuki Kimoto authored on 2011-01-17
902
$result = $dbi->select(
903
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
904
    where => $where
experimental extended select...
Yuki Kimoto authored on 2011-01-17
905
);
906
$row = $result->fetch_hash_all;
907
is_deeply($row, [{key1 => 1, key2 => 2}]);
908

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
909
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
910
             ->clause(['and', '{= key1}', '{= key2}'])
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
911
             ->param({});
experimental extended select...
Yuki Kimoto authored on 2011-01-17
912
$result = $dbi->select(
913
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
914
    where => $where,
experimental extended select...
Yuki Kimoto authored on 2011-01-17
915
);
916
$row = $result->fetch_hash_all;
917
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}]);
918

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
919
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
920
             ->clause(['and', ['or', '{> key1}', '{< key1}'], '{= key2}'])
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
921
             ->param({key1 => [0, 3], key2 => 2});
experimental extended select...
Yuki Kimoto authored on 2011-01-17
922
$result = $dbi->select(
923
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
924
    where => $where,
added experimental not_exist...
Yuki Kimoto authored on 2011-01-26
925
); 
experimental extended select...
Yuki Kimoto authored on 2011-01-17
926
$row = $result->fetch_hash_all;
927
is_deeply($row, [{key1 => 1, key2 => 2}]);
928

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
929
$where = $dbi->where;
930
$result = $dbi->select(
931
    table => 'table1',
932
    where => $where
933
);
934
$row = $result->fetch_hash_all;
935
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}]);
936

            
experimental extended select...
Yuki Kimoto authored on 2011-01-17
937
eval {
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
938
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
939
             ->clause(['uuu']);
experimental extended select...
Yuki Kimoto authored on 2011-01-17
940
$result = $dbi->select(
941
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
942
    where => $where
experimental extended select...
Yuki Kimoto authored on 2011-01-17
943
);
944
};
945
ok($@);
946

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
947
$where = $dbi->where;
948
is("$where", '');
949

            
added test
Yuki Kimoto authored on 2011-01-19
950
$where = $dbi->where
951
             ->clause(['or', ('{= key1}') x 2])
952
             ->param({key1 => [1, 3]});
953
$result = $dbi->select(
954
    table => 'table1',
955
    where => $where,
956
);
957
$row = $result->fetch_hash_all;
958
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}]);
959

            
960
$where = $dbi->where
961
             ->clause(['or', ('{= key1}') x 2])
962
             ->param({key1 => [1]});
963
$result = $dbi->select(
964
    table => 'table1',
965
    where => $where,
966
);
967
$row = $result->fetch_hash_all;
968
is_deeply($row, [{key1 => 1, key2 => 2}]);
969

            
970
$where = $dbi->where
971
             ->clause(['or', ('{= key1}') x 2])
972
             ->param({key1 => 1});
973
$result = $dbi->select(
974
    table => 'table1',
975
    where => $where,
976
);
977
$row = $result->fetch_hash_all;
978
is_deeply($row, [{key1 => 1, key2 => 2}]);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
979

            
many changed
Yuki Kimoto authored on 2011-01-23
980
$where = $dbi->where
981
             ->clause('{= key1}')
982
             ->param({key1 => 1});
983
$result = $dbi->select(
984
    table => 'table1',
985
    where => $where,
986
);
987
$row = $result->fetch_hash_all;
988
is_deeply($row, [{key1 => 1, key2 => 2}]);
989

            
990
$where = $dbi->where
991
             ->clause('{= key1} {= key2}')
992
             ->param({key1 => 1});
993
eval{$where->to_string};
994
like($@, qr/one column/);
995

            
added experimental not_exist...
Yuki Kimoto authored on 2011-01-26
996
$where = $dbi->where
997
             ->clause('{= key1}')
998
             ->param([]);
999
eval{$where->to_string};
1000
like($@, qr/Parameter/);
1001

            
1002
$where = $dbi->where
1003
             ->clause(['or', ('{= key1}') x 3])
1004
             ->param({key1 => [$dbi->not_exists, 1, 3]});
1005
$result = $dbi->select(
1006
    table => 'table1',
1007
    where => $where,
1008
);
1009
$row = $result->fetch_hash_all;
1010
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1011

            
1012
$where = $dbi->where
1013
             ->clause(['or', ('{= key1}') x 3])
1014
             ->param({key1 => [1, $dbi->not_exists, 3]});
1015
$result = $dbi->select(
1016
    table => 'table1',
1017
    where => $where,
1018
);
1019
$row = $result->fetch_hash_all;
1020
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1021

            
1022
$where = $dbi->where
1023
             ->clause(['or', ('{= key1}') x 3])
1024
             ->param({key1 => [1, 3, $dbi->not_exists]});
1025
$result = $dbi->select(
1026
    table => 'table1',
1027
    where => $where,
1028
);
1029
$row = $result->fetch_hash_all;
1030
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1031

            
1032
$where = $dbi->where
1033
             ->clause(['or', ('{= key1}') x 3])
1034
             ->param({key1 => [1, $dbi->not_exists, $dbi->not_exists]});
1035
$result = $dbi->select(
1036
    table => 'table1',
1037
    where => $where,
1038
);
1039
$row = $result->fetch_hash_all;
1040
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1041

            
1042
$where = $dbi->where
1043
             ->clause(['or', ('{= key1}') x 3])
1044
             ->param({key1 => [$dbi->not_exists, 1, $dbi->not_exists]});
1045
$result = $dbi->select(
1046
    table => 'table1',
1047
    where => $where,
1048
);
1049
$row = $result->fetch_hash_all;
1050
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1051

            
1052
$where = $dbi->where
1053
             ->clause(['or', ('{= key1}') x 3])
1054
             ->param({key1 => [$dbi->not_exists, $dbi->not_exists, 1]});
1055
$result = $dbi->select(
1056
    table => 'table1',
1057
    where => $where,
1058
);
1059
$row = $result->fetch_hash_all;
1060
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1061

            
1062
$where = $dbi->where
1063
             ->clause(['or', ('{= key1}') x 3])
1064
             ->param({key1 => [$dbi->not_exists, $dbi->not_exists, $dbi->not_exists]});
1065
$result = $dbi->select(
1066
    table => 'table1',
1067
    where => $where,
1068
);
1069
$row = $result->fetch_hash_all;
1070
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1071

            
make delete() using where ob...
Yuki Kimoto authored on 2011-01-26
1072
$where = $dbi->where
1073
             ->clause(['or', ('{= key1}') x 3])
1074
             ->param({key1 => []});
1075
$result = $dbi->select(
1076
    table => 'table1',
1077
    where => $where,
1078
);
1079
$row = $result->fetch_hash_all;
1080
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1081

            
1082
$where = $dbi->where
1083
             ->clause(['and', '{> key1}', '{< key1}' ])
1084
             ->param({key1 => [2, $dbi->not_exists]});
1085
$result = $dbi->select(
1086
    table => 'table1',
1087
    where => $where,
1088
);
1089
$row = $result->fetch_hash_all;
1090
is_deeply($row, [{key1 => 3, key2 => 4}], 'not_exists');
1091

            
1092
$where = $dbi->where
1093
             ->clause(['and', '{> key1}', '{< key1}' ])
1094
             ->param({key1 => [$dbi->not_exists, 2]});
1095
$result = $dbi->select(
1096
    table => 'table1',
1097
    where => $where,
1098
);
1099
$row = $result->fetch_hash_all;
1100
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1101

            
1102
$where = $dbi->where
1103
             ->clause(['and', '{> key1}', '{< key1}' ])
1104
             ->param({key1 => [$dbi->not_exists, $dbi->not_exists]});
1105
$result = $dbi->select(
1106
    table => 'table1',
1107
    where => $where,
1108
);
1109
$row = $result->fetch_hash_all;
1110
is_deeply($row, [{key1 => 1, key2 => 2},{key1 => 3, key2 => 4}], 'not_exists');
1111

            
1112
$where = $dbi->where
1113
             ->clause(['and', '{> key1}', '{< key1}' ])
1114
             ->param({key1 => [0, 2]});
1115
$result = $dbi->select(
1116
    table => 'table1',
1117
    where => $where,
1118
);
1119
$row = $result->fetch_hash_all;
1120
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1121

            
renamed dbi_options to dbi_o...
Yuki Kimoto authored on 2011-01-23
1122
test 'dbi_option default';
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1123
$dbi = DBIx::Custom->new;
renamed dbi_options to dbi_o...
Yuki Kimoto authored on 2011-01-23
1124
is_deeply($dbi->dbi_option, {});
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1125

            
added register_tag_processor
Yuki Kimoto authored on 2011-01-20
1126
test 'register_tag_processor';
1127
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1128
$dbi->register_tag_processor(
1129
    a => sub { 1 }
1130
);
1131
is($dbi->query_builder->tag_processors->{a}->(), 1);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1132

            
renamed DBIx::Custom::TagPro...
Yuki Kimoto authored on 2011-01-24
1133
test 'register_tag';
1134
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1135
$dbi->register_tag(
1136
    b => sub { 2 }
1137
);
1138
is($dbi->query_builder->tags->{b}->(), 2);
1139

            
added table not specified ex...
Yuki Kimoto authored on 2011-01-21
1140
test 'table not specify exception';
1141
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1142
eval {$dbi->insert};
1143
like($@, qr/table/);
1144
eval {$dbi->update};
1145
like($@, qr/table/);
1146
eval {$dbi->delete};
1147
like($@, qr/table/);
1148
eval {$dbi->select};
1149
like($@, qr/table/);
many changed
Yuki Kimoto authored on 2011-01-23
1150

            
1151

            
1152
test 'more tests';
1153
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1154
eval{$dbi->apply_filter('table', 'column', [])};
1155
like($@, qr/apply_filter/);
1156

            
1157
eval{$dbi->apply_filter('table', 'column', {outer => 2})};
1158
like($@, qr/apply_filter/);
1159

            
1160
$dbi->apply_filter(
1161

            
1162
);
1163
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1164
$dbi->execute($CREATE_TABLE->{0});
1165
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1166
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
1167
$dbi->apply_filter('table1', 'key2', 
1168
                   {in => sub { $_[0] * 3 }, out => sub { $_[0] * 2 }});
1169
$rows = $dbi->select(table => 'table1', where => {key2 => 1})->fetch_hash_all;
1170
is_deeply($rows, [{key1 => 1, key2 => 6}]);
1171

            
1172
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1173
$dbi->execute($CREATE_TABLE->{0});
1174
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1175
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
1176
$dbi->apply_filter('table1', 'key2', {});
1177
$rows = $dbi->select(table => 'table1', where => {key2 => 2})->fetch_hash_all;
1178
is_deeply($rows, [{key1 => 1, key2 => 2}]);
1179

            
1180
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1181
eval {$dbi->apply_filter('table1', 'key2', {out => 'no'})};
1182
like($@, qr/not registered/);
1183
eval {$dbi->apply_filter('table1', 'key2', {in => 'no'})};
1184
like($@, qr/not registered/);
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
1185
$dbi->method({one => sub { 1 }});
many changed
Yuki Kimoto authored on 2011-01-23
1186
is($dbi->one, 1);
1187

            
1188
eval{DBIx::Custom->connect()};
1189
like($@, qr/connect/);
1190

            
1191
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1192
$dbi->execute($CREATE_TABLE->{0});
1193
$dbi->register_filter(twice => sub { $_[0] * 2 });
1194
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2},
1195
             filter => {key1 => 'twice'});
1196
$row = $dbi->select(table => 'table1')->fetch_hash_first;
1197
is_deeply($row, {key1 => 2, key2 => 2});
1198
eval {$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2},
1199
             filter => {key1 => 'no'}) };
1200
like($@, qr//);
1201

            
1202
$dbi->register_filter(one => sub { });
1203
$dbi->default_fetch_filter('one');
1204
ok($dbi->default_fetch_filter);
1205
$dbi->default_bind_filter('one');
1206
ok($dbi->default_bind_filter);
1207
eval{$dbi->default_fetch_filter('no')};
1208
like($@, qr/not registered/);
1209
eval{$dbi->default_bind_filter('no')};
1210
like($@, qr/not registered/);
1211
$dbi->default_bind_filter(undef);
1212
ok(!defined $dbi->default_bind_filter);
1213
$dbi->default_fetch_filter(undef);
1214
ok(!defined $dbi->default_fetch_filter);
1215
eval {$dbi->execute('select * from table1 {= author') };
1216
like($@, qr/Tag not finished/);
1217

            
1218
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1219
$dbi->execute($CREATE_TABLE->{0});
1220
$dbi->register_filter(one => sub { 1 });
1221
$result = $dbi->select(table => 'table1');
1222
eval {$result->filter(key1 => 'no')};
1223
like($@, qr/not registered/);
1224
eval {$result->end_filter(key1 => 'no')};
1225
like($@, qr/not registered/);
1226
$result->default_filter(undef);
1227
ok(!defined $result->default_filter);
1228
$result->default_filter('one');
1229
is($result->default_filter->(), 1);
1230

            
renamed dbi_options to dbi_o...
Yuki Kimoto authored on 2011-01-23
1231
test 'dbi_option';
1232
$dbi = DBIx::Custom->connect(data_source => 'dbi:SQLite:dbname=:memory:',
1233
                             dbi_option => {PrintError => 1});
1234
ok($dbi->dbh->{PrintError});
1235
$dbi = DBIx::Custom->connect(data_source => 'dbi:SQLite:dbname=:memory:',
1236
                             dbi_options => {PrintError => 1});
1237
ok($dbi->dbh->{PrintError});
1238

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-25
1239
test 'DBIx::Custom::Result stash()';
1240
$result = DBIx::Custom::Result->new;
1241
is_deeply($result->stash, {}, 'default');
1242
$result->stash->{foo} = 1;
1243
is($result->stash->{foo}, 1, 'get and set');
table object call dbi object...
Yuki Kimoto authored on 2011-01-25
1244

            
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
1245
test 'filter __ expression';
1246
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1247
$dbi->execute('create table company (id, name, location_id)');
1248
$dbi->execute('create table location (id, name)');
1249
$dbi->apply_filter('location',
1250
  name => {in => sub { uc $_[0] } }
1251
);
1252

            
1253
$dbi->insert(table => 'company', param => {id => 1, name => 'a', location_id => 2});
1254
$dbi->insert(table => 'location', param => {id => 2, name => 'b'});
1255

            
1256
$result = $dbi->select(
1257
    table => ['company', 'location'], relation => {'company.location_id' => 'location.id'},
1258
    column => ['location.name as location__name']
1259
);
1260
is($result->fetch_first->[0], 'B');
1261

            
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1262
$result = $dbi->select(
1263
    table => 'company', relation => {'company.location_id' => 'location.id'},
1264
    column => ['location.name as location__name']
1265
);
1266
is($result->fetch_first->[0], 'B');
1267

            
add experimental selection o...
Yuki Kimoto authored on 2011-02-09
1268
test 'selection';
1269
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1270
$dbi->execute($CREATE_TABLE->{0});
1271
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1272
$result = $dbi->select(selection => '* from table1', where => {key1 => 1});
1273
is_deeply($result->fetch_hash_all, [{key1 => 1, key2 => 2}]);
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1274

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1275
test 'Model class';
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1276
use MyDBI1;
1277
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1278
$dbi->execute("create table book (title, author)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1279
$model = $dbi->model('book');
1280
$model->insert({title => 'a', author => 'b'});
1281
is_deeply($model->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1282
$dbi->execute("create table company (name)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1283
$model = $dbi->model('company');
1284
$model->insert({name => 'a'});
1285
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'basic');
add models() attribute
Yuki Kimoto authored on 2011-02-21
1286
is($dbi->models->{'book'}, $dbi->model('book'));
1287
is($dbi->models->{'company'}, $dbi->model('company'));
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1288

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1289
$dbi->model('book');
1290
eval{$dbi->model('book')->no_exists};
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1291
like($@, qr/locate/);
1292

            
1293
{
1294
    package MyDBI4;
1295

            
1296
    use strict;
1297
    use warnings;
1298

            
1299
    use base 'DBIx::Custom';
1300

            
1301
    sub connect {
1302
        my $self = shift->SUPER::connect(@_);
1303
        
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1304
        $self->include_model(
1305
            MyModel2 => [
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1306
                'book',
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-24
1307
                {class => 'Company', name => 'company'}
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1308
            ]
1309
        );
1310
    }
1311

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1312
    package MyModel2::Base1;
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1313

            
1314
    use strict;
1315
    use warnings;
1316

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1317
    use base 'DBIx::Custom::Model';
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1318

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1319
    package MyModel2::book;
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1320

            
1321
    use strict;
1322
    use warnings;
1323

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1324
    use base 'MyModel2::Base1';
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1325

            
1326
    sub insert {
1327
        my ($self, $param) = @_;
1328
        
1329
        return $self->SUPER::insert(param => $param);
1330
    }
1331

            
1332
    sub list { shift->select; }
1333

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1334
    package MyModel2::Company;
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1335

            
1336
    use strict;
1337
    use warnings;
1338

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1339
    use base 'MyModel2::Base1';
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1340

            
1341
    sub insert {
1342
        my ($self, $param) = @_;
1343
        
1344
        return $self->SUPER::insert(param => $param);
1345
    }
1346

            
1347
    sub list { shift->select; }
1348
}
1349
$dbi = MyDBI4->connect($NEW_ARGS->{0});
1350
$dbi->execute("create table book (title, author)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1351
$model = $dbi->model('book');
1352
$model->insert({title => 'a', author => 'b'});
1353
is_deeply($model->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1354
$dbi->execute("create table company (name)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1355
$model = $dbi->model('company');
1356
$model->insert({name => 'a'});
1357
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'basic');
1358

            
1359
{
1360
     package MyDBI5;
1361

            
1362
    use strict;
1363
    use warnings;
1364

            
1365
    use base 'DBIx::Custom';
1366

            
1367
    sub connect {
1368
        my $self = shift->SUPER::connect(@_);
1369
        
1370
        $self->include_model('MyModel4');
1371
    }
1372
}
1373
$dbi = MyDBI5->connect($NEW_ARGS->{0});
1374
$dbi->execute("create table company (name)");
1375
$model = $dbi->model('company');
1376
$model->insert({name => 'a'});
1377
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'include all model');
1378
$model = $dbi->model('book');
1379
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'include all model');
1380

            
add DBIx::Custom::Model fore...
Yuki Kimoto authored on 2011-02-21
1381
test 'primary_key';
1382
use MyDBI1;
1383
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1384
$model = $dbi->model('book');
1385
$model->primary_key(['id', 'number']);
1386
is_deeply($model->primary_key, ['id', 'number']);
1387

            
add DBIx::Custom::Model colu...
Yuki Kimoto authored on 2011-02-21
1388
test 'columns';
1389
use MyDBI1;
1390
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1391
$model = $dbi->model('book');
1392
$model->columns(['id', 'number']);
1393
is_deeply($model->columns, ['id', 'number']);
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1394

            
add experimental setup_model...
Yuki Kimoto authored on 2011-02-21
1395
test 'setup_model';
1396
use MyDBI1;
1397
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1398
$dbi->execute('create table book (id)');
1399
$dbi->execute('create table company (id, name);');
1400
$dbi->execute('create table test (id, name, primary key (id, name));');
1401
$dbi->setup_model;
1402
is_deeply($dbi->model('book')->columns, ['id']);
1403
is_deeply($dbi->model('company')->columns, ['id', 'name']);
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1404

            
1405
test 'delete_at';
1406
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1407
$dbi->execute($CREATE_TABLE->{1});
1408
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1409
$dbi->delete_at(
1410
    table => 'table1',
1411
    primary_key => ['key1', 'key2'],
1412
    where => [1, 2],
1413
);
1414
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1415

            
1416
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1417
$dbi->delete_at(
1418
    table => 'table1',
1419
    primary_key => 'key1',
1420
    where => 1,
1421
);
1422
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1423

            
1424
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1425
$dbi->delete_at(
1426
    table => 'table1',
1427
    primary_key => ['key1', 'key2'],
1428
    param => {key1 => 1, key2 => 2},
1429
);
1430
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1431

            
1432

            
1433
test 'update_at';
1434
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1435
$dbi->execute($CREATE_TABLE->{1});
1436
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1437
$dbi->update_at(
1438
    table => 'table1',
1439
    primary_key => ['key1', 'key2'],
1440
    where => [1, 2],
1441
    param => {key3 => 4}
1442
);
1443
is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
1444
is($dbi->select(table => 'table1')->fetch_hash_first->{key2}, 2);
1445
is($dbi->select(table => 'table1')->fetch_hash_first->{key3}, 4);
1446

            
1447
$dbi->delete_all(table => 'table1');
1448
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1449
$dbi->update_at(
1450
    table => 'table1',
1451
    primary_key => 'key1',
1452
    where => 1,
1453
    param => {key3 => 4}
1454
);
1455
is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
1456
is($dbi->select(table => 'table1')->fetch_hash_first->{key2}, 2);
1457
is($dbi->select(table => 'table1')->fetch_hash_first->{key3}, 4);
1458

            
1459
$dbi->delete_all(table => 'table1');
1460
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1461
$dbi->update_at(
1462
    table => 'table1',
1463
    primary_key => ['key1', 'key2'],
1464
    param => {key1 => 1, key2 => 2, key3 => 4},
1465
);
1466
is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
1467
is($dbi->select(table => 'table1')->fetch_hash_first->{key2}, 2);
1468
is($dbi->select(table => 'table1')->fetch_hash_first->{key3}, 4);
1469

            
1470

            
1471
test 'select_at';
1472
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1473
$dbi->execute($CREATE_TABLE->{1});
1474
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1475
$result = $dbi->select_at(
1476
    table => 'table1',
1477
    primary_key => ['key1', 'key2'],
1478
    where => [1, 2]
1479
);
1480
$row = $result->fetch_hash_first;
1481
is($row->{key1}, 1);
1482
is($row->{key2}, 2);
1483
is($row->{key3}, 3);
1484

            
1485
$dbi->delete_all(table => 'table1');
1486
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1487
$result = $dbi->select_at(
1488
    table => 'table1',
1489
    primary_key => 'key1',
1490
    where => 1,
1491
);
1492
$row = $result->fetch_hash_first;
1493
is($row->{key1}, 1);
1494
is($row->{key2}, 2);
1495
is($row->{key3}, 3);
1496

            
1497
$dbi->delete_all(table => 'table1');
1498
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1499
$result = $dbi->select_at(
1500
    table => 'table1',
1501
    primary_key => ['key1', 'key2'],
1502
    param => {key1 => 1, key2 => 2},
1503
);
1504
$row = $result->fetch_hash_first;
1505
is($row->{key1}, 1);
1506
is($row->{key2}, 2);
1507
is($row->{key3}, 3);
1508

            
1509

            
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1510
test 'columns';
1511
use MyDBI1;
1512
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1513
$model = $dbi->model('book');
1514
$model->relation({'book.id' => 'company.id'});
1515
is_deeply($model->relation, {'book.id' => 'company.id'});
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1516

            
1517

            
1518
test 'model delete_at';
1519
{
1520
    package MyDBI6;
1521
    
1522
    use base 'DBIx::Custom';
1523
    
1524
    sub connect {
1525
        my $self = shift->SUPER::connect(@_);
1526
        
1527
        $self->include_model('MyModel5');
1528
        
1529
        return $self;
1530
    }
1531
}
1532
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1533
$dbi->execute($CREATE_TABLE->{1});
1534
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1535
$dbi->model('table1')->delete_at(where => [1, 2]);
1536
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-24
1537
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1538
$dbi->model('table1_1')->delete_at(where => [1, 2]);
1539
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1540
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1541
$dbi->model('table1_3')->delete_at(where => [1, 2]);
1542
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1543

            
1544

            
1545
test 'update_at';
1546
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1547
$dbi->execute($CREATE_TABLE->{1});
1548
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1549
$dbi->model('table1')->update_at(
1550
    where => [1, 2],
1551
    param => {key3 => 4}
1552
);
1553
$result = $dbi->model('table1')->select;
1554
$row = $result->fetch_hash_first;
1555
is($row->{key1}, 1);
1556
is($row->{key2}, 2);
1557
is($row->{key3}, 4);
1558

            
1559
test 'select_at';
1560
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1561
$dbi->execute($CREATE_TABLE->{1});
1562
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1563
$result = $dbi->model('table1')->select_at(where => [1, 2]);
1564
$row = $result->fetch_hash_first;
1565
is($row->{key1}, 1);
1566
is($row->{key2}, 2);
1567
is($row->{key3}, 3);
DBIx::Custom::Model select()...
Yuki Kimoto authored on 2011-02-22
1568

            
1569

            
1570
test 'model select relation';
1571
{
1572
    package MyDBI7;
1573
    
1574
    use base 'DBIx::Custom';
1575
    
1576
    sub connect {
1577
        my $self = shift->SUPER::connect(@_);
1578
        
1579
        $self->include_model('MyModel6');
1580
        
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
1581
        
DBIx::Custom::Model select()...
Yuki Kimoto authored on 2011-02-22
1582
        return $self;
1583
    }
1584
}
1585
$dbi = MyDBI7->connect($NEW_ARGS->{0});
1586
$dbi->execute($CREATE_TABLE->{0});
1587
$dbi->execute($CREATE_TABLE->{2});
1588
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1589
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
1590
$result = $dbi->model('table1')->select(column => ['key3'], where => {'table1.key1' => 1});
1591
is($result->fetch_hash_first->{key3}, 3);
1592
$result = $dbi->model('table1')->select_at(column => ['key3'], where => [1]);
1593
is($result->fetch_hash_first->{key3}, 3);
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-24
1594
$dbi->execute('create table table3 (key1);');
1595
$dbi->model('table3')->insert(param => {key1 => 'a'});
1596
is_deeply($dbi->model('table3')->select(where => {key1 => 'a'})->fetch_hash_first,
1597
   {key1 => 'A'});
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
1598

            
1599
test 'column_clause';
1600
$dbi = MyDBI7->connect($NEW_ARGS->{0});
1601
$dbi->execute($CREATE_TABLE->{0});
1602
$dbi->execute($CREATE_TABLE->{2});
1603
$dbi->setup_model;
1604
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1605
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
1606
$model = $dbi->model('table1');
1607
$result = $model->select(column => $model->column_clause, where => {'table1.key1' => 1});
1608
is_deeply($result->fetch_hash_first, {key1 => 1, key2 => 2});
1609
$result = $model->select(column => $model->column_clause(remove => ['key1']), where => {'table1.key1' => 1});
1610
is_deeply($result->fetch_hash_first, {key2 => 2});
1611
$result = $model->select(column => $model->column_clause(add => ['key3']), where => {'table1.key1' => 1});
1612
is_deeply($result->fetch_hash_first, {key1 => 1, key2 => 2, key3 => 3});
1613

            
1614