use strict;
use warnings;
#use Data::Dumper; $Data::Dumper::Indent = 1;
use Test::More tests => 24;

use Atompub::MediaType qw( media_type );
use Atompub::Util qw( is_acceptable_media_type is_allowed_category );
use XML::Atom::Service;

# is_acceptable_media_type

my $coll = XML::Atom::Collection->new;

ok   is_acceptable_media_type( $coll, media_type('entry') );
ok ! is_acceptable_media_type( $coll, 'image/png' );

$coll->accept( 'application/xml' );
ok   is_acceptable_media_type( $coll, media_type('entry') );
ok ! is_acceptable_media_type( $coll, 'image/png' );

$coll->accept( media_type('entry') );
ok   is_acceptable_media_type( $coll, media_type('entry') );
ok ! is_acceptable_media_type( $coll, 'image/png' );

$coll->accept( 'image/png' );
ok ! is_acceptable_media_type( $coll, media_type('entry') );
ok   is_acceptable_media_type( $coll, 'image/png' );

$coll->accept( 'image/*' );
ok ! is_acceptable_media_type( $coll, media_type('entry') );
ok   is_acceptable_media_type( $coll, 'image/png' );

$coll->accept( 'image/png', 'image/jpeg', 'image/gif' );
ok ! is_acceptable_media_type( $coll, media_type('entry') );
ok   is_acceptable_media_type( $coll, 'image/png' );

$coll->accept( 'image/png,image/jpeg,image/gif' );
ok ! is_acceptable_media_type( $coll, media_type('entry') );
ok   is_acceptable_media_type( $coll, 'image/png' );


# is_allowed_category

my $cat1 = XML::Atom::Category->new;
$cat1->term( 'animal' );
my $cat1_s = XML::Atom::Category->new;
$cat1_s->term( 'animal' );
$cat1_s->scheme( 'http://example.com/cats/big3' );
my $cat2 = XML::Atom::Category->new;
$cat2->term( 'vegetable' );

my $cats = XML::Atom::Categories->new;
$coll->categories( $cats );
ok is_allowed_category( $coll, $cat1 );

$cats->fixed('yes');
ok ! is_allowed_category( $coll, $cat1 );

$cats->category( $cat1 );
ok   is_allowed_category( $coll, $cat1 );
ok   is_allowed_category( $coll, $cat1_s );
ok ! is_allowed_category( $coll, $cat1, $cat2 );

$cats->category( $cat1_s );
ok ! is_allowed_category( $coll, $cat1 );
ok   is_allowed_category( $coll, $cat1_s );

$cats->category( $cat1, $cat2 );
ok is_allowed_category( $coll, $cat1, $cat2 );

$cats->category( $cat1 );
$cats->scheme( 'http://example.com/cats/big3' );
ok ! is_allowed_category( $coll, $cat1 );
ok   is_allowed_category( $coll, $cat1_s );
