~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/bugs/tests/test_bugnotification.py

Merge db-devel.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
from canonical.config import config
20
20
from canonical.database.sqlbase import sqlvalues
21
 
from canonical.launchpad.database.message import MessageSet
 
21
from lp.services.messages.model.message import MessageSet
22
22
from canonical.launchpad.ftests import login
23
23
from canonical.testing import (
24
24
    DatabaseFunctionalLayer,
233
233
    def test_getRecipientFilterData_empty(self):
234
234
        # When there is empty input, there is empty output.
235
235
        self.assertEqual(
236
 
            BugNotificationSet().getRecipientFilterData({}, []),
 
236
            BugNotificationSet().getRecipientFilterData(self.bug, {}, []),
237
237
            {})
238
238
        self.assertEqual(
239
239
            BugNotificationSet().getRecipientFilterData(
240
 
                {}, [self.notification]),
 
240
                self.bug, {}, [self.notification]),
241
241
            {})
242
242
 
243
243
    def test_getRecipientFilterData_other_persons(self):
259
259
             subscriber2: {'sources': sources2,
260
260
                           'filter descriptions': [u'Special Filter!']}},
261
261
            BugNotificationSet().getRecipientFilterData(
262
 
                {self.subscriber: sources, subscriber2: sources2},
 
262
                self.bug, {self.subscriber: sources, subscriber2: sources2},
263
263
                [self.notification, notification2]))
264
264
 
265
265
    def test_getRecipientFilterData_match(self):
271
271
            {self.subscriber: {'sources': sources,
272
272
             'filter descriptions': ['Special Filter!']}},
273
273
            BugNotificationSet().getRecipientFilterData(
274
 
                {self.subscriber: sources}, [self.notification]))
 
274
                self.bug, {self.subscriber: sources}, [self.notification]))
275
275
 
276
276
    def test_getRecipientFilterData_multiple_notifications_match(self):
277
277
        # When there are bug filters for the recipient for multiple
285
285
            {self.subscriber: {'sources': sources,
286
286
             'filter descriptions': ['Another Filter!', 'Special Filter!']}},
287
287
            BugNotificationSet().getRecipientFilterData(
288
 
                {self.subscriber: sources},
 
288
                self.bug, {self.subscriber: sources},
289
289
                [self.notification, self.notification2]))
290
290
 
291
291
    def test_getRecipientFilterData_mute(self):
300
300
        self.assertEqual(
301
301
            {},
302
302
            BugNotificationSet().getRecipientFilterData(
303
 
                {self.subscriber: sources}, [self.notification]))
 
303
                self.bug, {self.subscriber: sources}, [self.notification]))
304
304
 
305
305
    def test_getRecipientFilterData_mute_one_person_of_two(self):
306
306
        self.includeFilterInNotification()
321
321
            {subscriber2: {'sources': sources2,
322
322
                           'filter descriptions': [u'Special Filter!']}},
323
323
            BugNotificationSet().getRecipientFilterData(
324
 
                {self.subscriber: sources, subscriber2: sources2},
 
324
                self.bug, {self.subscriber: sources, subscriber2: sources2},
325
325
                [self.notification, notification2]))
326
326
 
327
327
    def test_getRecipientFilterData_mute_one_filter_of_two(self):
337
337
            {self.subscriber: {'sources': sources,
338
338
             'filter descriptions': ['Another Filter!']}},
339
339
            BugNotificationSet().getRecipientFilterData(
340
 
                {self.subscriber: sources},
 
340
                self.bug, {self.subscriber: sources},
341
341
                [self.notification, self.notification2]))
342
342
 
343
343
    def test_getRecipientFilterData_mute_both_filters_mutes(self):
356
356
        self.assertEqual(
357
357
            {},
358
358
            BugNotificationSet().getRecipientFilterData(
359
 
                {self.subscriber: sources},
 
359
                self.bug, {self.subscriber: sources},
360
360
                [self.notification, self.notification2]))
361
361
 
 
362
    def test_getRecipientFilterData_mute_bug_mutes(self):
 
363
        # Mute the bug for the subscriber.
 
364
        self.team = self.factory.makeTeam()
 
365
        self.subscriber.join(self.team)
 
366
 
 
367
        self.bug.mute(self.subscriber, self.subscriber)
 
368
        sources = list(self.notification.recipients)
 
369
        # Perform the test.
 
370
        self.assertEqual(
 
371
            {},
 
372
            BugNotificationSet().getRecipientFilterData(
 
373
                self.bug, {self.subscriber: sources}, [self.notification]))
 
374
 
 
375
    def test_getRecipientFilterData_mute_bug_mutes_only_themselves(self):
 
376
        # Mute the bug for the subscriber.
 
377
        self.bug.mute(self.subscriber, self.subscriber)
 
378
 
 
379
        # Notification for the other person still goes through.
 
380
        person = self.factory.makePerson(name='other')
 
381
        self.addNotificationRecipient(self.notification, person)
 
382
 
 
383
        sources = list(self.notification.recipients)
 
384
 
 
385
        # Perform the test.
 
386
        self.assertEqual(
 
387
            {person: {'filter descriptions': [],
 
388
                      'sources': sources}},
 
389
            BugNotificationSet().getRecipientFilterData(
 
390
                self.bug, {self.subscriber: sources,
 
391
                           person: sources},
 
392
                [self.notification]))
 
393
 
 
394
    def test_getRecipientFilterData_mute_bug_mutes_filter(self):
 
395
        # Mute the bug for the subscriber.
 
396
        self.bug.mute(self.subscriber, self.subscriber)
 
397
        self.includeFilterInNotification(description=u'Special Filter!')
 
398
        sources = list(self.notification.recipients)
 
399
        self.assertEqual(
 
400
            {},
 
401
            BugNotificationSet().getRecipientFilterData(
 
402
                self.bug, {self.subscriber: sources}, [self.notification]))
 
403
 
362
404
 
363
405
class TestNotificationProcessingWithoutRecipients(TestCaseWithFactory):
364
406
    """Adding notificatons without any recipients does not cause any harm.