File Coverage

inc/WebService/Cmis/Test/ChangeFeed.pm
Criterion Covered Total %
statement 3 3 100.0
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 4 4 100.0


line stmt bran cond sub pod time code
1             package WebService::Cmis::Test::ChangeFeed;
2 1     1   724 use base qw(WebService::Cmis::Test);
  1         2  
  1         641  
3              
4             use strict;
5             use warnings;
6              
7             use Test::More;
8              
9             sub test_ChangeFeed_paginate : Tests {
10             my $this = shift;
11              
12             my $repo = $this->getRepository;
13             my $canChanges = $repo->getCapabilities()->{'Changes'};
14              
15             my $msg = $this->isBrokenFeature("paging");
16              
17             SKIP: {
18             skip "not able to log changes", unless defined $canChanges;
19             skip $msg if $msg;
20              
21             my $changes1 = $repo->getContentChanges(maxItems => 2);
22             my $size = $changes1->getSize;
23              
24             note("size1=$size");
25              
26             # print STDERR "### changes:\n".$changes1->{xmlDoc}->toString(1)."\n###\n";
27              
28             my %entries1 = ();
29             my @keys = ();
30             my $index = 0;
31             my $numTestedCycles = 10;
32             while (my $entry = $changes1->getNext) {
33             my $changeId = $entry->getId;
34             ok(defined $changeId);
35              
36             my $id = $entry->getObjectId;
37             ok(defined $id);
38              
39             my $changeType = $entry->getChangeType;
40             like($changeType, qr'^(created|updated|deleted|security)$');
41              
42             my $changeTime = $entry->getChangeTime;
43             like($changeTime, qr'^\d+');
44              
45             my $key = "$id-$changeTime";
46              
47             #print STDERR "$index: key1=$key\n";
48             push @keys, $key;
49              
50             # this fails on nuxeo for no obvious reason ... bug
51             #ok(!defined $entries1{$key}) || diag("found same key=$key twice in change log");
52             $entries1{$key} = $entry;
53             $index++;
54             last if $index >= $numTestedCycles;
55             }
56              
57             #print STDERR "index1=" . scalar(keys %entries1) . "\n";
58              
59             my $changes2 = $repo->getContentChanges(maxItems => 2);
60             my $size2 = $changes2->getSize;
61             note("size2=$size2");
62              
63             my %entries2 = ();
64             $index = 0;
65             while (my $entry = $changes2->getNext) {
66             my $id = $entry->getObjectId;
67             my $changeTime = $entry->getChangeTime;
68             my $key = "$id-$changeTime";
69              
70             #print STDERR "$index: key2=$key\n";
71              
72             ok(defined $entries1{$key}) || diag("didn't find key=$key in first change log");
73              
74             # this fails on nuxeo for no obvious reason ... bug
75             #ok(!defined $entries2{$key}) || diag("found same key=$key twice in change log");
76             $entries2{$key} = $entry;
77             $index++;
78             last if $index >= $numTestedCycles;
79             }
80              
81             #print STDERR "index2=".scalar(keys %entries2)."\n";
82              
83             foreach my $key (@keys) {
84              
85             #print STDERR "key=$key\n";
86             ok(defined $entries2{$key}) or diag("entry $key in first set not found in second");
87             }
88             }
89             }
90              
91             1;
92