1364fb00aSAnna Dabrowska<?php 2364fb00aSAnna Dabrowska 3*2cd86f5fSAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Assignments; 4364fb00aSAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Constants; 5364fb00aSAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision; 6364fb00aSAnna Dabrowska 7364fb00aSAnna Dabrowska/** 8364fb00aSAnna Dabrowska * Revision tests for the structpublish plugin 9364fb00aSAnna Dabrowska * 10*2cd86f5fSAnna Dabrowska * @group plugin_structpublish 11364fb00aSAnna Dabrowska * @group plugins 12364fb00aSAnna Dabrowska */ 13364fb00aSAnna Dabrowskaclass revision_plugin_structpublish_test extends DokuWikiTest 14364fb00aSAnna Dabrowska{ 15364fb00aSAnna Dabrowska /** @inheritdoc **/ 16364fb00aSAnna Dabrowska protected $pluginsEnabled = ['sqlite', 'struct', 'structpublish']; 17364fb00aSAnna Dabrowska 18364fb00aSAnna Dabrowska /** 19364fb00aSAnna Dabrowska * @var \helper_plugin_sqlite 20364fb00aSAnna Dabrowska */ 21364fb00aSAnna Dabrowska protected $sqlite; 22364fb00aSAnna Dabrowska 23364fb00aSAnna Dabrowska public function setUp(): void 24364fb00aSAnna Dabrowska { 25364fb00aSAnna Dabrowska parent::setUp(); 26364fb00aSAnna Dabrowska 27364fb00aSAnna Dabrowska global $USERINFO; 28364fb00aSAnna Dabrowska 29364fb00aSAnna Dabrowska // user 30364fb00aSAnna Dabrowska $_SERVER['REMOTE_USER'] = 'publisher'; 31*2cd86f5fSAnna Dabrowska $USERINFO['grps'] = ['user', 'approver', 'publisher']; 32364fb00aSAnna Dabrowska 33364fb00aSAnna Dabrowska // our database migrations 34364fb00aSAnna Dabrowska /** @var action_plugin_structpublish_migration $migration */ 35364fb00aSAnna Dabrowska $migration = plugin_load('action', 'structpublish_migration'); 36364fb00aSAnna Dabrowska $data = ''; 37364fb00aSAnna Dabrowska $migration->handleMigrations(new Doku_Event('DUMMY_EVENT', $data)); 38364fb00aSAnna Dabrowska 39364fb00aSAnna Dabrowska // assignments 40*2cd86f5fSAnna Dabrowska $assignments = Assignments::getInstance(true); 41364fb00aSAnna Dabrowska $this->sqlite = $assignments->getSqlite(); 42*2cd86f5fSAnna Dabrowska $assignments->addPattern('public:**', '@approver', 'approve'); 43*2cd86f5fSAnna Dabrowska $assignments->addPattern('public:**', '@publisher', 'publish'); 44364fb00aSAnna Dabrowska } 45364fb00aSAnna Dabrowska 46364fb00aSAnna Dabrowska /** 47*2cd86f5fSAnna Dabrowska * Test publish workflow 48364fb00aSAnna Dabrowska * 49364fb00aSAnna Dabrowska * @return void 50364fb00aSAnna Dabrowska */ 51*2cd86f5fSAnna Dabrowska public function test_full_workflow() 52364fb00aSAnna Dabrowska { 53*2cd86f5fSAnna Dabrowska global $ID; 54*2cd86f5fSAnna Dabrowska global $INFO; 55*2cd86f5fSAnna Dabrowska 56364fb00aSAnna Dabrowska $pid = 'public:structpublish'; 57*2cd86f5fSAnna Dabrowska $ID = $pid; 58*2cd86f5fSAnna Dabrowska $INFO['id'] = $pid; 59*2cd86f5fSAnna Dabrowska 60364fb00aSAnna Dabrowska $text = 'lorem ipsum'; 61*2cd86f5fSAnna Dabrowska 62364fb00aSAnna Dabrowska saveWikiText($pid, $text, 'Save first draft'); 63364fb00aSAnna Dabrowska 64*2cd86f5fSAnna Dabrowska $currentrev = time(); 65*2cd86f5fSAnna Dabrowska $INFO['currentrev'] = $currentrev; 66*2cd86f5fSAnna Dabrowska 67*2cd86f5fSAnna Dabrowska $revision = new Revision($this->sqlite, $pid, $currentrev); 68364fb00aSAnna Dabrowska 69364fb00aSAnna Dabrowska $user = $revision->getUser(); 70364fb00aSAnna Dabrowska $status = $revision->getStatus(); 71364fb00aSAnna Dabrowska $version = $revision->getVersion(); 72364fb00aSAnna Dabrowska 73364fb00aSAnna Dabrowska $this->assertEquals('', $user); 74364fb00aSAnna Dabrowska $this->assertEquals(Constants::STATUS_DRAFT, $status); 75364fb00aSAnna Dabrowska $this->assertEquals('', $version); 76*2cd86f5fSAnna Dabrowska 77*2cd86f5fSAnna Dabrowska $helper = plugin_load('helper', 'structpublish_publish'); 78*2cd86f5fSAnna Dabrowska 79*2cd86f5fSAnna Dabrowska // approve 80*2cd86f5fSAnna Dabrowska $helper->saveRevision(Constants::ACTION_APPROVE, $currentrev); 81*2cd86f5fSAnna Dabrowska 82*2cd86f5fSAnna Dabrowska $revision = new Revision($this->sqlite, $ID, $currentrev); 83*2cd86f5fSAnna Dabrowska $status = $revision->getStatus(); 84*2cd86f5fSAnna Dabrowska $this->assertEquals(Constants::STATUS_APPROVED, $status); 85*2cd86f5fSAnna Dabrowska 86*2cd86f5fSAnna Dabrowska // publish 87*2cd86f5fSAnna Dabrowska $helper->saveRevision(Constants::ACTION_PUBLISH, $currentrev); 88*2cd86f5fSAnna Dabrowska 89*2cd86f5fSAnna Dabrowska $revision = new Revision($this->sqlite, $ID, $currentrev); 90*2cd86f5fSAnna Dabrowska $status = $revision->getStatus(); 91*2cd86f5fSAnna Dabrowska $user = $revision->getUser(); 92*2cd86f5fSAnna Dabrowska $this->assertEquals(Constants::STATUS_PUBLISHED, $status); 93*2cd86f5fSAnna Dabrowska $this->assertEquals('publisher', $user); 94364fb00aSAnna Dabrowska } 95364fb00aSAnna Dabrowska} 96