From 2fcb89872f89c0027b9713c5f0adeba10e729c08 Mon Sep 17 00:00:00 2001 From: nader77 Date: Mon, 3 Apr 2017 09:30:51 +0300 Subject: [PATCH 1/4] Return correct type on purge when limit has been reached. --- message.module | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/message.module b/message.module index 2edfef2..59b2aa0 100644 --- a/message.module +++ b/message.module @@ -591,11 +591,11 @@ function _message_delete_messages($field_names, $entity_id, $last_mid = 0, $rang * * @return array * Messages of the given type(s) that should be purged according to the given - * settings. + * settings or an empty array if purge limit has been reached. */ function message_get_purgeable_by_type(&$purge_limit, $message_type_name, $purge_settings) { if ($purge_limit <= 0) { - return; + return array(); } // Messages to be deleted. From b1d338de74df24c04d6aa4a7d299f4b586eaded2 Mon Sep 17 00:00:00 2001 From: nader77 Date: Mon, 3 Apr 2017 12:53:11 +0300 Subject: [PATCH 2/4] Added a test --- tests/message.test | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/message.test b/tests/message.test index f590b94..5e41427 100644 --- a/tests/message.test +++ b/tests/message.test @@ -585,6 +585,45 @@ class MessageCron extends DrupalWebTestCase { $this->assertEqual(count($messages), 8, t('Eight messages of type 2 left.')); } + /** + * Test purging one message type when there's messages more than the cron + * allows. + */ + function testPurgeRequestTypeLimit() { + // Set maximal amount of messages to delete. + variable_set('message_delete_cron_limit', 10); + + $web_user = $this->drupalCreateUser(); + + // Create a purgeable message type with max quota 2 and max days 0. + $values = array( + 'data' => array( + 'purge' => array( + 'override' => TRUE, + 'enabled' => TRUE, + 'quota' => 2, + 'days' => 0, + ), + ), + ); + $message_type = message_type_create('big_type', $values); + $message_type->save(); + + // Create more messages than may be deleted in one request. + for ($i = 0; $i < 20; $i++) { + $message = message_create('big_type', array(), $web_user); + $message->save(); + } + + // Trigger message's hook_cron(). + message_cron(); + + // There are 20 messages to be deleted and 10 deletions allowed, so 10 + // messages of big_type should be deleted. + $messages = message_load_multiple(FALSE, array('type' => 'big_type')); + $this->assertEqual(count($messages), 10, t('@count messages of big type left.', array('@count' => count($messages)))); + } + /** * Test global purge settings and overriding them. */ From 3144b9bb080661565f993b89d29fc05a3b0671d2 Mon Sep 17 00:00:00 2001 From: nader77 Date: Mon, 3 Apr 2017 12:56:10 +0300 Subject: [PATCH 3/4] Fix grammer [skip ci] --- tests/message.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/message.test b/tests/message.test index 5e41427..7970c55 100644 --- a/tests/message.test +++ b/tests/message.test @@ -586,7 +586,7 @@ class MessageCron extends DrupalWebTestCase { } /** - * Test purging one message type when there's messages more than the cron + * Test purging one message type when there're messages more than the cron * allows. */ function testPurgeRequestTypeLimit() { From 813ea1b4e43e63c873c5d1de6cbdfaaa7333458a Mon Sep 17 00:00:00 2001 From: nader77 Date: Thu, 20 Jul 2017 08:41:14 +0300 Subject: [PATCH 4/4] Fix comments --- tests/message.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/message.test b/tests/message.test index 7970c55..e5d1679 100644 --- a/tests/message.test +++ b/tests/message.test @@ -586,6 +586,8 @@ class MessageCron extends DrupalWebTestCase { } /** + * Test purging messgaes. + * * Test purging one message type when there're messages more than the cron * allows. */