#!/usr/bin/perl
# Top level testing for JSAN::Client itself
use strict;
BEGIN {
$| = 1;
$^W = 1;
}
use Test::More tests => 17;
use File::Spec::Functions ':ALL';
use Scalar::Util ();
use File::Remove 'remove';
use LWP::Online 'online';
BEGIN { remove( \1, 'temp' ) if -e 'temp'; }
END { remove( \1, 'temp' ) if -e 'temp'; }
use JSAN::Client {
mirror_local => 'temp',
prune => 1
};
# Create and/or clear the test directory
my $testdir = catdir( curdir(), '06_client' );
remove \1, $testdir if -e $testdir;
ok( ! -e $testdir, "Test directory '$testdir' does not exist" );
ok( mkdir($testdir), "Create test directory '$testdir'" );
END {
remove \1, $testdir if -e $testdir;
}
my @requires = map { catfile(@$_) } (
[ 'Display.js' ],
[ 'Display', 'Swap.js' ],
[ 'JSAN.js' ],
);
ok( defined &Scalar::Util::blessed, 'Scalar::Util has blessed function' );
#####################################################################
# Test constructor and accessors
my $Client = JSAN::Client->new(
prefix => $testdir,
verbose => 0,
);
isa_ok( $Client, 'JSAN::Client' );
is( $Client->prefix, $testdir, '->prefix returns the expected path' );
is( $Client->verbose, '', '->verbose returns false as expected' );
#####################################################################
# Bad Params to JSAN::Client
eval {
JSAN::Client->new( 'lib' );
};
like( $@, qr/Odd number of params/, '->new with one param dies correctly' );
#####################################################################
# Install a known library
SKIP: {
skip( "Skipping online tests", 10 ) unless online();
is( $Client->install_library('Display.Swap'), 1,
'->install_library for known-good library returns true' );
foreach my $file ( @requires ) {
my $path = catfile( $testdir, $file );
ok( -f $path, "Library file '$file' was installed where expected" );
}
######################################################################
# Install a known library
# Reset test dir
File::Remove::remove \1, $testdir if -e $testdir;
ok( ! -e $testdir, "Test directory '$testdir' does not exist" );
ok( mkdir($testdir), "Create test directory '$testdir'" );
# Install matching distribution
is( $Client->install_distribution('Display.Swap'), 1,
'->install_disribution for known-good distribution returns true' );
foreach my $file ( @requires ) {
my $path = catfile( $testdir, $file );
ok( -f $path, "Library file '$file' was installed where expected" );
}
}
exit(0);