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

use strict;
use warnings;

use Test::More tests => 25;

use FindBin;
use Bootylicious::Timestamp;

use_ok('Bootylicious::Article');

my $article;

my $pingbacks_path = "$FindBin::Bin/article/20101010-foo.md.pingbacks";

unlink $pingbacks_path;

$article =
  Bootylicious::Article->new(path => "$FindBin::Bin/article/20101010-foo.md");
ok($article);
is $article->pingbacks->size => 0;
ok !$article->has_pingback('http://example.com/hello');
ok $article->comments_enabled;

ok $article->pingback('http://example.com/hello');
is $article->pingbacks->size => 1;
ok $article->has_pingback('http://example.com/hello');
ok -e $pingbacks_path;

unlink $pingbacks_path;

my $comment_path = "$FindBin::Bin/article/20101010-foo.md.comment";

$article->comments->size => 0;

unlink $_ for glob("$comment_path-*");

ok $article->comment(
    author  => 'foo',
    email   => 'foo@example.com',
    content => 'foo bar baz'
);
ok -e "$comment_path-1";
is $article->comments->size => 1;

ok $article->comment(
    author  => 'foo',
    email   => 'foo@example.com',
    content => 'foo bar baz'
);
ok -e "$comment_path-2";
is $article->comments->size => 2;

sleep 1;

ok $article->comment(
    author  => 'foo',
    email   => 'foo@example.com',
    content => 'foo bar baz'
);
ok -e "$comment_path-3";
is $article->comments->size => 3;

is $article->comments->first->number => 1;
is $article->comments->last->number  => 3;

unlink $_ for glob("$comment_path-2");

is $article->comments->size => 2;

ok $article->comment(
    author  => 'foo',
    email   => 'foo@example.com',
    content => 'foo bar baz'
);
ok -e "$comment_path-4";
is $article->comments->size => 3;

unlink $_ for glob("$comment_path-*");

$article =
  Bootylicious::Article->new(
    path => "$FindBin::Bin/article/20101010-no-comments.md");
ok !$article->comments_enabled;