The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use lib 't/lib';

use Fey::Test;
use Test::More;

use Fey::Literal;
use Fey::SQL;

my $s   = Fey::Test->mock_test_schema_with_fks();
my $dbh = Fey::Test->mock_dbh();

{
    my $q = Fey::SQL->new_select()->select( $s->table('User') );

    eval { $q->limit() };
    like(
        $@, qr/0 parameters/,
        'at least one parameter is required for limit()'
    );
}

{
    my $q = Fey::SQL->new_select()->select( $s->table('User') );

    $q->limit(10);

    is(
        $q->limit_clause($dbh), 'LIMIT 10',
        'simple limit clause'
    );
}

{
    my $q = Fey::SQL->new_select()->select( $s->table('User') );

    $q->limit( 10, 20 );

    is(
        $q->limit_clause($dbh), 'LIMIT 10 OFFSET 20',
        'limit clause with offset'
    );
}

{
    my $q = Fey::SQL->new_select()->select( $s->table('User') );

    $q->limit( undef, 20 );

    is(
        $q->limit_clause($dbh), 'OFFSET 20',
        'limit clause with offset'
    );
}

done_testing();