Commit | Line | Data |
5e6893d4 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More; |
5 | |
6 | use lib qw(t/lib); |
7 | use DBIC::SqlMakerTest; |
8 | use DateTime; |
9 | |
10 | use_ok('DBICTest'); |
11 | |
12 | my $schema = DBICTest->init_schema(); |
13 | |
14 | my $sql_maker = $schema->storage->sql_maker; |
15 | |
16 | my $date = DateTime->new( |
17 | year => 2010, |
18 | month => 12, |
19 | day => 14, |
20 | hour => 12, |
21 | minute => 12, |
22 | second => 12, |
23 | ); |
24 | |
25 | my $date2 = $date->clone->set_day(16); |
26 | |
27 | is_same_sql_bind ( |
28 | \[ $sql_maker->select ('artist', '*', { 'artist.when_began' => { -dt => $date } } ) ], |
29 | "SELECT * |
30 | FROM artist |
31 | WHERE artist.when_began = ? |
32 | ", |
33 | [['artist.when_began', '2010-12-14 12:12:12']], |
34 | ); |
35 | |
36 | is_same_sql_bind ( |
37 | \[ $sql_maker->update ('artist', |
38 | { 'artist.when_began' => { -dt => $date } }, |
39 | { 'artist.when_ended' => { '<' => { -dt => $date2 } } }, |
40 | ) ], |
41 | "UPDATE artist |
42 | SET artist.when_began = ? |
43 | WHERE artist.when_ended < ? |
44 | ", |
45 | [ |
46 | ['artist.when_began', '2010-12-14 12:12:12'], |
47 | ['artist.when_ended', '2010-12-16 12:12:12'], |
48 | ], |
49 | ); |
50 | |
51 | is_same_sql_bind ( |
52 | \[ $sql_maker->select ('artist', '*', { |
53 | -and => [ |
54 | { -op => [ '=', 12, { -dt_month => { -ident => 'artist.when_began' } } ] }, |
55 | { -op => [ '=', 2010, { -dt_get => [year => \'artist.when_began'] } ] }, |
56 | { -op => [ '=', 14, { -dt_get => [day_of_month => \'artist.when_began'] } ] }, |
c9700c1c |
57 | { -op => [ '=', 10, { -dt_diff => [second => { -ident => 'artist.when_began' }, \'artist.when_ended'] } ] }, |
5e6893d4 |
58 | ] |
59 | } ) ], |
60 | "SELECT * |
61 | FROM artist |
62 | WHERE ( ( |
c9700c1c |
63 | ( ? = STRFTIME('%m', artist.when_began) ) AND |
64 | ( ? = STRFTIME('%Y', artist.when_began) ) AND |
65 | ( ? = STRFTIME('%d', artist.when_began) ) AND |
66 | ( ? = ( STRFTIME('%s', artist.when_began) - STRFTIME('%s', artist.when_ended))) |
5e6893d4 |
67 | ) ) |
68 | ", |
69 | [ |
70 | ['', 12], |
71 | ['', 2010], |
72 | ['', 14], |
73 | ['', 10], |
74 | ], |
75 | ); |
76 | |
77 | done_testing; |