89c4788bc639dc4b9239020cf70aca89e98495b2
[dbsrgits/DBIx-Class.git] / t / sqlmaker / limit_dialects / custom.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5 use Test::Warn;
6
7 use lib qw(t/lib);
8 use DBICTest ':DiffSQL';
9
10 # This is legacy stuff from SQL::Absract::Limit
11 # Keep it around just in case someone is using it
12
13 {
14   package DBICTest::SQLMaker::CustomDialect;
15   use base qw/DBIx::Class::SQLMaker/;
16   sub emulate_limit {
17     my ($self, $sql, $rs_attrs, $limit, $offset) = @_;
18     return sprintf ('shiny sproc ((%s), %d, %d)',
19       $sql,
20       $limit || 0,
21       $offset || 0,
22     );
23   }
24 }
25 my $s = DBICTest::Schema->connect (DBICTest->_database);
26 $s->storage->sql_maker_class ('DBICTest::SQLMaker::CustomDialect');
27
28 my $rs = $s->resultset ('CD');
29
30 warnings_exist { is_same_sql_bind (
31   $rs->search ({}, { rows => 1, offset => 3,columns => [
32       { id => 'foo.id' },
33       { 'artist.id' => 'bar.id' },
34       { bleh => \ 'TO_CHAR (foo.womble, "blah")' },
35     ]})->as_query,
36   '(
37     shiny sproc (
38       (
39         SELECT foo.id, bar.id, TO_CHAR (foo.womble, "blah")
40           FROM cd me
41       ),
42       1,
43       3
44     )
45   )',
46   [],
47   'Rownum subsel aliasing works correctly'
48  )}
49   qr/\Qthe legacy emulate_limit() mechanism inherited from SQL::Abstract::Limit has been deprecated/,
50   'deprecation warning'
51 ;
52
53 done_testing;