[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/tests/inc/ -> changelog_getRevisionsAround.test.php (source)

   1  <?php
   2  
   3  use dokuwiki\ChangeLog\PageChangeLog;
   4  
   5  /**
   6   * Tests for requesting revisions of a page with getRevisions()
   7   *
   8   * This class uses the files:
   9   * - data/pages/mailinglist.txt
  10   * - data/meta/mailinglist.changes
  11   */
  12  class changelog_getrevisionsaround_test extends DokuWikiTest {
  13  
  14      /**
  15       * list of revisions in mailinglist.changes
  16       */
  17      private $revsexpected = array(
  18          1374261194, //current page
  19          1371579614, 1368622240,
  20          1368622195, 1368622152,
  21          1368612599, 1368612506,
  22          1368609772, 1368575634,
  23          1363436892, 1362527164,
  24          1362527046, 1362526861,
  25          1362526767, 1362526167,
  26          1362526119, 1362526039,
  27          1362525926, 1362525899,
  28          1362525359, 1362525145,
  29          1362524799, 1361901536,
  30          1360110636
  31      );
  32      private $pageid = 'mailinglist';
  33  
  34      function setup() : void {
  35          parent::setup();
  36          global $cache_revinfo;
  37          $cache =& $cache_revinfo;
  38          unset($cache['nonexist']);
  39          unset($cache['mailinglist']);
  40          // fix filemtime of page source
  41          touch(wikiFN($this->pageid), $this->revsexpected[0]);
  42      }
  43  
  44      /**
  45       * no nonexist.changes meta file available
  46       */
  47      function test_changemetadatanotexists() {
  48          $rev1 = 1362526767;
  49          $rev2 = 1362527164;
  50          $max = 50;
  51          $id = 'nonexist';
  52          $revsexpected = array(array(), array());
  53  
  54          $pagelog = new PageChangeLog($id, $chunk_size = 8192);
  55          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
  56          $this->assertEquals($revsexpected, $revs);
  57      }
  58  
  59      /**
  60       * Surrounding revisions of rev1 and rev2 overlaps
  61       */
  62      function test_request_overlapping() {
  63          $rev1 = 1362526767;
  64          $rev2 = 1362527164;
  65          $max = 10;
  66          $revsexpected = array(
  67              array_slice($this->revsexpected, 8, 11),
  68              array_slice($this->revsexpected, 5, 11)
  69          );
  70  
  71          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
  72          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
  73          $this->assertEquals($revsexpected, $revs);
  74  
  75          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
  76          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
  77          $this->assertEquals($revsexpected, $revs);
  78  
  79          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
  80          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
  81          $this->assertEquals($revsexpected, $revs);
  82      }
  83  
  84      /**
  85       * Surrounding revisions of rev1 and rev2 don't overlap.
  86       */
  87      function test_request_non_overlapping() {
  88          $rev1 = 1362525899;
  89          $rev2 = 1368612599;
  90          $max = 10;
  91          $revsexpected = array(
  92              array_slice($this->revsexpected, 13, 11),
  93              array_slice($this->revsexpected, 0, 11)
  94          );
  95  
  96          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
  97          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
  98          $this->assertEquals($revsexpected, $revs);
  99  
 100          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
 101          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 102          $this->assertEquals($revsexpected, $revs);
 103  
 104          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
 105          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 106          $this->assertEquals($revsexpected, $revs);
 107      }
 108  
 109      /**
 110       * rev1 and rev2 are at start and end of the changelog.
 111       * Should return still a number of revisions equal to max
 112       */
 113      function test_request_first_last() {
 114          $rev1 = 1360110636;
 115          $rev2 = 1374261194;
 116          $max = 10;
 117          $revsexpected = array(
 118              array_slice($this->revsexpected, 13, 11),
 119              array_slice($this->revsexpected, 0, 11)
 120          );
 121  
 122          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 123          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 124          $this->assertEquals($revsexpected, $revs);
 125  
 126          //todo: number of revisions on the left side is not (yet) completed until max number
 127          $revsexpected = array(
 128              array_slice($this->revsexpected, 18, 6),
 129              array_slice($this->revsexpected, 0, 11)
 130          );
 131          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
 132          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 133          $this->assertEquals($revsexpected, $revs);
 134  
 135          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
 136          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 137          $this->assertEquals($revsexpected, $revs);
 138      }
 139  
 140  
 141      /**
 142       * Number of requested revisions is larger than available revisions,
 143       * so returns whole log
 144       */
 145      function test_request_wholelog() {
 146          $rev1 = 1362525899;
 147          $rev2 = 1368612599;
 148          $max = 50;
 149          $revsexpected = array($this->revsexpected, $this->revsexpected);
 150  
 151          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 152          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 153          $this->assertEquals($revsexpected, $revs);
 154  
 155          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
 156          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 157          $this->assertEquals($revsexpected, $revs);
 158  
 159          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
 160          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 161          $this->assertEquals($revsexpected, $revs);
 162      }
 163  
 164      /**
 165       * When rev1 > rev2, their order is changed
 166       */
 167      function test_request_wrong_order_revs() {
 168          $rev1 = 1362527164;
 169          $rev2 = 1362526767;
 170          $max = 10;
 171          $revsexpected = array(
 172              array_slice($this->revsexpected, 8, 11),
 173              array_slice($this->revsexpected, 5, 11)
 174          );
 175  
 176          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 177          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 178          $this->assertEquals($revsexpected, $revs);
 179  
 180          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
 181          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 182          $this->assertEquals($revsexpected, $revs);
 183  
 184          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
 185          $revs = $pagelog->getRevisionsAround($rev1, $rev2, $max);
 186          $this->assertEquals($revsexpected, $revs);
 187      }
 188  
 189  }