Google-RestApi

 view release on metacpan or  search on metacpan

t/unit/Test/Google/RestApi/DocsApi1/Document.pm  view on Meta::CPAN

  ok $result->{replies}, 'Result contains replies';

  return;
}

sub submit_empty : Tests(1) {
  my $self = shift;
  my $doc = $self->_mock_document();

  my $result = $doc->submit_requests();
  ok !$result, 'submit_requests with no queued requests returns undef';

  return;
}

sub replace_all_text : Tests(4) {
  my $self = shift;
  my $doc = $self->_mock_document();

  $doc->replace_all_text(find => 'old', replacement => 'new');
  my @requests = $doc->batch_requests();
  is $requests[0]->{replaceAllText}->{replaceText}, 'new', 'Replace all text request is correct';
  is $requests[0]->{replaceAllText}->{containsText}->{matchCase}, JSON::MaybeXS::true(), 'match_case defaults to true';

  # Reset and test with match_case => 0
  $doc = $self->_mock_document();
  $doc->replace_all_text(find => 'old', replacement => 'new', match_case => 0);
  @requests = $doc->batch_requests();
  is $requests[0]->{replaceAllText}->{containsText}->{matchCase}, JSON::MaybeXS::false(), 'match_case false produces JSON false';
  is $requests[0]->{replaceAllText}->{containsText}->{text}, 'old', 'Find text is correct';

  return;
}

sub insert_text_with_segment_id : Tests(2) {
  my $self = shift;
  my $doc = $self->_mock_document();

  $doc->insert_text(text => 'Header text', index => 1, segment_id => 'kix.abc123');
  my @requests = $doc->batch_requests();
  is $requests[0]->{insertText}->{location}->{segmentId}, 'kix.abc123',
    'insert_text includes segmentId when provided';
  is $requests[0]->{insertText}->{text}, 'Header text', 'insert_text text is correct';

  return;
}

sub delete_content : Tests(2) {
  my $self = shift;
  my $doc = $self->_mock_document();

  my %range = (startIndex => 1, endIndex => 10);
  $doc->delete_content(range => \%range);
  my @requests = $doc->batch_requests();
  is $requests[0]->{deleteContentRange}->{range}->{startIndex}, 1, 'delete_content startIndex is correct';
  is $requests[0]->{deleteContentRange}->{range}->{endIndex}, 10, 'delete_content endIndex is correct';

  return;
}

sub update_text_style : Tests(3) {
  my $self = shift;
  my $doc = $self->_mock_document();

  my %range = (startIndex => 1, endIndex => 5);
  my %style = (bold => JSON::MaybeXS::true());
  $doc->update_text_style(range => \%range, style => \%style, fields => 'bold');
  my @requests = $doc->batch_requests();
  is $requests[0]->{updateTextStyle}->{fields}, 'bold', 'update_text_style fields is correct';
  is $requests[0]->{updateTextStyle}->{textStyle}->{bold}, JSON::MaybeXS::true(), 'update_text_style style is correct';
  is $requests[0]->{updateTextStyle}->{range}->{startIndex}, 1, 'update_text_style range is correct';

  return;
}

sub update_paragraph_style : Tests(3) {
  my $self = shift;
  my $doc = $self->_mock_document();

  my %range = (startIndex => 1, endIndex => 10);
  my %style = (alignment => 'CENTER');
  $doc->update_paragraph_style(range => \%range, style => \%style, fields => 'alignment');
  my @requests = $doc->batch_requests();
  is $requests[0]->{updateParagraphStyle}->{fields}, 'alignment', 'update_paragraph_style fields is correct';
  is $requests[0]->{updateParagraphStyle}->{paragraphStyle}->{alignment}, 'CENTER', 'update_paragraph_style style is correct';
  is $requests[0]->{updateParagraphStyle}->{range}->{startIndex}, 1, 'update_paragraph_style range is correct';

  return;
}

sub insert_table : Tests(3) {
  my $self = shift;
  my $doc = $self->_mock_document();

  $doc->insert_table(index => 1, rows => 3, columns => 4);
  my @requests = $doc->batch_requests();
  is $requests[0]->{insertTable}->{rows}, 3, 'insert_table rows is correct';
  is $requests[0]->{insertTable}->{columns}, 4, 'insert_table columns is correct';
  is $requests[0]->{insertTable}->{location}->{index}, 1, 'insert_table location is correct';

  return;
}

sub insert_table_with_segment_id : Tests(1) {
  my $self = shift;
  my $doc = $self->_mock_document();

  $doc->insert_table(index => 1, rows => 2, columns => 2, segment_id => 'kix.seg1');
  my @requests = $doc->batch_requests();
  is $requests[0]->{insertTable}->{location}->{segmentId}, 'kix.seg1',
    'insert_table includes segmentId when provided';

  return;
}

sub insert_inline_image : Tests(2) {
  my $self = shift;
  my $doc = $self->_mock_document();

  $doc->insert_inline_image(index => 1, uri => 'https://example.com/img.png');
  my @requests = $doc->batch_requests();
  is $requests[0]->{insertInlineImage}->{uri}, 'https://example.com/img.png', 'insert_inline_image uri is correct';
  ok !exists $requests[0]->{insertInlineImage}->{objectSize}, 'No objectSize when width/height omitted';

  return;
}

sub insert_inline_image_with_size : Tests(3) {
  my $self = shift;
  my $doc = $self->_mock_document();

  my %width = (magnitude => 200, unit => 'PT');
  my %height = (magnitude => 100, unit => 'PT');
  $doc->insert_inline_image(index => 1, uri => 'https://example.com/img.png', width => \%width, height => \%height);
  my @requests = $doc->batch_requests();
  ok $requests[0]->{insertInlineImage}->{objectSize}, 'objectSize present when width/height provided';

t/unit/Test/Google/RestApi/DocsApi1/Document.pm  view on Meta::CPAN

  my $doc = $self->_mock_document();

  $doc->delete_footer('footer_id_123');
  my @requests = $doc->batch_requests();
  is $requests[0]->{deleteFooter}->{footerId}, 'footer_id_123', 'delete_footer ID is correct';

  return;
}

sub insert_page_break : Tests(2) {
  my $self = shift;
  my $doc = $self->_mock_document();

  $doc->insert_page_break(index => 5);
  my @requests = $doc->batch_requests();
  is $requests[0]->{insertPageBreak}->{location}->{index}, 5, 'insert_page_break index is correct';
  ok !exists $requests[0]->{insertPageBreak}->{location}->{segmentId},
    'No segmentId when omitted';

  return;
}

sub insert_page_break_with_segment_id : Tests(1) {
  my $self = shift;
  my $doc = $self->_mock_document();

  $doc->insert_page_break(index => 5, segment_id => 'kix.seg1');
  my @requests = $doc->batch_requests();
  is $requests[0]->{insertPageBreak}->{location}->{segmentId}, 'kix.seg1',
    'insert_page_break includes segmentId when provided';

  return;
}

sub insert_section_break : Tests(3) {
  my $self = shift;
  my $doc = $self->_mock_document();

  $doc->insert_section_break(index => 10, type => 'NEXT_PAGE');
  my @requests = $doc->batch_requests();
  is $requests[0]->{insertSectionBreak}->{sectionType}, 'NEXT_PAGE', 'insert_section_break type is correct';
  is $requests[0]->{insertSectionBreak}->{location}->{index}, 10, 'insert_section_break index is correct';
  ok !exists $requests[0]->{insertSectionBreak}->{location}->{segmentId},
    'No segmentId when omitted';

  return;
}

sub insert_section_break_with_segment_id : Tests(1) {
  my $self = shift;
  my $doc = $self->_mock_document();

  $doc->insert_section_break(index => 10, type => 'NEXT_PAGE', segment_id => 'kix.seg1');
  my @requests = $doc->batch_requests();
  is $requests[0]->{insertSectionBreak}->{location}->{segmentId}, 'kix.seg1',
    'insert_section_break includes segmentId when provided';

  return;
}

sub update_document_style : Tests(2) {
  my $self = shift;
  my $doc = $self->_mock_document();

  my %style = (marginTop => { magnitude => 72, unit => 'PT' });
  $doc->update_document_style(style => \%style, fields => 'marginTop');
  my @requests = $doc->batch_requests();
  is $requests[0]->{updateDocumentStyle}->{fields}, 'marginTop', 'update_document_style fields is correct';
  is $requests[0]->{updateDocumentStyle}->{documentStyle}->{marginTop}->{magnitude}, 72,
    'update_document_style style is correct';

  return;
}

sub accessors : Tests(2) {
  my $self = shift;
  my $doc = $self->_mock_document();

  isa_ok $doc->docs_api(), 'Google::RestApi::DocsApi1', 'docs_api returns DocsApi1';
  isa_ok $doc->rest_api(), 'Google::RestApi', 'rest_api returns RestApi';

  return;
}

sub get_with_fields : Tests(1) {
  my $self = shift;
  my $doc = $self->_mock_document();
  my $result = $doc->get(fields => 'title');
  ok $result, 'Get with fields returns data';

  return;
}

1;



( run in 0.514 second using v1.01-cache-2.11-cpan-ceb78f64989 )