The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use t::Utils;
use Mock::Basic;
use Test::More;

my $dbh = t::Utils->setup_dbh;
Mock::Basic->set_dbh($dbh);
Mock::Basic->setup_test_db;

subtest 'insert mode' => sub {
    my ($cols, $column_list) = Mock::Basic->_set_columns(+{id => 1, name => 'nekokak'}, 1);

    is_deeply $cols, +['?','?'];
    is_deeply $column_list, [
        [
            'name',
            'nekokak',
        ],
        [
            'id',
            1,
        ]
    ];
    done_testing;
};

subtest 'insert mode / scalarref' => sub {
    my ($cols, $column_list) = Mock::Basic->_set_columns(+{id => 1, name => \'NOW ()'}, 1);

    is_deeply $cols, +[
        'NOW ()',
        '?',
    ];
    is_deeply $column_list, [
        [
            'id',
            1,
        ]
    ];
    done_testing;
};

subtest 'update mode' => sub {
    my ($cols, $column_list) = Mock::Basic->_set_columns(+{id => 1, name => 'nekokak'}, 0);

    is_deeply $cols, +[
        '`name` = ?',
        '`id` = ?',
    ];
    is_deeply $column_list, [
        [
            'name',
            'nekokak',
        ],
        [
            'id',
            1,
        ]
    ];
    done_testing;
};

subtest 'update mode / scalarref' => sub {
    my ($cols, $column_list) = Mock::Basic->_set_columns(+{id => 1, name => \'NOW()'}, 0);

    is_deeply $cols, +[
        '`name` = NOW()',
        '`id` = ?',
    ];
    is_deeply $column_list, [
        [
            'id',
            1,
        ]
    ];
    done_testing;
};

done_testing;