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

use Test::More;

BEGIN {
    use_ok( 'SQL::Abstract::Query::Insert' );
    use_ok( 'SQL::Abstract::Query' );
}

my $query = SQL::Abstract::Query->new();

{
    my $insert = $query->insert('users', ['foo']);
    is(
        $insert->sql(),
        'INSERT INTO "users" ( "foo") VALUES ( ? )',
        'basic insert',
    );

    is_deeply(
        [ $insert->original_values() ],
        ['foo'],
        'original values is correct',
    );

    is_deeply(
        [ $insert->values({foo=>32}) ],
        [32],
        'values is correct',
    );
}

{
    my ($sql, @bind_values) = $query->insert('users', {foo => 32});
    is(
        $sql,
        'INSERT INTO "users" ( "foo") VALUES ( ? )',
        'SQL for non-OO insert are correct',
    );

    is_deeply(
        \@bind_values,
        [32],
        'bind values for non-OO insert are correct',
    );
}

done_testing;