App-SpamcupNG
view release on metacpan or search on metacpan
t/summary.t view on Meta::CPAN
use warnings;
use strict;
use Test::More tests => 23;
use App::SpamcupNG::Summary;
my $instance = new_ok('App::SpamcupNG::Summary');
can_ok( $instance,
qw(new as_text tracking_url to_text set_receivers _fields) );
is( ref( $instance->_fields ),
'ARRAY', '_fields method returns the expected reference type' );
my @expected_fields = sort( (
'tracking_id', 'mailer', 'content_type', 'age',
'age_unit', 'contacts', 'receivers', 'charset'
) );
is_deeply( $instance->_fields, \@expected_fields,
'fields returns all expected members' );
note('summary with nothing set');
is(
$instance->as_text,
'age_unit=not available,charset=not available,content_type=not available,mailer=not available,tracking_id=not available,age=not available,receivers=(),contacts=()',
'as_text returns the expected empty instance'
);
is(
$instance->to_text('mailer'),
'not available',
'to_text returns the expected string'
);
is( $instance->to_text('contacts'),
'()', 'to_text returns the expected string' );
my $tracking_id = 'z6738604873z6ba5c9152db3f6a67929aec945c60dddz';
ok( $instance->set_tracking_id($tracking_id), 'set tracking ID' );
is(
$instance->tracking_url,
"https://www.spamcop.net/sc?id=$tracking_id",
'tracking URL is the expected'
);
my $mailer = 'Foobar Mailer';
ok( $instance->set_mailer($mailer), 'set mailer' );
is( $instance->to_text('mailer'),
$mailer, 'to_text returns the expected string' );
ok( $instance->set_content_type('text/plain'), 'set content type' );
ok( $instance->set_charset('utf-8'), 'set charset' );
ok( $instance->set_age(2), 'set age' );
ok( $instance->set_age_unit('hour'), 'set age unit' );
my $emails_ref = [ 'john@gmail.com', 'doe@gmail.com' ];
my $report_id = 7164185194;
my @receivers = map { [ $_, ++$report_id ] } @{$emails_ref};
ok( $instance->set_receivers( \@receivers ), 'set receivers' );
is(
$instance->to_text('receivers'),
'receivers=((john@gmail.com,7164185195);(doe@gmail.com,7164185196))',
'to_text returns the expected string'
);
ok( $instance->set_contacts($emails_ref), 'set contacts' );
is(
$instance->to_text('contacts'),
'(john@gmail.com;doe@gmail.com)',
'to_text returns the expected string'
);
note('summary with everything set');
is(
$instance->as_text,
"age_unit=hour,charset=utf-8,content_type=text/plain,mailer=Foobar Mailer,tracking_id=$tracking_id,age=2,receivers=((john\@gmail.com,7164185195);(doe\@gmail.com,7164185196)),contacts=(john\@gmail.com;doe\@gmail.com)",
'as_text returns the expected string'
);
note('summary with reports with age less than one hour');
$instance->set_age(0);
is(
$instance->as_text,
"age_unit=hour,charset=utf-8,content_type=text/plain,mailer=Foobar Mailer,tracking_id=$tracking_id,age=0,receivers=((john\@gmail.com,7164185195);(doe\@gmail.com,7164185196)),contacts=(john\@gmail.com;doe\@gmail.com)",
'as_text returns the expected string'
);
# undoing
$instance->set_age(2);
note('summary with missing sent reports ID');
@receivers = ();
@receivers = map { [ $_, undef ] } @{$emails_ref};
ok( $instance->set_receivers( \@receivers ), 'set receivers' );
is(
$instance->as_text,
"age_unit=hour,charset=utf-8,content_type=text/plain,mailer=Foobar Mailer,tracking_id=$tracking_id,age=2,receivers=((john\@gmail.com,not available);(doe\@gmail.com,not available)),contacts=(john\@gmail.com;doe\@gmail.com)",
'as_text returns the expected string'
);
# vim: filetype=perl
( run in 1.864 second using v1.01-cache-2.11-cpan-98e64b0badf )