use warnings;
use strict;
use Test::More;
use Test::Fatal;
use Test::MockModule;
use Net::Icecast2::Admin;

my $ua_mock = Test::MockModule->new('LWP::UserAgent');
$ua_mock->mock( 'get', \&ua_mock_get );

plan tests => 3;

    my $icecast_admin = Net::Icecast2::Admin->new(
        login    => 'test_admin',
        password => 'test_password',
    );

    isa_ok( $icecast_admin, 'Net::Icecast2', 'Net::Icecast2::Admin' );

    is_deeply(
        $icecast_admin->stats,
        { message => 'stats success' },
        'Validate correct stats method',
    );

    is_deeply(
        $icecast_admin->list_mounts,
        { message => 'listmounts success' },
        'Validate correct list mounts method',
    );

done_testing;

sub ua_mock_get {
    my $ua   = shift;
    my $path = shift;
    my $head = HTTP::Headers->new;

    $path =~ /\/(stats)$/g
        and return HTTP::Response->new( 200, '', $head,
        "<request><message>$1 success</message></request>");

    $path =~ /\/(listmounts)$/g
        and return HTTP::Response->new( 200, '', $head,
        "<request><source><message>$1 success</message></source></request>");
}