The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 15;

require_ok('HTML::Laundry');
use HTML::Laundry::Rules;
my $rules = new HTML::Laundry::Rules;

my $l;
$l = HTML::Laundry->new({ notidy => 1 });
is( $l->clean(q{<a href="/foo.html">foo</a>}), q{<a href="/foo.html">foo</a>},
    q{Not providing empty base_uri doesn't rebase URIs});
$l = HTML::Laundry->new({ notidy => 1, base_uri => ''});
is( $l->clean(q{<a href="/foo.html">foo</a>}), q{<a href="/foo.html">foo</a>},
    q{Passing in empty base_uri doesn't rebase URIs});
$l = HTML::Laundry->new({ notidy => 1, base_uri => '/foo/'});
is( $l->clean(q{<a href="/foo.html">foo</a>}), q{<a href="/foo.html">foo</a>},
    q{Passing in relative base_uri doesn't rebase URIs});
$l = HTML::Laundry->new({ notidy => 1, base_uri => q{http://example.com/}});
is( $l->clean(q{<a href="/foo.html">foo</a>}),
    q{<a href="http://example.com/foo.html">foo</a>},
    q{Passing URI with trailing slash rebases URIs (1/2)});
is( $l->clean(q{<a href="foo.html">foo</a>}),
    q{<a href="http://example.com/foo.html">foo</a>},
    q{Passing URI with trailing slash rebases URIs (2/2)});
$l = HTML::Laundry->new({ notidy => 1, base_uri => q{http://example.com}});
is( $l->clean(q{<a href="foo.html">foo</a>}),
    q{<a href="http://example.com/foo.html">foo</a>},
    q{Passing URI without trailing slash rebases URIs (1/2)});
is( $l->clean(q{<a href="foo.html">foo</a>}),
    q{<a href="http://example.com/foo.html">foo</a>},
    q{Passing URI without trailing slash rebases URIs (2/2)});
$l = HTML::Laundry->new({ notidy => 1, base_uri => q{http://example.com:8080/bar/}});
is( $l->clean(q{<a href="foo.html">foo</a>}),
    q{<a href="http://example.com:8080/bar/foo.html">foo</a>},
    q{Passing URI with port and directory rebases URIs (1/2)});
is( $l->clean(q{<a href="foo.html">foo</a>}),
    q{<a href="http://example.com:8080/bar/foo.html">foo</a>},
    q{Passing URI with port and directory rebases URIs (2/2)});
is( $l->base_uri, q{http://example.com:8080/bar/}, 'base_uri method works as getter');
is( $l->base_uri(q{http://www.example.org}), q{http://www.example.org}, 
    q{base_uri method returns value given when used as setter} );
is( $l->clean(q{<a href="foo.html">foo</a>}),
    q{<a href="http://www.example.org/foo.html">foo</a>},
    q{base_uri method's new value is picked up for rebasing} );
ok( ! $l->base_uri(''), 'Passing empty string to base_uri returns false...');
is( $l->clean(q{<a href="foo.html">foo</a>}),
    q{<a href="foo.html">foo</a>},
    q{...and unsets base_uri} );