add error message for unsupported part extraction and diffing
[dbsrgits/DBIx-Class.git] / t / sqlmaker / op_dt.t
CommitLineData
5e6893d4 1use strict;
2use warnings;
3
4use Test::More;
5
6use lib qw(t/lib);
7use DBIC::SqlMakerTest;
8use DateTime;
9
10use_ok('DBICTest');
11
12my $schema = DBICTest->init_schema();
13
14my $sql_maker = $schema->storage->sql_maker;
15
16my $date = DateTime->new(
17 year => 2010,
18 month => 12,
19 day => 14,
20 hour => 12,
21 minute => 12,
22 second => 12,
23);
24
25my $date2 = $date->clone->set_day(16);
26
27is_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
36is_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
51is_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
77done_testing;