~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/bugs/browser/tests/test_bugnomination.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-10-03 21:30:39 UTC
  • mfrom: (13991.2.11 target-series-bug-834082)
  • Revision ID: launchpad@pqm.canonical.com-20111003213039-m2cjyt1ukm64c55d
[r=benji][bug=834082] BugNominationView will now use the correct
        context when checking userIsBugSupervisor or userIsReleaseManager.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
    ILaunchBag,
15
15
    )
16
16
from canonical.launchpad.webapp.publisher import canonical_url
 
17
from lp.registry.interfaces.series import SeriesStatus
17
18
from lp.testing import (
18
19
    login_person,
19
20
    person_logged_in,
43
44
        launchbag.add(self.distribution)
44
45
        launchbag.add(self.bug_task)
45
46
 
 
47
    def _makeBugSupervisorTeam(self, person, owner, target):
 
48
        """Create a bug supervisor team which includes the person argument."""
 
49
        members = [self.factory.makePerson() for i in range(2)]
 
50
        members.append(person)
 
51
        bug_supervisor = self.factory.makeTeam(members=members, owner=owner)
 
52
        with person_logged_in(owner):
 
53
            target.setBugSupervisor(bug_supervisor, owner)
 
54
 
46
55
    def test_submit_action_bug_supervisor(self):
47
56
        # A bug supervisor sees the Nominate action label.
48
57
        login_person(self.bug_worker)
72
81
            "You do not have permission to nominate this bug.",
73
82
            notifications[0].message)
74
83
 
 
84
    def test_bug_supervisor_nominate_distribution_does_not_error(self):
 
85
        # A bug supervisor should not receive error notifications
 
86
        # from the BugNominationView for a distro series.
 
87
        person = self.factory.makePerson(
 
88
            name='main-person-test', password='test')
 
89
        distro = self.factory.makeDistribution()
 
90
        owner = distro.owner
 
91
        self._makeBugSupervisorTeam(person, owner, distro)
 
92
        current_series = self.factory.makeDistroSeries(
 
93
            distribution=distro, status=SeriesStatus.CURRENT)
 
94
        # Ensure we have some older series so test data better reflects
 
95
        # actual usage.
 
96
        for index in range(3):
 
97
            self.factory.makeDistroSeries(distribution=distro)
 
98
        bug = self.factory.makeBug(distribution=distro, series=current_series)
 
99
        series_bugtask = bug.bugtasks[1]
 
100
        login_person(person)
 
101
        view = create_initialized_view(series_bugtask, name='+nominate')
 
102
        self.assertEqual(0, len(view.request.notifications))
 
103
 
 
104
    def test_bug_supervisor_nominate_source_package_does_not_error(self):
 
105
        # A bug supervisor should not receive error notifications
 
106
        # from the BugNominationView for a source package distro series.
 
107
        person = self.factory.makePerson(
 
108
            name='main-person-test', password='test')
 
109
        distro = self.factory.makeDistribution()
 
110
        owner = distro.owner
 
111
        self._makeBugSupervisorTeam(person, owner, distro)
 
112
        current_series = self.factory.makeDistroSeries(
 
113
            distribution=distro, status=SeriesStatus.CURRENT)
 
114
        # Ensure we have some older series so test data better reflects
 
115
        # actual usage.
 
116
        for index in range(3):
 
117
            self.factory.makeDistroSeries(distribution=distro)
 
118
        package = self.factory.makeDistributionSourcePackage(
 
119
            distribution=distro)
 
120
        bug = self.factory.makeBug(
 
121
            distribution=distro, series=current_series,
 
122
            sourcepackagename=package.name)
 
123
        series_bugtask = bug.bugtasks[1]
 
124
        login_person(person)
 
125
        view = create_initialized_view(series_bugtask, name='+nominate')
 
126
        self.assertEqual(0, len(view.request.notifications))
 
127
 
 
128
    def test_bug_supervisor_nominate_product_does_not_error(self):
 
129
        # A bug supervisor should not receive error notifications
 
130
        # from the BugNominationView for a product series.
 
131
        person = self.factory.makePerson(
 
132
            name='main-person-test-product', password='test')
 
133
        product = self.factory.makeProduct()
 
134
        owner = product.owner
 
135
        self._makeBugSupervisorTeam(person, owner, product)
 
136
        current_series = self.factory.makeProductSeries(product=product)
 
137
        # Ensure we have some older series so test data better reflects
 
138
        # actual usage.
 
139
        for index in range(3):
 
140
            self.factory.makeProductSeries(product=product)
 
141
        bug = self.factory.makeBug(product=product, series=current_series)
 
142
        series_bugtask = bug.bugtasks[1]
 
143
        login_person(person)
 
144
        view = create_initialized_view(series_bugtask, name='+nominate')
 
145
        self.assertEqual(0, len(view.request.notifications))
 
146
 
75
147
 
76
148
class TestBugNominationEditView(TestCaseWithFactory):
77
149
    """Tests for BugNominationEditView."""