#!/usr/bin/env perl

use strict;
use warnings;
use Test::More;
use Test::Exception;
use App::Cmd::Tester::CaptureExternal;
use JSON::XS;
use utf8;

my $pkg;
BEGIN {
    $pkg = 'Catmandu::Cmd::data';
    use_ok $pkg;
}
require_ok $pkg;

use Catmandu::CLI;

{ 
	my $result = test_app(qq|Catmandu::CLI| => [ 
		qw(data --from-importer YAML --from-file t/catmandu.yml --into-exporter JSON) 
	]);

	my $perl = decode_json($result->stdout);

	ok $perl, 'got JSON';
	is $perl->{importer}->{default}->{package} , 'YAML' , 'got data';
	is $result->error, undef, 'threw no exceptions' ;
}

{
	my $result = test_app(qq|Catmandu::CLI| => [ 
		qw(data --from-store test --from-bag data --into-exporter JSON --limit 1 --fix t/myfixes.fix) 
	]);

	my @lines = split(/\n/,$result->stdout);

	ok @lines == 1 , 'test limit';

	my $perl = decode_json($lines[0]);

	ok $perl, 'got JSON';
	is $perl->{value} , 'Sol' , 'got data';
	is $perl->{utf8_name} , 'काठमाडौं' , 'got utf8 data';
	is $result->error, undef, 'threw no exceptions' ;

}

{
	my $result = test_app(qq|Catmandu::CLI| => [ qw(delete test) ]);

	is $result->stdout, "" , 'got data';
	is $result->error, undef, 'threw no exceptions' ;
}

{
	my $result = test_app(qq|Catmandu::CLI| => [ 
		qw(data -v --from-importer CSV --from-file t/planets.csv --into-store Hash --into-bag data) 
	]);

	like $result->stderr, qr/added 4 objects/, 'imported 4 objects' ;
	is $result->error, undef, 'threw no exceptions' ;
}

done_testing 14;

