use strict;
use warnings;
use Test::More;
use WWW::Google::ClientLogin;

subtest 'email must be specified' => sub {
    eval { WWW::Google::ClientLogin->new() };
    like $@, qr/Usage: /;
};

subtest 'password must be specified' => sub {
    eval { WWW::Google::ClientLogin->new(email => 'foo', password => 'bar') };
    like $@, qr/Usage: /;
};

subtest 'service must be specified' => sub {
    eval { WWW::Google::ClientLogin->new(email => 'foo', password => 'bar') };
    like $@, qr/Usage: /;
};

subtest 'new ok' => sub {
    my $client = WWW::Google::ClientLogin->new(
        email    => 'foo',
        password => 'bar',
        service  => 'ac2dm',
    );

    isa_ok $client, 'WWW::Google::ClientLogin';
    is $client->{email}, 'foo';
    is $client->{password}, 'bar';
    is $client->{service}, 'ac2dm';
    is $client->{type}, 'HOSTED_OR_GOOGLE';
    is $client->{source}, "WWW::Google::ClientLogin_$WWW::Google::ClientLogin::VERSION";
    isa_ok $client->{ua}, 'LWP::UserAgent';
};

subtest 'all params' => sub {
    my $client = WWW::Google::ClientLogin->new(
        email    => 'foo',
        password => 'bar',
        service  => 'ac2dm',
        type     => 'GOOGLE',
        source   => 'foo_bar_0.1',
        ua       => LWP::UserAgent->new(),
    );

    isa_ok $client, 'WWW::Google::ClientLogin';
    is $client->{email}, 'foo';
    is $client->{password}, 'bar';
    is $client->{service}, 'ac2dm';
    is $client->{type}, 'GOOGLE';
    is $client->{source}, "foo_bar_0.1";
    isa_ok $client->{ua}, 'LWP::UserAgent';
};

done_testing;