~launchpad-pqm/launchpad/devel

13597.1.1 by Jeroen Vermeulen
Get rid of factory.make[Ubuntu]DistroRelease. And some lint.
1
# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
9831.2.1 by Curtis Hovey
Added Distroseries.named_version so that there is an attribute that consistently
2
# GNU Affero General Public License version 3 (see the file LICENSE).
3
4
__metaclass__ = type
5
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
6
from zope.component import getUtility
7
14612.2.1 by William Grant
format-imports on lib/. So many imports.
8
from lp.app.interfaces.launchpad import ILaunchpadCelebrities
14600.2.2 by Curtis Hovey
Moved webapp to lp.services.
9
from lp.services.webapp.publisher import canonical_url
11262.2.11 by Curtis Hovey
Use someone with edit permission to change the milestone.code_name.
10
from lp.testing import login_person
10762.3.5 by Tim Penhey
Move the breadcrumb testcase.
11
from lp.testing.breadcrumbs import BaseBreadcrumbTestCase
9831.2.1 by Curtis Hovey
Added Distroseries.named_version so that there is an attribute that consistently
12
13
14
class TestDistroseriesBreadcrumb(BaseBreadcrumbTestCase):
15
    """Test breadcrumbs for an `IDistroseries`."""
16
17
    def setUp(self):
18
        super(TestDistroseriesBreadcrumb, self).setUp()
19
        self.distribution = self.factory.makeDistribution(
20
            name='youbuntu', displayname='Youbuntu')
13597.1.1 by Jeroen Vermeulen
Get rid of factory.make[Ubuntu]DistroRelease. And some lint.
21
        self.distroseries = self.factory.makeDistroSeries(
9831.2.1 by Curtis Hovey
Added Distroseries.named_version so that there is an attribute that consistently
22
            name='groovy', version="1.06", distribution=self.distribution)
23
        self.distroseries_url = canonical_url(self.distroseries)
24
25
    def test_distroseries(self):
10762.3.13 by Tim Penhey
Fix the tests for the method renames.
26
        crumbs = self.getBreadcrumbsForObject(self.distroseries)
9831.2.1 by Curtis Hovey
Added Distroseries.named_version so that there is an attribute that consistently
27
        last_crumb = crumbs[-1]
9938.1.3 by Curtis Hovey
Cleanup test style.
28
        self.assertEqual(self.distroseries.named_version, last_crumb.text)
9831.2.1 by Curtis Hovey
Added Distroseries.named_version so that there is an attribute that consistently
29
30
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
31
class TestDistributionMirrorBreadcrumb(BaseBreadcrumbTestCase):
32
    """Test breadcrumbs for an `IDistributionMirror`."""
33
34
    def setUp(self):
35
        super(TestDistributionMirrorBreadcrumb, self).setUp()
36
        self.distribution = getUtility(ILaunchpadCelebrities).ubuntu
37
38
    def test_distributionmirror_withDisplayName(self):
39
        # If a displayname is given, the breadcrumb text will be the
40
        # displayname.
41
        displayname = "Akbar and Jeff's Hut of Mirrors"
9894.7.3 by Brad Crittenden
Moved makeMirror to the factory.
42
        mirror = self.factory.makeMirror(
43
            distribution=self.distribution,
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
44
            displayname=displayname)
10762.3.13 by Tim Penhey
Fix the tests for the method renames.
45
        crumbs = self.getBreadcrumbsForObject(mirror)
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
46
        last_crumb = crumbs[-1]
9938.1.3 by Curtis Hovey
Cleanup test style.
47
        self.assertEqual(displayname, last_crumb.text)
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
48
49
    def test_distributionmirror_withHttpUrl(self):
50
        # If no displayname, the breadcrumb text will be the mirror name,
51
        # which is derived from the URL.
52
        http_url = "http://example.com/akbar"
9894.7.3 by Brad Crittenden
Moved makeMirror to the factory.
53
        mirror = self.factory.makeMirror(
54
            distribution=self.distribution,
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
55
            displayname=None,
56
            http_url=http_url)
10762.3.13 by Tim Penhey
Fix the tests for the method renames.
57
        crumbs = self.getBreadcrumbsForObject(mirror)
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
58
        last_crumb = crumbs[-1]
12000.2.17 by Jonathan Lange
Test what we mean, rather than relying on hard-coded data.
59
        self.assertEqual(mirror.displayname, last_crumb.text)
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
60
61
    def test_distributionmirror_withFtpUrl(self):
62
        # If no displayname, the breadcrumb text will be the mirror name,
63
        # which is derived from the URL.
64
        ftp_url = "ftp://example.com/jeff"
9894.7.3 by Brad Crittenden
Moved makeMirror to the factory.
65
        mirror = self.factory.makeMirror(
66
            distribution=self.distribution,
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
67
            displayname=None,
68
            ftp_url=ftp_url)
10762.3.13 by Tim Penhey
Fix the tests for the method renames.
69
        crumbs = self.getBreadcrumbsForObject(mirror)
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
70
        last_crumb = crumbs[-1]
12000.2.17 by Jonathan Lange
Test what we mean, rather than relying on hard-coded data.
71
        self.assertEqual(mirror.displayname, last_crumb.text)
9894.7.1 by Brad Crittenden
Added breadcrumbs for distribution mirrors.
72
73
9938.1.1 by Curtis Hovey
Added an breadcrumb adapter for IMilestone. Added an IMilestone adapter for IProductRelease.
74
class TestMilestoneBreadcrumb(BaseBreadcrumbTestCase):
75
    """Test the breadcrumbs for an `IMilestone`."""
76
77
    def setUp(self):
78
        super(TestMilestoneBreadcrumb, self).setUp()
79
        self.project = self.factory.makeProduct()
80
        self.series = self.factory.makeProductSeries(product=self.project)
81
        self.milestone = self.factory.makeMilestone(
82
            productseries=self.series, name="1.1")
83
        self.milestone_url = canonical_url(self.milestone)
84
9938.1.3 by Curtis Hovey
Cleanup test style.
85
    def test_milestone_without_code_name(self):
10762.3.13 by Tim Penhey
Fix the tests for the method renames.
86
        crumbs = self.getBreadcrumbsForObject(self.milestone)
9938.1.1 by Curtis Hovey
Added an breadcrumb adapter for IMilestone. Added an IMilestone adapter for IProductRelease.
87
        last_crumb = crumbs[-1]
9938.1.3 by Curtis Hovey
Cleanup test style.
88
        self.assertEqual(self.milestone.name, last_crumb.text)
9938.1.1 by Curtis Hovey
Added an breadcrumb adapter for IMilestone. Added an IMilestone adapter for IProductRelease.
89
90
    def test_milestone_with_code_name(self):
11262.2.11 by Curtis Hovey
Use someone with edit permission to change the milestone.code_name.
91
        login_person(self.milestone.productseries.product.owner)
9938.1.1 by Curtis Hovey
Added an breadcrumb adapter for IMilestone. Added an IMilestone adapter for IProductRelease.
92
        self.milestone.code_name = "duck"
10762.3.13 by Tim Penhey
Fix the tests for the method renames.
93
        crumbs = self.getBreadcrumbsForObject(self.milestone)
9938.1.1 by Curtis Hovey
Added an breadcrumb adapter for IMilestone. Added an IMilestone adapter for IProductRelease.
94
        last_crumb = crumbs[-1]
9938.1.3 by Curtis Hovey
Cleanup test style.
95
        expected_text = '%s "%s"' % (
9938.1.1 by Curtis Hovey
Added an breadcrumb adapter for IMilestone. Added an IMilestone adapter for IProductRelease.
96
            self.milestone.name, self.milestone.code_name)
9938.1.3 by Curtis Hovey
Cleanup test style.
97
        self.assertEqual(expected_text, last_crumb.text)
9938.1.1 by Curtis Hovey
Added an breadcrumb adapter for IMilestone. Added an IMilestone adapter for IProductRelease.
98
99
    def test_productrelease(self):
100
        release = self.factory.makeProductRelease(milestone=self.milestone)
10762.3.13 by Tim Penhey
Fix the tests for the method renames.
101
        crumbs = self.getBreadcrumbsForObject(release)
9938.1.1 by Curtis Hovey
Added an breadcrumb adapter for IMilestone. Added an IMilestone adapter for IProductRelease.
102
        last_crumb = crumbs[-1]
9938.1.3 by Curtis Hovey
Cleanup test style.
103
        self.assertEqual(self.milestone.name, last_crumb.text)
9938.1.1 by Curtis Hovey
Added an breadcrumb adapter for IMilestone. Added an IMilestone adapter for IProductRelease.
104
105
12156.3.1 by Curtis Hovey
Restored polls so that they can be used by a handful of important teams once a year.
106
class TestPollBreadcrumb(BaseBreadcrumbTestCase):
107
    """Test breadcrumbs for an `IPoll`."""
108
109
    def setUp(self):
110
        super(TestPollBreadcrumb, self).setUp()
111
        self.team = self.factory.makeTeam(displayname="Poll Team")
112
        name = "pollo-poll"
113
        title = "Marco Pollo"
114
        proposition = "Be mine"
115
        self.poll = self.factory.makePoll(
116
            team=self.team,
117
            name=name,
118
            title=title,
119
            proposition=proposition)
120
121
    def test_poll(self):
122
        crumbs = self.getBreadcrumbsForObject(self.poll)
123
        last_crumb = crumbs[-1]
124
        self.assertEqual(self.poll.title, last_crumb.text)
125
11929.12.2 by Brad Crittenden
Removed NameBlacklistBreadCrumb to prevent linking to a non-traversable element.
126
from lp.registry.interfaces.nameblacklist import INameBlacklistSet
127
128
129
class TestNameblacklistBreadcrumb(BaseBreadcrumbTestCase):
130
    """Test breadcrumbs for +nameblacklist."""
131
132
    def setUp(self):
133
        super(TestNameblacklistBreadcrumb, self).setUp()
134
        self.name_blacklist_set = getUtility(INameBlacklistSet)
135
        self.registry_expert = self.factory.makeRegistryExpert()
136
        login_person(self.registry_expert)
137
138
    def test_nameblacklist(self):
139
        expected = [('Name Blacklist', 'http://launchpad.dev/+nameblacklist')]
140
        self.assertBreadcrumbs(expected, self.name_blacklist_set)
141
142
    def test_nameblacklist_edit(self):
143
        blacklist = self.name_blacklist_set.getByRegExp(u'blacklist')
144
        expected = [
145
            ('Name Blacklist',
146
             'http://launchpad.dev/+nameblacklist'),
147
            ('Edit a blacklist expression',
148
             'http://launchpad.dev/+nameblacklist/1/+edit'),
149
            ]
150
        self.assertBreadcrumbs(expected, blacklist, view_name='+edit')