Google-RestApi

 view release on metacpan or  search on metacpan

t/unit/Test/Google/RestApi/SheetsApi4/Spreadsheet.pm  view on Meta::CPAN

package Test::Google::RestApi::SheetsApi4::Spreadsheet;

use Test::Unit::Setup;

use Time::HiRes qw(sleep);

use Google::RestApi::Types qw( :all );

use aliased 'Google::RestApi::SheetsApi4';
use aliased 'Google::RestApi::SheetsApi4::Spreadsheet';

use parent 'Test::Unit::TestBase';

init_logger;

sub _constructor : Tests(7) {
  my $self = shift;

  throws_ok sub { Spreadsheet->new(sheets_api => mock_sheets_api()) },
    qr/At least one of/i,
    'Constructor with missing params should throw';

  my $ms = $self->mock_spreadsheet();
  my $ms_id = $ms->spreadsheet_id;

  ok my $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), id => $ms_id), 'Constructor should have succeeded';
  isa_ok $ss, Spreadsheet, 'Constructor with "id" returns';

  ok $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), name => mock_spreadsheet_name()),
    'Constructor with "name" should succeed';
  isa_ok $ss, Spreadsheet, 'Constructor with "name" returns';

  ok $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), uri => $self->mock_spreadsheet_uri()),
    'Constructor with "uri`" should succeed';
  isa_ok $ss, Spreadsheet, 'Constructor with "uri" returns';

  return;
}

sub api : Tests(2) {
  my $self = shift;

  my $ss = $self->mock_spreadsheet();
  is_valid $ss->api(), HashRef, 'Get returns hashref';
  my $transaction = $ss->rest_api()->transaction();
  is $transaction->{request}->{uri}, sheets_endpoint() . "/" . $self->mock_spreadsheet_id(),
    'Request base spreadsheet uri string is valid';

  return;
}

sub spreadsheet_id : Tests(4) {
  my $self = shift;

  my $ms = $self->mock_spreadsheet();
  my $ms_id = $ms->spreadsheet_id;

#  $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), name => mock_spreadsheet_name2());
#  throws_ok sub { $ss->spreadsheet_id(); }, qr/More than one/i, 'Spreadsheet with more than one name should throw';

  my $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), name => 'no_such_spreadsheet');
  throws_ok sub { $ss->spreadsheet_id(); }, qr/not found/i, 'Spreadsheet with no such name should throw';

  $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), id => $ms_id);
  is $ss->spreadsheet_id(), $ms_id, 'Spreadsheet with "id" returns "id"';

  $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), name => mock_spreadsheet_name());
  is $ss->spreadsheet_id(), $ms_id, 'Spreadsheet with "name" returns "id"';

  $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), uri => $self->mock_spreadsheet_uri());
  is $ss->spreadsheet_id(), $ms_id, 'Spreadsheet with "uri" returns "id"';

  return;
}

sub spreadsheet_name : Tests(3) {
  my $self = shift;

  my $ms = $self->mock_spreadsheet();
  my $ms_id = $ms->spreadsheet_id;

  my $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), id => $ms_id);
  is $ss->spreadsheet_name(), mock_spreadsheet_name(), 'Spreadsheet with "id" returns "name"';

  $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), name => mock_spreadsheet_name());
  is $ss->spreadsheet_name(), mock_spreadsheet_name(), 'Spreadsheet with "name" returns "name"';

  $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), uri => $self->mock_spreadsheet_uri());
  is $ss->spreadsheet_name(), mock_spreadsheet_name(), 'Spreadsheet with "uri" returns "name"';

  return;
}

sub spreadsheet_uri : Tests(3) {
  my $self = shift;

  my $ms = $self->mock_spreadsheet();
  my $ms_id = $ms->spreadsheet_id;

  my $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), id => $ms_id);
  is $ss->spreadsheet_uri(), $self->mock_spreadsheet_uri(), 'Spreadsheet with "id" returns "uri"';

  $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), name => mock_spreadsheet_name());
  is $ss->spreadsheet_uri(), $self->mock_spreadsheet_uri(), 'Spreadsheet with "name" returns "uri"';

  $ss = Spreadsheet->new(sheets_api => mock_sheets_api(), uri => $self->mock_spreadsheet_uri());



( run in 1.380 second using v1.01-cache-2.11-cpan-c966e8aa7e8 )