
use strict;
use warnings;
use Test::More;

use lib "lib";
use Test::DBIC::ExpectedQueries::Query;


note "*** SQL queries parsed correctly";

sub test_parse {
    my ($sql, $operation, $table) = @_;
    local $Test::Builder::Level = $Test::Builder::Level + 1;

    my $query = Test::DBIC::ExpectedQueries::Query->new({ sql => $sql });
    is($query->operation, $operation, "Correct ->operation for $operation");
    is($query->table, $table, "Correct ->table for $operation");
}

note "SELECT";
test_parse("Select * from file", "select", "file");
test_parse("Select * from metric_value", "select", "metric_value");
test_parse("Select * from 'file'", "select", "file");

note "INSERT";
test_parse("insert into file ('id') values (1)", "insert", "file");
test_parse("insert into `file` ('id') values (1)", "insert", "file");

note "UPDATE";
test_parse("update file set id = 2 where id = 4", "update", "file");
test_parse('update "file" set id = 2 where id = 4', "update", "file");

note "DELETE";
test_parse("delete from other_db.file where id = 4", "delete", "other_db.file");
test_parse("delete from 'other_db.file' where id = 4", "delete", "other_db.file");



done_testing();
