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;
my $db = Mock::Basic->new({dbh => $dbh});
$db->setup_test_db;

subtest 'insert using txn_scope' => sub {
    my $warning;
    local $SIG{__WARN__} = sub { $warning = $_[0] };
    {
        my $guard = $db->txn_scope();
        my $row = $db->insert('mock_basic',{
            id   => 1,
            name => 'perl',
        });
        isa_ok $row, 'Teng::Row';
        is $row->name, 'perl';
        $guard->rollback;
    }

    if (! ok ! $warning, "no warnings received") {
        diag "got $warning";
    }
};

subtest 'insert using txn_scope (and let the guard fire)' => sub {
    my $warning;
    local $SIG{__WARN__} = sub { $warning = $_[0] };
    {
        my $guard = $db->txn_scope();
        my $row = $db->insert('mock_basic',{
            id   => 1,
            name => 'perl',
        });
        isa_ok $row, 'Teng::Row';
        is $row->name, 'perl';
    }

    like $warning, qr{Guard created at \.?\/?t/002_common/024_txn_scope\.t line 32};
};

done_testing;