[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
1 <?php 2 3 namespace dokuwiki\test\Subscriptions; 4 5 use dokuwiki\Subscriptions\SubscriberManager; 6 use DokuWikiTest; 7 8 class SubscriberManagerTest extends DokuWikiTest 9 { 10 private $originalSubscriptionConfig; 11 12 public function setUp() : void 13 { 14 parent::setUp(); 15 global $conf; 16 $this->originalSubscriptionConfig = $conf['subscribers']; 17 $conf['subscribers'] = true; 18 } 19 20 protected function tearDown() : void 21 { 22 global $conf; 23 $conf['subscribers'] = $this->originalSubscriptionConfig; 24 parent::tearDown(); 25 } 26 27 public function testAddremove() 28 { 29 $sub = new SubscriberManager(); 30 31 // no subscriptions 32 $this->assertArrayNotHasKey( 33 'wiki:dokuwiki', 34 $sub->subscribers('wiki:dokuwiki', null, ['every', 'list', 'digest']) 35 ); 36 37 // add page subscription 38 $sub->add('wiki:dokuwiki', 'testuser', 'every'); 39 40 // one subscription 41 $this->assertArrayHasKey( 42 'wiki:dokuwiki', 43 $sub->subscribers('wiki:dokuwiki', null, ['every', 'list', 'digest']) 44 ); 45 46 // remove page subscription 47 $sub->remove('wiki:dokuwiki', 'testuser'); 48 49 // no subscription 50 $this->assertArrayNotHasKey( 51 'wiki:dokuwiki', 52 $sub->subscribers('wiki:dokuwiki', null, ['every', 'list', 'digest']) 53 ); 54 55 // add namespace subscription 56 $sub->add('wiki:', 'testuser', 'every'); 57 58 // one subscription 59 $this->assertArrayHasKey( 60 'wiki:', 61 $sub->subscribers('wiki:dokuwiki', null, ['every', 'list', 'digest']) 62 ); 63 64 // remove (non existing) page subscription 65 $sub->remove('wiki:dokuwiki', 'testuser'); 66 67 // still one subscription 68 $this->assertArrayHasKey( 69 'wiki:', 70 $sub->subscribers('wiki:dokuwiki', null, ['every', 'list', 'digest']) 71 ); 72 73 // change namespace subscription 74 $sub->add('wiki:', 'testuser', 'digest', '1234567'); 75 76 // still one subscription 77 $this->assertArrayHasKey( 78 'wiki:', 79 $sub->subscribers('wiki:dokuwiki', null, ['every', 'list', 'digest']) 80 ); 81 82 // check contents 83 $this->assertEquals( 84 ['wiki:' => ['testuser' => ['digest', '1234567']]], 85 $sub->subscribers('wiki:dokuwiki', null, ['every', 'list', 'digest']) 86 ); 87 88 // change subscription data 89 $sub->add('wiki:', 'testuser', 'digest', '7654321'); 90 91 // still one subscription 92 $this->assertArrayHasKey( 93 'wiki:', 94 $sub->subscribers('wiki:dokuwiki', null, ['every', 'list', 'digest']) 95 ); 96 97 // check contents 98 $this->assertEquals( 99 ['wiki:' => ['testuser' => ['digest', '7654321']]], 100 $sub->subscribers('wiki:dokuwiki', null, ['every', 'list', 'digest']) 101 ); 102 } 103 104 /** 105 * Tests, if overwriting subscriptions works even when subscriptions for the same 106 * user exist for two nested namespaces, this is a test for the bug described in FS#2580 107 */ 108 public function testOverwrite() 109 { 110 $sub = new SubscriberManager(); 111 112 $sub->add(':', 'admin', 'digest', '123456789'); 113 $sub->add(':wiki:', 'admin', 'digest', '123456789'); 114 $sub->add(':', 'admin', 'digest', '1234'); 115 $sub->add(':wiki:', 'admin', 'digest', '1234'); 116 117 $subscriptions = $sub->subscribers(':wiki:', 'admin'); 118 119 $this->assertCount( 120 1, 121 $subscriptions[':'], 122 'More than one subscription saved for the root namespace even though the old one should have been overwritten.' 123 ); 124 $this->assertCount( 125 1, 126 $subscriptions[':wiki:'], 127 'More than one subscription saved for the wiki namespace even though the old one should have been overwritten.' 128 ); 129 $this->assertCount(2, $subscriptions, 'Didn\'t find the expected two subscriptions'); 130 } 131 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body