The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
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;

Mock::Basic->insert('mock_basic',{
    id   => 1,
    name => 'perl',
});

use DBIx::Skinny::Profiler;
Mock::Basic->_attributes->{profiler} = DBIx::Skinny::Profiler->new;

subtest 'where condition in' => sub {
    Mock::Basic->search('mock_basic',{
        name => [],
    });
    is +Mock::Basic->profiler->query_log->[0] , 'SELECT id, name, delete_fg FROM mock_basic WHERE (1=0) :binds ';
    Mock::Basic->profiler->reset;

    Mock::Basic->search('mock_basic',{
        name => [qw/perl/],
    });
    is +Mock::Basic->profiler->query_log->[0] , 'SELECT id, name, delete_fg FROM mock_basic WHERE (name IN (?)) :binds perl';
    Mock::Basic->profiler->reset;

    Mock::Basic->search('mock_basic',{
        name => { in => [] },
    });
    is +Mock::Basic->profiler->query_log->[0] , 'SELECT id, name, delete_fg FROM mock_basic WHERE (1=0) :binds ';
    Mock::Basic->profiler->reset;

    Mock::Basic->search('mock_basic',{
        name => { in => [qw/perl/] },
    });
    is +Mock::Basic->profiler->query_log->[0] , 'SELECT id, name, delete_fg FROM mock_basic WHERE (name IN (?)) :binds perl';
    Mock::Basic->profiler->reset;

    Mock::Basic->search('mock_basic',{
        name => { 'not in' => [qw/perl/] },
    });
    is +Mock::Basic->profiler->query_log->[0] , 'SELECT id, name, delete_fg FROM mock_basic WHERE (name NOT IN (?)) :binds perl';
    Mock::Basic->profiler->reset;

    Mock::Basic->search('mock_basic',{
        name => { 'not in' => [] },
    });
    is +Mock::Basic->profiler->query_log->[0] , 'SELECT id, name, delete_fg FROM mock_basic WHERE (1=1) :binds ';
    Mock::Basic->profiler->reset;
};

done_testing;