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

use strict;
use Test::More tests => 5;
use Net::CampaignMonitor;
use Params::Util qw{_STRING};

my $api_key = '';
my $cm;

if ( Params::Util::_STRING($ENV{'CAMPAIGN_MONITOR_API_KEY'}) ) {
  $api_key = $ENV{'CAMPAIGN_MONITOR_API_KEY'};
  $cm = Net::CampaignMonitor->new({
    secure  => 1,
    api_key => $api_key,
    domain => (defined($ENV{'CAMPAIGN_MONITOR_DOMAIN'}) ?
      $ENV{'CAMPAIGN_MONITOR_DOMAIN'} : 'api.createsend.com'),
  });
}

SKIP: {
	skip 'Invalid API Key supplied', 5 if $api_key eq '';

	my $client_id = $cm->account_clients()->{response}->[0]->{ClientID};

	my %template = (
		'ZipFileURL'    => 'http://media.netcomm.com.au/public/assets/file/0005/70835/images.zip',
		'HtmlPageURL'   => 'http://media.netcomm.com.au/public/assets/file/0003/70833/full_width.html',
		'ScreenshotURL' => 'http://media.netcomm.com.au/public/assets/image/0020/46640/MyZone_Web_banner.jpg',
		'Name'          => 'Template Two',
		'clientid'      => $client_id
	);

	my $created_template = $cm->templates(%template);

	ok( $created_template->{code} eq '201', 'Created template' );

	my $template_id = $created_template->{'response'};

	my %updated_template = (
		'ZipFileURL'        => 'http://media.netcomm.com.au/public/assets/file/0005/70835/images.zip',
		'HtmlPageURL'       => 'http://media.netcomm.com.au/public/assets/file/0003/70833/full_width.html',
		'ScreenshotURL'     => 'http://media.netcomm.com.au/public/assets/image/0020/46640/MyZone_Web_banner.jpg',
		'Name'              => 'Template Three',
		'templateid'        => $template_id,
	);

	ok( $cm->templates($template_id)->{code} eq '200', 'Got template' );
	ok( $cm->templates(%updated_template)->{code} eq '200', 'Updated template' );
	ok( $cm->templates_delete($template_id)->{code} eq '200', 'Deleted template' );

  # Create the template to be used for a template-based campaign
  my %template_for_campaign = (
    'HtmlPageURL'   => 'https://dl.dropbox.com/u/884452/cm/perl/template.html',
    'Name'          => 'Template for Perl Wrapper Test',
    'clientid'      => $client_id
  );
  my $created_template_for_campaign = $cm->templates(%template_for_campaign);
  ok( $created_template_for_campaign->{code} eq '201', 'Created template for use in campaign' );
}