The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -T

use strict;
use warnings;

use Test::Exception;
use Test::More;

use Email::ExactTarget;


eval 'use ExactTargetConfig';
$@
	? plan( skip_all => 'Local connection information for ExactTarget required to run tests.' )
	: plan( tests => 5 );

my $config = ExactTargetConfig->new();

# Create an object to communicate with Exact Target
my $exact_target = Email::ExactTarget->new( %$config );
ok(
	defined( $exact_target ),
	'Create a new Email::ExactTarget object.',
) || diag( explain( $exact_target ) );

my $response_data;
lives_ok(
	sub
	{
		$response_data = $exact_target->get_system_status();
	},
	'Retrieve system status.',
);

ok(
	defined( $response_data ),
	'The response is not empty.',
) || diag( explain( $response_data ) );

ok(
	defined( $response_data->{'StatusCode'} )
	&& defined( $response_data->{'SystemStatus'} )
	&& defined( $response_data->{'StatusMessage'} ),
	"The response is correctly formatted.",
) || diag( explain( $response_data ) );

like(
	$response_data->{'SystemStatus'} || '',
	qr/^(OK|InMaintenance|UnplannedOutage)$/,
	'The System Status value is one of the expected values.',
) || diag( explain( $response_data ) );

my $system_status = defined( $response_data->{'SystemStatus'} )
	? $response_data->{'SystemStatus'}
	: '(undef)';

diag( "System status is $system_status." );