DBIx-Custom / t / dbix-custom-core-sqlite.t /
Newer Older
1632 lines | 55.11kb
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

            
all filter can receive array...
Yuki Kimoto authored on 2011-02-25
831
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
832
$dbi->execute($CREATE_TABLE->{0});
833
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
834
$result = $dbi->select(table => 'table1');
835
$result->filter([qw/key1 key2/] => sub { $_[0] * 2 });
836
$result->end_filter([[qw/key1 key2/] => sub { $_[0] * 3 }]);
837
$row = $result->fetch_first;
838
is_deeply($row, [6, 12]);
839

            
840
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
841
$dbi->execute($CREATE_TABLE->{0});
842
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
843
$result = $dbi->select(table => 'table1');
844
$result->filter([[qw/key1 key2/] => sub { $_[0] * 2 }]);
845
$result->end_filter([qw/key1 key2/] => sub { $_[0] * 3 });
846
$row = $result->fetch_first;
847
is_deeply($row, [6, 12]);
848

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

            
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
856
$dbi->register_filter(five_times => sub { $_[0] * 5 });
857
$dbi->apply_filter('table1',
858
    key1 => {end => sub { $_[0] * 3 } },
859
    key2 => {end => 'five_times'}
860
);
861
$result = $dbi->select(table => 'table1');
862
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
863
$row = $result->fetch_hash_first;
864
is_deeply($row, {key1 => 6, key2 => 40}, 'apply_filter');
865

            
866
$dbi->register_filter(five_times => sub { $_[0] * 5 });
867
$dbi->apply_filter('table1',
868
    key1 => {end => sub { $_[0] * 3 } },
869
    key2 => {end => 'five_times'}
870
);
871
$result = $dbi->select(table => 'table1');
872
$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
873
$result->filter(key1 => undef);
874
$result->end_filter(key1 => undef);
875
$row = $result->fetch_hash_first;
876
is_deeply($row, {key1 => 1, key2 => 40}, 'apply_filter overwrite');
fix select method empty wher...
Yuki Kimoto authored on 2011-01-17
877

            
878
test 'empty where select';
879
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
880
$dbi->execute($CREATE_TABLE->{0});
881
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
882
$result = $dbi->select(table => 'table1', where => {});
883
$row = $result->fetch_hash_first;
884
is_deeply($row, {key1 => 1, key2 => 2});
885

            
added experimental sugar met...
Yuki Kimoto authored on 2011-01-17
886
test 'select query option';
887
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
888
$dbi->execute($CREATE_TABLE->{0});
889
$query = $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, query => 1);
890
is(ref $query, 'DBIx::Custom::Query');
891
$query = $dbi->update(table => 'table1', where => {key1 => 1}, param => {key2 => 2}, query => 1);
892
is(ref $query, 'DBIx::Custom::Query');
893
$query = $dbi->delete(table => 'table1', where => {key1 => 1}, query => 1);
894
is(ref $query, 'DBIx::Custom::Query');
895
$query = $dbi->select(table => 'table1', where => {key1 => 1, key2 => 2}, query => 1);
896
is(ref $query, 'DBIx::Custom::Query');
897

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
898
test 'DBIx::Custom::Where';
experimental extended select...
Yuki Kimoto authored on 2011-01-17
899
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
900
$dbi->execute($CREATE_TABLE->{0});
901
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
902
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
renamed DBIx::Custom::TagPro...
Yuki Kimoto authored on 2011-01-24
903
$where = $dbi->where->clause(['and', '{= key1}', '{= key2}']);
904
is("$where", "where ( {= key1} and {= key2} )", 'no param');
905

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

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

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

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

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
937
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
938
             ->clause(['and', ['or', '{> key1}', '{< key1}'], '{= key2}'])
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
939
             ->param({key1 => [0, 3], key2 => 2});
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,
added experimental not_exist...
Yuki Kimoto authored on 2011-01-26
943
); 
experimental extended select...
Yuki Kimoto authored on 2011-01-17
944
$row = $result->fetch_hash_all;
945
is_deeply($row, [{key1 => 1, key2 => 2}]);
946

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
947
$where = $dbi->where;
948
$result = $dbi->select(
949
    table => 'table1',
950
    where => $where
951
);
952
$row = $result->fetch_hash_all;
953
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}]);
954

            
experimental extended select...
Yuki Kimoto authored on 2011-01-17
955
eval {
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
956
$where = $dbi->where
added test
Yuki Kimoto authored on 2011-01-19
957
             ->clause(['uuu']);
experimental extended select...
Yuki Kimoto authored on 2011-01-17
958
$result = $dbi->select(
959
    table => 'table1',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
960
    where => $where
experimental extended select...
Yuki Kimoto authored on 2011-01-17
961
);
962
};
963
ok($@);
964

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

            
added test
Yuki Kimoto authored on 2011-01-19
968
$where = $dbi->where
969
             ->clause(['or', ('{= key1}') x 2])
970
             ->param({key1 => [1, 3]});
971
$result = $dbi->select(
972
    table => 'table1',
973
    where => $where,
974
);
975
$row = $result->fetch_hash_all;
976
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}]);
977

            
978
$where = $dbi->where
979
             ->clause(['or', ('{= key1}') x 2])
980
             ->param({key1 => [1]});
981
$result = $dbi->select(
982
    table => 'table1',
983
    where => $where,
984
);
985
$row = $result->fetch_hash_all;
986
is_deeply($row, [{key1 => 1, key2 => 2}]);
987

            
988
$where = $dbi->where
989
             ->clause(['or', ('{= key1}') x 2])
990
             ->param({key1 => 1});
991
$result = $dbi->select(
992
    table => 'table1',
993
    where => $where,
994
);
995
$row = $result->fetch_hash_all;
996
is_deeply($row, [{key1 => 1, key2 => 2}]);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
997

            
many changed
Yuki Kimoto authored on 2011-01-23
998
$where = $dbi->where
999
             ->clause('{= key1}')
1000
             ->param({key1 => 1});
1001
$result = $dbi->select(
1002
    table => 'table1',
1003
    where => $where,
1004
);
1005
$row = $result->fetch_hash_all;
1006
is_deeply($row, [{key1 => 1, key2 => 2}]);
1007

            
1008
$where = $dbi->where
1009
             ->clause('{= key1} {= key2}')
1010
             ->param({key1 => 1});
1011
eval{$where->to_string};
1012
like($@, qr/one column/);
1013

            
added experimental not_exist...
Yuki Kimoto authored on 2011-01-26
1014
$where = $dbi->where
1015
             ->clause('{= key1}')
1016
             ->param([]);
1017
eval{$where->to_string};
1018
like($@, qr/Parameter/);
1019

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

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

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

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

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

            
1070
$where = $dbi->where
1071
             ->clause(['or', ('{= key1}') x 3])
1072
             ->param({key1 => [$dbi->not_exists, $dbi->not_exists, 1]});
1073
$result = $dbi->select(
1074
    table => 'table1',
1075
    where => $where,
1076
);
1077
$row = $result->fetch_hash_all;
1078
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1079

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

            
make delete() using where ob...
Yuki Kimoto authored on 2011-01-26
1090
$where = $dbi->where
1091
             ->clause(['or', ('{= key1}') x 3])
1092
             ->param({key1 => []});
1093
$result = $dbi->select(
1094
    table => 'table1',
1095
    where => $where,
1096
);
1097
$row = $result->fetch_hash_all;
1098
is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists');
1099

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

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

            
1120
$where = $dbi->where
1121
             ->clause(['and', '{> key1}', '{< key1}' ])
1122
             ->param({key1 => [$dbi->not_exists, $dbi->not_exists]});
1123
$result = $dbi->select(
1124
    table => 'table1',
1125
    where => $where,
1126
);
1127
$row = $result->fetch_hash_all;
1128
is_deeply($row, [{key1 => 1, key2 => 2},{key1 => 3, key2 => 4}], 'not_exists');
1129

            
1130
$where = $dbi->where
1131
             ->clause(['and', '{> key1}', '{< key1}' ])
1132
             ->param({key1 => [0, 2]});
1133
$result = $dbi->select(
1134
    table => 'table1',
1135
    where => $where,
1136
);
1137
$row = $result->fetch_hash_all;
1138
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists');
1139

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

            
added register_tag_processor
Yuki Kimoto authored on 2011-01-20
1144
test 'register_tag_processor';
1145
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1146
$dbi->register_tag_processor(
1147
    a => sub { 1 }
1148
);
1149
is($dbi->query_builder->tag_processors->{a}->(), 1);
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-18
1150

            
renamed DBIx::Custom::TagPro...
Yuki Kimoto authored on 2011-01-24
1151
test 'register_tag';
1152
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1153
$dbi->register_tag(
1154
    b => sub { 2 }
1155
);
1156
is($dbi->query_builder->tags->{b}->(), 2);
1157

            
added table not specified ex...
Yuki Kimoto authored on 2011-01-21
1158
test 'table not specify exception';
1159
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1160
eval {$dbi->insert};
1161
like($@, qr/table/);
1162
eval {$dbi->update};
1163
like($@, qr/table/);
1164
eval {$dbi->delete};
1165
like($@, qr/table/);
1166
eval {$dbi->select};
1167
like($@, qr/table/);
many changed
Yuki Kimoto authored on 2011-01-23
1168

            
1169

            
1170
test 'more tests';
1171
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1172
eval{$dbi->apply_filter('table', 'column', [])};
1173
like($@, qr/apply_filter/);
1174

            
1175
eval{$dbi->apply_filter('table', 'column', {outer => 2})};
1176
like($@, qr/apply_filter/);
1177

            
1178
$dbi->apply_filter(
1179

            
1180
);
1181
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1182
$dbi->execute($CREATE_TABLE->{0});
1183
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1184
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
1185
$dbi->apply_filter('table1', 'key2', 
1186
                   {in => sub { $_[0] * 3 }, out => sub { $_[0] * 2 }});
1187
$rows = $dbi->select(table => 'table1', where => {key2 => 1})->fetch_hash_all;
1188
is_deeply($rows, [{key1 => 1, key2 => 6}]);
1189

            
1190
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1191
$dbi->execute($CREATE_TABLE->{0});
1192
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1193
$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
1194
$dbi->apply_filter('table1', 'key2', {});
1195
$rows = $dbi->select(table => 'table1', where => {key2 => 2})->fetch_hash_all;
1196
is_deeply($rows, [{key1 => 1, key2 => 2}]);
1197

            
1198
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1199
eval {$dbi->apply_filter('table1', 'key2', {out => 'no'})};
1200
like($@, qr/not registered/);
1201
eval {$dbi->apply_filter('table1', 'key2', {in => 'no'})};
1202
like($@, qr/not registered/);
renamed helper to method.
Yuki Kimoto authored on 2011-01-25
1203
$dbi->method({one => sub { 1 }});
many changed
Yuki Kimoto authored on 2011-01-23
1204
is($dbi->one, 1);
1205

            
1206
eval{DBIx::Custom->connect()};
1207
like($@, qr/connect/);
1208

            
1209
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1210
$dbi->execute($CREATE_TABLE->{0});
1211
$dbi->register_filter(twice => sub { $_[0] * 2 });
1212
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2},
1213
             filter => {key1 => 'twice'});
1214
$row = $dbi->select(table => 'table1')->fetch_hash_first;
1215
is_deeply($row, {key1 => 2, key2 => 2});
1216
eval {$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2},
1217
             filter => {key1 => 'no'}) };
1218
like($@, qr//);
1219

            
1220
$dbi->register_filter(one => sub { });
1221
$dbi->default_fetch_filter('one');
1222
ok($dbi->default_fetch_filter);
1223
$dbi->default_bind_filter('one');
1224
ok($dbi->default_bind_filter);
1225
eval{$dbi->default_fetch_filter('no')};
1226
like($@, qr/not registered/);
1227
eval{$dbi->default_bind_filter('no')};
1228
like($@, qr/not registered/);
1229
$dbi->default_bind_filter(undef);
1230
ok(!defined $dbi->default_bind_filter);
1231
$dbi->default_fetch_filter(undef);
1232
ok(!defined $dbi->default_fetch_filter);
1233
eval {$dbi->execute('select * from table1 {= author') };
1234
like($@, qr/Tag not finished/);
1235

            
1236
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1237
$dbi->execute($CREATE_TABLE->{0});
1238
$dbi->register_filter(one => sub { 1 });
1239
$result = $dbi->select(table => 'table1');
1240
eval {$result->filter(key1 => 'no')};
1241
like($@, qr/not registered/);
1242
eval {$result->end_filter(key1 => 'no')};
1243
like($@, qr/not registered/);
1244
$result->default_filter(undef);
1245
ok(!defined $result->default_filter);
1246
$result->default_filter('one');
1247
is($result->default_filter->(), 1);
1248

            
renamed dbi_options to dbi_o...
Yuki Kimoto authored on 2011-01-23
1249
test 'dbi_option';
1250
$dbi = DBIx::Custom->connect(data_source => 'dbi:SQLite:dbname=:memory:',
1251
                             dbi_option => {PrintError => 1});
1252
ok($dbi->dbh->{PrintError});
1253
$dbi = DBIx::Custom->connect(data_source => 'dbi:SQLite:dbname=:memory:',
1254
                             dbi_options => {PrintError => 1});
1255
ok($dbi->dbh->{PrintError});
1256

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-25
1257
test 'DBIx::Custom::Result stash()';
1258
$result = DBIx::Custom::Result->new;
1259
is_deeply($result->stash, {}, 'default');
1260
$result->stash->{foo} = 1;
1261
is($result->stash->{foo}, 1, 'get and set');
table object call dbi object...
Yuki Kimoto authored on 2011-01-25
1262

            
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
1263
test 'filter __ expression';
1264
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1265
$dbi->execute('create table company (id, name, location_id)');
1266
$dbi->execute('create table location (id, name)');
1267
$dbi->apply_filter('location',
1268
  name => {in => sub { uc $_[0] } }
1269
);
1270

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

            
1274
$result = $dbi->select(
1275
    table => ['company', 'location'], relation => {'company.location_id' => 'location.id'},
1276
    column => ['location.name as location__name']
1277
);
1278
is($result->fetch_first->[0], 'B');
1279

            
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1280
$result = $dbi->select(
1281
    table => 'company', relation => {'company.location_id' => 'location.id'},
1282
    column => ['location.name as location__name']
1283
);
1284
is($result->fetch_first->[0], 'B');
1285

            
add experimental selection o...
Yuki Kimoto authored on 2011-02-09
1286
test 'selection';
1287
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1288
$dbi->execute($CREATE_TABLE->{0});
1289
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1290
$result = $dbi->select(selection => '* from table1', where => {key1 => 1});
1291
is_deeply($result->fetch_hash_all, [{key1 => 1, key2 => 2}]);
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1292

            
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1293
test 'Model class';
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1294
use MyDBI1;
1295
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1296
$dbi->execute("create table book (title, author)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1297
$model = $dbi->model('book');
1298
$model->insert({title => 'a', author => 'b'});
1299
is_deeply($model->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1300
$dbi->execute("create table company (name)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1301
$model = $dbi->model('company');
1302
$model->insert({name => 'a'});
1303
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'basic');
add models() attribute
Yuki Kimoto authored on 2011-02-21
1304
is($dbi->models->{'book'}, $dbi->model('book'));
1305
is($dbi->models->{'company'}, $dbi->model('company'));
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1306

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

            
1311
{
1312
    package MyDBI4;
1313

            
1314
    use strict;
1315
    use warnings;
1316

            
1317
    use base 'DBIx::Custom';
1318

            
1319
    sub connect {
1320
        my $self = shift->SUPER::connect(@_);
1321
        
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1322
        $self->include_model(
1323
            MyModel2 => [
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1324
                'book',
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-24
1325
                {class => 'Company', name => 'company'}
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1326
            ]
1327
        );
1328
    }
1329

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

            
1332
    use strict;
1333
    use warnings;
1334

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

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

            
1339
    use strict;
1340
    use warnings;
1341

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

            
1344
    sub insert {
1345
        my ($self, $param) = @_;
1346
        
1347
        return $self->SUPER::insert(param => $param);
1348
    }
1349

            
1350
    sub list { shift->select; }
1351

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

            
1354
    use strict;
1355
    use warnings;
1356

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

            
1359
    sub insert {
1360
        my ($self, $param) = @_;
1361
        
1362
        return $self->SUPER::insert(param => $param);
1363
    }
1364

            
1365
    sub list { shift->select; }
1366
}
1367
$dbi = MyDBI4->connect($NEW_ARGS->{0});
1368
$dbi->execute("create table book (title, author)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1369
$model = $dbi->model('book');
1370
$model->insert({title => 'a', author => 'b'});
1371
is_deeply($model->list->fetch_hash_all, [{title => 'a', author => 'b'}], 'basic');
removed experimental base_ta...
Yuki Kimoto authored on 2011-02-15
1372
$dbi->execute("create table company (name)");
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1373
$model = $dbi->model('company');
1374
$model->insert({name => 'a'});
1375
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'basic');
1376

            
1377
{
1378
     package MyDBI5;
1379

            
1380
    use strict;
1381
    use warnings;
1382

            
1383
    use base 'DBIx::Custom';
1384

            
1385
    sub connect {
1386
        my $self = shift->SUPER::connect(@_);
1387
        
1388
        $self->include_model('MyModel4');
1389
    }
1390
}
1391
$dbi = MyDBI5->connect($NEW_ARGS->{0});
1392
$dbi->execute("create table company (name)");
1393
$model = $dbi->model('company');
1394
$model->insert({name => 'a'});
1395
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'include all model');
1396
$model = $dbi->model('book');
1397
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'include all model');
1398

            
add DBIx::Custom::Model fore...
Yuki Kimoto authored on 2011-02-21
1399
test 'primary_key';
1400
use MyDBI1;
1401
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1402
$model = $dbi->model('book');
1403
$model->primary_key(['id', 'number']);
1404
is_deeply($model->primary_key, ['id', 'number']);
1405

            
add DBIx::Custom::Model colu...
Yuki Kimoto authored on 2011-02-21
1406
test 'columns';
1407
use MyDBI1;
1408
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1409
$model = $dbi->model('book');
1410
$model->columns(['id', 'number']);
1411
is_deeply($model->columns, ['id', 'number']);
add feture. all model class ...
Yuki Kimoto authored on 2011-02-18
1412

            
add experimental setup_model...
Yuki Kimoto authored on 2011-02-21
1413
test 'setup_model';
1414
use MyDBI1;
1415
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1416
$dbi->execute('create table book (id)');
1417
$dbi->execute('create table company (id, name);');
1418
$dbi->execute('create table test (id, name, primary key (id, name));');
1419
$dbi->setup_model;
1420
is_deeply($dbi->model('book')->columns, ['id']);
1421
is_deeply($dbi->model('company')->columns, ['id', 'name']);
add experimental update_at()...
Yuki Kimoto authored on 2011-02-21
1422

            
1423
test 'delete_at';
1424
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1425
$dbi->execute($CREATE_TABLE->{1});
1426
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1427
$dbi->delete_at(
1428
    table => 'table1',
1429
    primary_key => ['key1', 'key2'],
1430
    where => [1, 2],
1431
);
1432
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1433

            
1434
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1435
$dbi->delete_at(
1436
    table => 'table1',
1437
    primary_key => 'key1',
1438
    where => 1,
1439
);
1440
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1441

            
1442
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1443
$dbi->delete_at(
1444
    table => 'table1',
1445
    primary_key => ['key1', 'key2'],
1446
    param => {key1 => 1, key2 => 2},
1447
);
1448
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1449

            
1450

            
1451
test 'update_at';
1452
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1453
$dbi->execute($CREATE_TABLE->{1});
1454
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1455
$dbi->update_at(
1456
    table => 'table1',
1457
    primary_key => ['key1', 'key2'],
1458
    where => [1, 2],
1459
    param => {key3 => 4}
1460
);
1461
is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
1462
is($dbi->select(table => 'table1')->fetch_hash_first->{key2}, 2);
1463
is($dbi->select(table => 'table1')->fetch_hash_first->{key3}, 4);
1464

            
1465
$dbi->delete_all(table => 'table1');
1466
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1467
$dbi->update_at(
1468
    table => 'table1',
1469
    primary_key => 'key1',
1470
    where => 1,
1471
    param => {key3 => 4}
1472
);
1473
is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
1474
is($dbi->select(table => 'table1')->fetch_hash_first->{key2}, 2);
1475
is($dbi->select(table => 'table1')->fetch_hash_first->{key3}, 4);
1476

            
1477
$dbi->delete_all(table => 'table1');
1478
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1479
$dbi->update_at(
1480
    table => 'table1',
1481
    primary_key => ['key1', 'key2'],
1482
    param => {key1 => 1, key2 => 2, key3 => 4},
1483
);
1484
is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
1485
is($dbi->select(table => 'table1')->fetch_hash_first->{key2}, 2);
1486
is($dbi->select(table => 'table1')->fetch_hash_first->{key3}, 4);
1487

            
1488

            
1489
test 'select_at';
1490
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1491
$dbi->execute($CREATE_TABLE->{1});
1492
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1493
$result = $dbi->select_at(
1494
    table => 'table1',
1495
    primary_key => ['key1', 'key2'],
1496
    where => [1, 2]
1497
);
1498
$row = $result->fetch_hash_first;
1499
is($row->{key1}, 1);
1500
is($row->{key2}, 2);
1501
is($row->{key3}, 3);
1502

            
1503
$dbi->delete_all(table => 'table1');
1504
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1505
$result = $dbi->select_at(
1506
    table => 'table1',
1507
    primary_key => 'key1',
1508
    where => 1,
1509
);
1510
$row = $result->fetch_hash_first;
1511
is($row->{key1}, 1);
1512
is($row->{key2}, 2);
1513
is($row->{key3}, 3);
1514

            
1515
$dbi->delete_all(table => 'table1');
1516
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1517
$result = $dbi->select_at(
1518
    table => 'table1',
1519
    primary_key => ['key1', 'key2'],
1520
    param => {key1 => 1, key2 => 2},
1521
);
1522
$row = $result->fetch_hash_first;
1523
is($row->{key1}, 1);
1524
is($row->{key2}, 2);
1525
is($row->{key3}, 3);
1526

            
1527

            
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1528
test 'columns';
1529
use MyDBI1;
1530
$dbi = MyDBI1->connect($NEW_ARGS->{0});
1531
$model = $dbi->model('book');
1532
$model->relation({'book.id' => 'company.id'});
1533
is_deeply($model->relation, {'book.id' => 'company.id'});
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1534

            
1535

            
1536
test 'model delete_at';
1537
{
1538
    package MyDBI6;
1539
    
1540
    use base 'DBIx::Custom';
1541
    
1542
    sub connect {
1543
        my $self = shift->SUPER::connect(@_);
1544
        
1545
        $self->include_model('MyModel5');
1546
        
1547
        return $self;
1548
    }
1549
}
1550
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1551
$dbi->execute($CREATE_TABLE->{1});
1552
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1553
$dbi->model('table1')->delete_at(where => [1, 2]);
1554
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-24
1555
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1556
$dbi->model('table1_1')->delete_at(where => [1, 2]);
1557
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
1558
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1559
$dbi->model('table1_3')->delete_at(where => [1, 2]);
1560
is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-21
1561

            
1562

            
1563
test 'update_at';
1564
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1565
$dbi->execute($CREATE_TABLE->{1});
1566
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1567
$dbi->model('table1')->update_at(
1568
    where => [1, 2],
1569
    param => {key3 => 4}
1570
);
1571
$result = $dbi->model('table1')->select;
1572
$row = $result->fetch_hash_first;
1573
is($row->{key1}, 1);
1574
is($row->{key2}, 2);
1575
is($row->{key3}, 4);
1576

            
1577
test 'select_at';
1578
$dbi = MyDBI6->connect($NEW_ARGS->{0});
1579
$dbi->execute($CREATE_TABLE->{1});
1580
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1581
$result = $dbi->model('table1')->select_at(where => [1, 2]);
1582
$row = $result->fetch_hash_first;
1583
is($row->{key1}, 1);
1584
is($row->{key2}, 2);
1585
is($row->{key3}, 3);
DBIx::Custom::Model select()...
Yuki Kimoto authored on 2011-02-22
1586

            
1587

            
1588
test 'model select relation';
1589
{
1590
    package MyDBI7;
1591
    
1592
    use base 'DBIx::Custom';
1593
    
1594
    sub connect {
1595
        my $self = shift->SUPER::connect(@_);
1596
        
1597
        $self->include_model('MyModel6');
1598
        
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
1599
        
DBIx::Custom::Model select()...
Yuki Kimoto authored on 2011-02-22
1600
        return $self;
1601
    }
1602
}
1603
$dbi = MyDBI7->connect($NEW_ARGS->{0});
1604
$dbi->execute($CREATE_TABLE->{0});
1605
$dbi->execute($CREATE_TABLE->{2});
1606
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1607
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
1608
$result = $dbi->model('table1')->select(column => ['key3'], where => {'table1.key1' => 1});
1609
is($result->fetch_hash_first->{key3}, 3);
1610
$result = $dbi->model('table1')->select_at(column => ['key3'], where => [1]);
1611
is($result->fetch_hash_first->{key3}, 3);
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-24
1612
$dbi->execute('create table table3 (key1);');
1613
$dbi->model('table3')->insert(param => {key1 => 'a'});
1614
is_deeply($dbi->model('table3')->select(where => {key1 => 'a'})->fetch_hash_first,
1615
   {key1 => 'A'});
add experimental DBIx::Custo...
Yuki Kimoto authored on 2011-02-22
1616

            
1617
test 'column_clause';
1618
$dbi = MyDBI7->connect($NEW_ARGS->{0});
1619
$dbi->execute($CREATE_TABLE->{0});
1620
$dbi->execute($CREATE_TABLE->{2});
1621
$dbi->setup_model;
1622
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
1623
$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
1624
$model = $dbi->model('table1');
1625
$result = $model->select(column => $model->column_clause, where => {'table1.key1' => 1});
1626
is_deeply($result->fetch_hash_first, {key1 => 1, key2 => 2});
1627
$result = $model->select(column => $model->column_clause(remove => ['key1']), where => {'table1.key1' => 1});
1628
is_deeply($result->fetch_hash_first, {key2 => 2});
1629
$result = $model->select(column => $model->column_clause(add => ['key3']), where => {'table1.key1' => 1});
1630
is_deeply($result->fetch_hash_first, {key1 => 1, key2 => 2, key3 => 3});
1631

            
1632