summaryrefslogtreecommitdiff
path: root/_test/tests/inc/subscription.test.php
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2012-08-12 15:07:03 +0200
committerAndreas Gohr <andi@splitbrain.org>2012-08-12 15:07:03 +0200
commitadec979fd5453cf213b776d7dceaaaac4eb05713 (patch)
treee473c5a2e9627d36605bea573efa0933c55f3f47 /_test/tests/inc/subscription.test.php
parente920a0a10c3027700e61166a6f8d4ea29a9ff102 (diff)
downloadrpg-adec979fd5453cf213b776d7dceaaaac4eb05713.tar.gz
rpg-adec979fd5453cf213b776d7dceaaaac4eb05713.tar.bz2
more subscription refactoring BROKEN
now the actual sending of bulk messages (digest, list) is reimplemented and partially tested. Still not complete
Diffstat (limited to '_test/tests/inc/subscription.test.php')
-rw-r--r--_test/tests/inc/subscription.test.php97
1 files changed, 82 insertions, 15 deletions
diff --git a/_test/tests/inc/subscription.test.php b/_test/tests/inc/subscription.test.php
index 77bf3e830..b3d49a533 100644
--- a/_test/tests/inc/subscription.test.php
+++ b/_test/tests/inc/subscription.test.php
@@ -2,7 +2,7 @@
class subscription_test extends DokuWikiTest {
- function test_regexp(){
+ function test_regexp() {
// data to test against
$data = array(
"casper every\n",
@@ -19,13 +19,13 @@ class subscription_test extends DokuWikiTest {
array('casper', null, null, 1),
array('nope', null, null, 0),
array('lights', null, null, 0),
- array(array('Cold Fusion','casper','nope'), null, null, 2),
+ array(array('Cold Fusion', 'casper', 'nope'), null, null, 2),
array(null, 'list', null, 1),
array(null, 'every', null, 2),
array(null, 'digest', null, 3),
array(null, array('list', 'every'), null, 3),
array('casper', 'digest', null, 0),
- array('casper', array('digest','every'), null, 1),
+ array('casper', array('digest', 'every'), null, 1),
array('zioth', 'list', '1344691369', 1),
array('zioth', null, '1344691369', 1),
array('zioth', 'digest', '1344691369', 0),
@@ -34,7 +34,7 @@ class subscription_test extends DokuWikiTest {
$sub = new MockupSubscription();
$row = 0;
- foreach($tests as $test){
+ foreach($tests as $test) {
$re = $sub->buildregex($test[0], $test[1], $test[2]);
$this->assertFalse(empty($re), "test line $row");
$result = preg_grep($re, $data);
@@ -44,13 +44,13 @@ class subscription_test extends DokuWikiTest {
}
}
- function test_addremove(){
+ function test_addremove() {
$sub = new MockupSubscription();
// no subscriptions
$this->assertArrayNotHasKey(
'wiki:dokuwiki',
- $sub->subscribers('wiki:dokuwiki', null, array('every','list','digest'))
+ $sub->subscribers('wiki:dokuwiki', null, array('every', 'list', 'digest'))
);
// add page subscription
@@ -59,7 +59,7 @@ class subscription_test extends DokuWikiTest {
// one subscription
$this->assertArrayHasKey(
'wiki:dokuwiki',
- $sub->subscribers('wiki:dokuwiki', null, array('every','list','digest'))
+ $sub->subscribers('wiki:dokuwiki', null, array('every', 'list', 'digest'))
);
// remove page subscription
@@ -68,7 +68,7 @@ class subscription_test extends DokuWikiTest {
// no subscription
$this->assertArrayNotHasKey(
'wiki:dokuwiki',
- $sub->subscribers('wiki:dokuwiki', null, array('every','list','digest'))
+ $sub->subscribers('wiki:dokuwiki', null, array('every', 'list', 'digest'))
);
// add namespace subscription
@@ -77,7 +77,7 @@ class subscription_test extends DokuWikiTest {
// one subscription
$this->assertArrayHasKey(
'wiki:',
- $sub->subscribers('wiki:dokuwiki', null, array('every','list','digest'))
+ $sub->subscribers('wiki:dokuwiki', null, array('every', 'list', 'digest'))
);
// remove (non existing) page subscription
@@ -86,7 +86,7 @@ class subscription_test extends DokuWikiTest {
// still one subscription
$this->assertArrayHasKey(
'wiki:',
- $sub->subscribers('wiki:dokuwiki', null, array('every','list','digest'))
+ $sub->subscribers('wiki:dokuwiki', null, array('every', 'list', 'digest'))
);
// change namespace subscription
@@ -95,17 +95,66 @@ class subscription_test extends DokuWikiTest {
// still one subscription
$this->assertArrayHasKey(
'wiki:',
- $sub->subscribers('wiki:dokuwiki', null, array('every','list','digest'))
+ $sub->subscribers('wiki:dokuwiki', null, array('every', 'list', 'digest'))
);
// check contents
$this->assertEquals(
array('wiki:' => array('testuser' => array('digest', '1234567'))),
- $sub->subscribers('wiki:dokuwiki', null, array('every','list','digest'))
+ $sub->subscribers('wiki:dokuwiki', null, array('every', 'list', 'digest'))
+ );
+
+ // change subscription data
+ $sub->add('wiki:', 'testuser', 'digest', '7654321');
+
+ // still one subscription
+ $this->assertArrayHasKey(
+ 'wiki:',
+ $sub->subscribers('wiki:dokuwiki', null, array('every', 'list', 'digest'))
+ );
+
+ // check contents
+ $this->assertEquals(
+ array('wiki:' => array('testuser' => array('digest', '7654321'))),
+ $sub->subscribers('wiki:dokuwiki', null, array('every', 'list', 'digest'))
);
}
+ function test_bulkdigest(){
+ $sub = new MockupSubscription();
+
+ // let's start with nothing
+ $this->assertEquals(0, $sub->send_bulk('sub1:test'));
+
+ // create a subscription
+ $sub->add('sub1:', 'testuser', 'digest', '978328800'); // last mod 2001-01-01
+
+ // now create change
+ $_SERVER['REMOTE_USER'] = 'someguy';
+ saveWikiText('sub1:test', 'foo bar', 'a subscription change', false);
+ // should trigger a mail
+ $this->assertEquals(1, $sub->send_bulk('sub1:test'));
+ $this->assertEquals(array('arthur@example.com'), $sub->mails);
+
+ $sub->reset();
+
+ // now create more changes
+ $_SERVER['REMOTE_USER'] = 'someguy';
+ saveWikiText('sub1:sub2:test', 'foo bar', 'a subscription change', false);
+ saveWikiText('sub1:another_test', 'foo bar', 'a subscription change', false);
+
+ // should not trigger a mail, because the subscription time has not been reached, yet
+ $this->assertEquals(0, $sub->send_bulk('sub1:test'));
+ $this->assertEquals(array(), $sub->mails);
+
+ // reset the subscription time
+ $sub->add('sub1:', 'testuser', 'digest', '978328800'); // last mod 2001-01-01
+
+ // we now should get mails for three changes
+ $this->assertEquals(3, $sub->send_bulk('sub1:test'));
+ $this->assertEquals(array('arthur@example.com','arthur@example.com','arthur@example.com'), $sub->mails);
+ }
}
@@ -113,9 +162,27 @@ class subscription_test extends DokuWikiTest {
* makes protected methods visible for testing
*/
class MockupSubscription extends Subscription {
- public function buildregex($user = null, $style = null, $data = null) {
- return parent::buildregex($user, $style, $data);
- }
+ public $mails; // we keep sent mails here
+
+ public function __construct(){
+ $this->reset();
+ }
+
+ /**
+ * resets the mail array
+ */
+ public function reset(){
+ $this->mails = array();
+ }
+
+ public function buildregex($user = null, $style = null, $data = null) {
+ return parent::buildregex($user, $style, $data);
+ }
+
+ protected function send($subscriber_mail, $replaces, $subject, $id, $template){
+ $this->mails[] = $subscriber_mail;
+ return true;
+ }
}
//Setup VIM: ex: et ts=4 :