#!/usr/bin/perl -w
# vim:filetype=perl

# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

use strict;
use Test::More;
use Test::Exception;
use Test::SQL::Translator qw(maybe_plan);

use Data::Dumper;
use FindBin qw/$Bin/;

# Testing 1,2,3,4...
#=============================================================================

BEGIN {
  maybe_plan(6, 'SQL::Translator::Parser::XML::SQLFairy', 'Template 2.20', 'Test::Differences');
}
use Test::Differences;

use SQL::Translator;
use SQL::Translator::Producer::TTSchema;

# Main test. Template whole schema and test tt_vars
{
  my $obj;
  $obj = SQL::Translator->new(
    show_warnings => 0,
    from          => "XML-SQLFairy",
    filename      => "$Bin/data/xml/schema.xml",
    to            => "TTSchema",
    producer_args => {
      ttfile  => "$Bin/data/template/basic.tt",
      tt_vars => {
        foo   => 'bar',
        hello => 'world',
      },
    },
  );
  my $out;
  lives_ok { $out = $obj->translate; } "Translate ran";
  ok $out ne "", "Produced something!";
  eq_or_diff $out, do { local (@ARGV, $/) = "$Bin/data/template/testresult_basic.txt"; <> }, "Output looks right";
}

# Test passing of Template config
{
  my $tmpl = q{
    [%- FOREACH table = schema.get_tables %]
    Table: $table
    [%- END %]};
  my $obj;
  $obj = SQL::Translator->new(
    show_warnings => 0,
    from          => "XML-SQLFairy",
    filename      => "$Bin/data/xml/schema.xml",
    to            => "TTSchema",
    producer_args => {
      ttfile  => \$tmpl,
      tt_conf => {
        INTERPOLATE => 1,
      },
      tt_vars => {
        foo   => 'bar',
        hello => 'world',
      },
    },
  );
  my $out;
  lives_ok { $out = $obj->translate; } "Translate ran";
  ok $out ne "", "Produced something!";
  local $/ = undef;    # slurp
  eq_or_diff $out, q{
    Table: Basic
    Table: Another}
      , "Output looks right";
}
