Skip to content

Commit 81cb2c8

Browse files
committed
build manager tests added
1 parent 904479d commit 81cb2c8

File tree

1 file changed

+89
-1
lines changed

1 file changed

+89
-1
lines changed

readthedocs/rtd_tests/tests/test_managers.py

+89-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from django_dynamic_fixture import get
44

55
from readthedocs.builds.constants import PULL_REQUEST, BRANCH, TAG
6-
from readthedocs.builds.models import Version
6+
from readthedocs.builds.models import Version, Build
77
from readthedocs.projects.constants import PUBLIC, PRIVATE, PROTECTED
88
from readthedocs.projects.models import Project
99

@@ -123,3 +123,91 @@ def test_external_version_manager_with_for_project(self):
123123
self.assertIn(
124124
self.public_pr_version, Version.external.for_project(self.pip)
125125
)
126+
127+
128+
class TestBuildManagerBase(TestCase):
129+
130+
fixtures = ['test_data']
131+
132+
def setUp(self):
133+
self.user = User.objects.create(username='test_user', password='test')
134+
self.client.login(username='test_user', password='test')
135+
self.pip = Project.objects.get(slug='pip')
136+
print(self.pip.versions.all())
137+
# Create a External Version and build. ie: PULL_REQUEST type Version.
138+
self.pr_version = get(
139+
Version,
140+
project=self.pip,
141+
active=True,
142+
type=PULL_REQUEST,
143+
privacy_level=PUBLIC
144+
)
145+
self.pr_version_build = get(
146+
Build,
147+
project=self.pip,
148+
version=self.pr_version
149+
)
150+
# Create a Internal Version build.
151+
self.internal_version_build = get(
152+
Build,
153+
project=self.pip,
154+
version=self.pip.versions.get(slug='0.8')
155+
)
156+
157+
self.internal_builds = Build.objects.exclude(version__type=PULL_REQUEST)
158+
159+
160+
class TestInternalBuildManager(TestBuildManagerBase):
161+
162+
"""
163+
Queries using Internal Manager should only include Internal Version builds.
164+
165+
It will exclude PULL_REQUEST type Version builds from the queries
166+
and only include BRANCH, TAG, UNKONWN type Versions.
167+
"""
168+
169+
def test_internal_build_manager_with_all(self):
170+
self.assertNotIn(self.pr_version_build, Build.internal.all())
171+
172+
def test_internal_build_manager_with_public(self):
173+
self.assertNotIn(self.pr_version_build, Build.internal.public())
174+
175+
def test_internal_build_manager_with_public_with_user_and_project(self):
176+
self.assertNotIn(
177+
self.pr_version_build,
178+
Build.internal.public(self.user, self.pip)
179+
)
180+
181+
def test_internal_build_manager_with_api(self):
182+
self.assertNotIn(self.pr_version_build, Build.internal.api())
183+
184+
185+
class TestExternalBuildManager(TestBuildManagerBase):
186+
187+
"""
188+
Queries using External Manager should only include External Version builds.
189+
190+
It will only include PULL_REQUEST type Version builds in the queries.
191+
"""
192+
193+
def test_external_build_manager_with_all(self):
194+
self.assertNotIn(self.internal_builds, Build.external.all())
195+
self.assertIn(self.pr_version_build, Build.external.all())
196+
197+
def test_external_build_manager_with_public(self):
198+
self.assertNotIn(self.internal_builds, Build.external.public())
199+
self.assertIn(self.pr_version_build, Build.external.public())
200+
201+
def test_external_build_manager_with_public_with_user_and_project(self):
202+
self.assertNotIn(
203+
self.internal_builds,
204+
Build.external.public(self.user, self.pip)
205+
)
206+
self.assertIn(
207+
self.pr_version_build,
208+
Build.external.public(self.user, self.pip)
209+
)
210+
211+
def test_external_build_manager_with_api(self):
212+
self.assertNotIn(self.internal_builds, Build.external.api())
213+
self.assertIn(self.pr_version_build, Build.external.api())

0 commit comments

Comments
 (0)