summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/toastergui/tests.py')
-rw-r--r--bitbake/lib/toaster/toastergui/tests.py91
1 files changed, 88 insertions, 3 deletions
diff --git a/bitbake/lib/toaster/toastergui/tests.py b/bitbake/lib/toaster/toastergui/tests.py
index 1a8b4787dd..4d1549b0a9 100644
--- a/bitbake/lib/toaster/toastergui/tests.py
+++ b/bitbake/lib/toaster/toastergui/tests.py
@@ -24,10 +24,11 @@
24from django.test import TestCase 24from django.test import TestCase
25from django.core.urlresolvers import reverse 25from django.core.urlresolvers import reverse
26from django.utils import timezone 26from django.utils import timezone
27from orm.models import Project, Release, BitbakeVersion, Build 27from orm.models import Project, Release, BitbakeVersion, ProjectTarget
28from orm.models import ReleaseLayerSourcePriority, LayerSource, Layer 28from orm.models import ReleaseLayerSourcePriority, LayerSource, Layer, Build
29from orm.models import Layer_Version, Recipe, Machine, ProjectLayer 29from orm.models import Layer_Version, Recipe, Machine, ProjectLayer
30import json 30import json
31from bs4 import BeautifulSoup
31 32
32PROJECT_NAME = "test project" 33PROJECT_NAME = "test project"
33 34
@@ -41,7 +42,6 @@ class ViewTests(TestCase):
41 bitbake_version=bbv) 42 bitbake_version=bbv)
42 self.project = Project.objects.create_project(name=PROJECT_NAME, 43 self.project = Project.objects.create_project(name=PROJECT_NAME,
43 release=release) 44 release=release)
44
45 layersrc = LayerSource.objects.create(sourcetype=LayerSource.TYPE_IMPORTED) 45 layersrc = LayerSource.objects.create(sourcetype=LayerSource.TYPE_IMPORTED)
46 self.priority = ReleaseLayerSourcePriority.objects.create(release=release, 46 self.priority = ReleaseLayerSourcePriority.objects.create(release=release,
47 layer_source=layersrc) 47 layer_source=layersrc)
@@ -292,3 +292,88 @@ class ProjectsPageTests(TestCase):
292 'should be a project row in the page') 292 'should be a project row in the page')
293 self.assertTrue(self.PROJECT_NAME in response.content, 293 self.assertTrue(self.PROJECT_NAME in response.content,
294 'default project "cli builds" should be in page') 294 'default project "cli builds" should be in page')
295
296class ProjectBuildsDisplayTest(TestCase):
297 """ Test data at /project/X/builds is displayed correctly """
298
299 def setUp(self):
300 bbv = BitbakeVersion.objects.create(name="bbv1", giturl="/tmp/",
301 branch="master", dirpath="")
302 release = Release.objects.create(name="release1",
303 bitbake_version=bbv)
304 self.project1 = Project.objects.create_project(name=PROJECT_NAME,
305 release=release)
306 self.project2 = Project.objects.create_project(name=PROJECT_NAME,
307 release=release)
308
309 # parameters for builds to associate with the projects
310 now = timezone.now()
311
312 self.project1_build_success = {
313 "project": self.project1,
314 "started_on": now,
315 "completed_on": now,
316 "outcome": Build.SUCCEEDED
317 }
318
319 self.project1_build_in_progress = {
320 "project": self.project1,
321 "started_on": now,
322 "completed_on": now,
323 "outcome": Build.IN_PROGRESS
324 }
325
326 self.project2_build_success = {
327 "project": self.project2,
328 "started_on": now,
329 "completed_on": now,
330 "outcome": Build.SUCCEEDED
331 }
332
333 self.project2_build_in_progress = {
334 "project": self.project2,
335 "started_on": now,
336 "completed_on": now,
337 "outcome": Build.IN_PROGRESS
338 }
339
340 def _get_rows_for_project(self, project_id):
341 url = reverse("projectbuilds", args=(project_id,))
342 response = self.client.get(url, follow=True)
343 soup = BeautifulSoup(response.content)
344 return soup.select('tr[class="data"]')
345
346 def test_show_builds_for_project(self):
347 """ Builds for a project should be displayed """
348 build1a = Build.objects.create(**self.project1_build_success)
349 build1b = Build.objects.create(**self.project1_build_success)
350 build_rows = self._get_rows_for_project(self.project1.id)
351 self.assertEqual(len(build_rows), 2)
352
353 def test_show_builds_for_project_only(self):
354 """ Builds for other projects should be excluded """
355 build1a = Build.objects.create(**self.project1_build_success)
356 build1b = Build.objects.create(**self.project1_build_success)
357 build1c = Build.objects.create(**self.project1_build_success)
358
359 # shouldn't see these two
360 build2a = Build.objects.create(**self.project2_build_success)
361 build2b = Build.objects.create(**self.project2_build_in_progress)
362
363 build_rows = self._get_rows_for_project(self.project1.id)
364 self.assertEqual(len(build_rows), 3)
365
366 def test_show_builds_exclude_in_progress(self):
367 """ "in progress" builds should not be shown """
368 build1a = Build.objects.create(**self.project1_build_success)
369 build1b = Build.objects.create(**self.project1_build_success)
370
371 # shouldn't see this one
372 build1c = Build.objects.create(**self.project1_build_in_progress)
373
374 # shouldn't see these two either, as they belong to a different project
375 build2a = Build.objects.create(**self.project2_build_success)
376 build2b = Build.objects.create(**self.project2_build_in_progress)
377
378 build_rows = self._get_rows_for_project(self.project1.id)
379 self.assertEqual(len(build_rows), 2) \ No newline at end of file