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') |