~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/bugs/browser/tests/special/bugtarget-recently-touched-bugs.txt

[rs=buildbot-poller] automatic merge from stable. Revisions: 14451,
        14452, 14453, 14454, 14455 included.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Recently Touched Bugs for a IBugTarget
2
 
======================================
3
 
 
4
 
Every IBugTarget has a portlet for showing the most recently touched
5
 
bugs (i.e bugs that have been recently modified/created).
6
 
 
7
 
    >>> from zope.component import getMultiAdapter
8
 
    >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
9
 
    >>> portlet_view = getMultiAdapter(
10
 
    ...     (bugtarget, LaunchpadTestRequest()),
11
 
    ...     name='+portlet-recently-touched-bugs')
12
 
    >>> portlet_view.initialize()
13
 
 
14
 
    >>> import pytz
15
 
    >>> from datetime import datetime, timedelta
16
 
    >>> now = datetime.now(pytz.timezone('UTC'))
17
 
    >>> def set_date_updated(bug, minutes_in_future):
18
 
    ...     bug.date_last_updated = now + timedelta(minutes=minutes_in_future)
19
 
 
20
 
If we have three bugs with a recent date_last_updated set, they will
21
 
appear in the top of the list.
22
 
 
23
 
    >>> login('test@canonical.com')
24
 
    >>> sample_person = getUtility(ILaunchBag).user
25
 
    >>> bug_a = filebug(bugtarget, 'Bug A')
26
 
    >>> set_date_updated(bug_a, 1)
27
 
    >>> bug_b = filebug(bugtarget, 'Bug B')
28
 
    >>> set_date_updated(bug_b, 2)
29
 
    >>> bug_c = filebug(bugtarget, 'Bug C')
30
 
    >>> set_date_updated(bug_c, 3)
31
 
 
32
 
    >>> for bugtask in portlet_view.getMostRecentlyUpdatedBugTasks()[:3]:
33
 
    ...     print bugtask.bug.title
34
 
    Bug C
35
 
    Bug B
36
 
    Bug A
37
 
 
38
 
If one of the bug's date_last_updated gets updated to a newer value, it
39
 
will be first in the list.
40
 
 
41
 
    >>> set_date_updated(bug_b, 4)
42
 
    >>> for bugtask in portlet_view.getMostRecentlyUpdatedBugTasks()[:3]:
43
 
    ...     print bugtask.bug.title
44
 
    Bug B
45
 
    Bug C
46
 
    Bug A
47
 
 
48
 
Private bugs
49
 
------------
50
 
 
51
 
Only bugs that the user is allowed to see will be present in the list.
52
 
 
53
 
    >>> bug_c.setPrivate(True, getUtility(ILaunchBag).user)
54
 
    True
55
 
 
56
 
    >>> login('no-priv@canonical.com')
57
 
    >>> portlet_view = getMultiAdapter(
58
 
    ...     (bugtarget, LaunchpadTestRequest()),
59
 
    ...     name='+portlet-recently-touched-bugs')
60
 
    >>> portlet_view.initialize()
61
 
    >>> for bugtask in portlet_view.getMostRecentlyUpdatedBugTasks()[:2]:
62
 
    ...     print bugtask.bug.title
63
 
    Bug B
64
 
    Bug A
65
 
 
66
 
    >>> login('test@canonical.com')
67
 
    >>> portlet_view = getMultiAdapter(
68
 
    ...     (bugtarget, LaunchpadTestRequest()),
69
 
    ...     name='+portlet-recently-touched-bugs')
70
 
    >>> portlet_view.initialize()
71
 
    >>> for bugtask in portlet_view.getMostRecentlyUpdatedBugTasks()[:3]:
72
 
    ...     print bugtask.bug.title
73
 
    Bug B
74
 
    Bug A
75
 
    Bug C
76
 
 
77
 
Duplicate bugs
78
 
--------------
79
 
 
80
 
Bugs that are duplicates of other bugs will be omitted from the list as
81
 
well.
82
 
 
83
 
    >>> bug_b.markAsDuplicate(bug_c)
84
 
 
85
 
    >>> for bugtask in portlet_view.getMostRecentlyUpdatedBugTasks()[:2]:
86
 
    ...     print bugtask.bug.title
87
 
    Bug A
88
 
    Bug C
89
 
 
90
 
Limit
91
 
-----
92
 
 
93
 
By default only five bugs will be returned, but it's possible to specify
94
 
a custom limit.
95
 
 
96
 
    >>> for index in range(6):
97
 
    ...     bug = filebug(bugtarget, 'Bug %s' % index)
98
 
    >>> len(portlet_view.getMostRecentlyUpdatedBugTasks())
99
 
    5
100
 
 
101
 
    >>> len(portlet_view.getMostRecentlyUpdatedBugTasks(limit=2))
102
 
    2