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

use strict;
use warnings;
use Test::More;
use WWW::Lovefilm::API;
$|=1;

my %env = map { $_ => $ENV{"WWW_LOVEFILM_API__".uc($_)} } qw/
	consumer_key
	consumer_secret
	access_token
	access_secret
	user_id
/;

if( ! $env{consumer_key} ){
  plan skip_all => 'Make sure that ENV vars are set for consumer_key, etc';
  exit;
}
eval "use XML::Simple";
if( $@ ){
  plan skip_all => 'XML::Simple required for testing POX content',
  exit;
}
plan tests => 30;

my $lovefilm = WWW::Lovefilm::API->new({
	%env,
	content_filter => sub { XMLin(@_) },
});

sub check_submit {
  my $lovefilm = shift;
  my $keys = shift;
  my $options = shift || {};
  my $label = sprintf '[%s] ', join('/', @{ $lovefilm->_levels });
  my $uid = $lovefilm->user_id;
  $label =~ s/$uid/<UID>/g;
  sleep 1;   # avoid 'Over queries per second limit' error
  ok( $lovefilm->Get(%$options), "$label got data" );
  is( $lovefilm->content_error, undef, "$label no error" );
  is( join(',', sort keys %{$lovefilm->content || {}}), $keys, "$label keys match" );
}


$lovefilm->REST->catalog->title('18704531');
check_submit( $lovefilm, 'average_rating,box_art,category,id,link,release_year,runtime,title' );

$lovefilm->REST->Users;
check_submit( $lovefilm, 'can_instant_watch,first_name,last_name,link,nickname,preferred_formats,user_id' );

$lovefilm->REST->users->at_home;
check_submit( $lovefilm, 'at_home_item,number_of_results,results_per_page,start_index,url_template' );

$lovefilm->REST->Users->Queues;
check_submit( $lovefilm, 'link' );

$lovefilm->REST->Users->Queues->Disc;
check_submit( $lovefilm, 'etag,link,number_of_results,queue_item,results_per_page,start_index,url_template' );

$lovefilm->REST->Users->Queues->Instant;
check_submit( $lovefilm, 'etag,link,number_of_results,queue_item,results_per_page,start_index,url_template' );

$lovefilm->REST('http://openapi.lovefilm.com/catalog/titles/movies/18704531');
check_submit( $lovefilm, 'average_rating,box_art,category,id,link,release_year,runtime,title' );

my $uid = $lovefilm->user_id;
$lovefilm->REST("http://openapi.lovefilm.com/users/$uid/queues/instant");
check_submit( $lovefilm, 'etag,link,number_of_results,queue_item,results_per_page,start_index,url_template' );