~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/soyuz/tests/test_publishing_models.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-10-24 22:37:38 UTC
  • mfrom: (14185.1.9 bug-833384)
  • Revision ID: launchpad@pqm.canonical.com-20111024223738-jpqt7zmk72ogiyxb
[r=sinzui][bug=833384] Expose source package changelogs through the
        API.

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
from zope.security.proxy import removeSecurityProxy
8
8
 
9
9
from canonical.database.constants import UTC_NOW
10
 
from canonical.testing.layers import LaunchpadZopelessLayer
 
10
from canonical.launchpad.webapp.publisher import canonical_url
 
11
from canonical.testing.layers import (
 
12
    LaunchpadFunctionalLayer,
 
13
    LaunchpadZopelessLayer,
 
14
    )
 
15
from lp.app.errors import NotFoundError
11
16
from lp.buildmaster.enums import BuildStatus
12
17
from lp.soyuz.interfaces.publishing import (
13
18
    IPublishingSet,
14
19
    PackagePublishingStatus,
15
20
    )
16
21
from lp.soyuz.tests.test_binarypackagebuild import BaseTestCaseWithThreeBuilds
 
22
from lp.testing import TestCaseWithFactory
17
23
 
18
24
 
19
25
class TestPublishingSet(BaseTestCaseWithThreeBuilds):
45
51
    def test_getUnpublishedBuildsForSources_one_published(self):
46
52
        # If we publish a binary for a build, it is no longer returned.
47
53
        bpr = self.publisher.uploadBinaryForBuild(self.builds[0], 'gedit')
48
 
        bpph = self.publisher.publishBinaryInArchive(
 
54
        self.publisher.publishBinaryInArchive(
49
55
            bpr, self.sources[0].archive,
50
56
            status=PackagePublishingStatus.PUBLISHED)
51
57
 
86
92
        self.assert_(urls[1].endswith('/96/firefox_666_source.changes'))
87
93
        self.assert_(urls[2].endswith(
88
94
            '/98/getting-things-gnome_666_source.changes'))
 
95
 
 
96
 
 
97
class TestSourcePackagePublishingHistory(TestCaseWithFactory):
 
98
 
 
99
    layer = LaunchpadFunctionalLayer
 
100
 
 
101
    def test_ancestry(self):
 
102
        """Ancestry can be traversed."""
 
103
        ancestor = self.factory.makeSourcePackagePublishingHistory()
 
104
        spph = self.factory.makeSourcePackagePublishingHistory(
 
105
            ancestor=ancestor)
 
106
        self.assertEquals(spph.ancestor.displayname, ancestor.displayname)
 
107
 
 
108
    def test_changelogUrl_missing(self):
 
109
        spr = self.factory.makeSourcePackageRelease(changelog=None)
 
110
        spph = self.factory.makeSourcePackagePublishingHistory(
 
111
            sourcepackagerelease=spr)
 
112
        self.assertEqual(None, spph.changelogUrl())
 
113
 
 
114
    def test_changelogUrl(self):
 
115
        spr = self.factory.makeSourcePackageRelease(
 
116
            changelog=self.factory.makeChangelog('foo', ['1.0']))
 
117
        spph = self.factory.makeSourcePackagePublishingHistory(
 
118
            sourcepackagerelease=spr)
 
119
        self.assertEqual(
 
120
            canonical_url(spph) + '/+files/%s' % spr.changelog.filename,
 
121
            spph.changelogUrl())
 
122
 
 
123
    def test_getFileByName_changelog(self):
 
124
        spr = self.factory.makeSourcePackageRelease(
 
125
            changelog=self.factory.makeLibraryFileAlias(filename='changelog'))
 
126
        spph = self.factory.makeSourcePackagePublishingHistory(
 
127
            sourcepackagerelease=spr)
 
128
        self.assertEqual(spr.changelog, spph.getFileByName('changelog'))
 
129
 
 
130
    def test_getFileByName_changelog_absent(self):
 
131
        spr = self.factory.makeSourcePackageRelease(changelog=None)
 
132
        spph = self.factory.makeSourcePackagePublishingHistory(
 
133
            sourcepackagerelease=spr)
 
134
        self.assertRaises(NotFoundError, spph.getFileByName, 'changelog')
 
135
 
 
136
    def test_getFileByName_unhandled_name(self):
 
137
        spph = self.factory.makeSourcePackagePublishingHistory()
 
138
        self.assertRaises(NotFoundError, spph.getFileByName, 'not-changelog')