blob: 07901989d5645a4271d5438ce3bef4ec459eeadd [file] [log] [blame]
Brad Bishop96ff1982019-08-19 13:50:42 -04001#! /usr/bin/env python3
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002#
3# BitBake Toaster Implementation
4#
Brad Bishopc342db32019-05-15 21:57:59 -04005# SPDX-License-Identifier: GPL-2.0-only
6#
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05007# Copyright (C) 2013-2016 Intel Corporation
8#
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05009
10from django.core.urlresolvers import reverse
11from django.utils import timezone
12from tests.browser.selenium_helpers import SeleniumTestCase
13
14from orm.models import Project, Build
15
16class TestLandingPage(SeleniumTestCase):
17 """ Tests for redirects on the landing page """
18
19 PROJECT_NAME = 'test project'
20 LANDING_PAGE_TITLE = 'This is Toaster'
21 CLI_BUILDS_PROJECT_NAME = 'command line builds'
22
23 def setUp(self):
24 """ Add default project manually """
25 self.project = Project.objects.create_project(
26 self.CLI_BUILDS_PROJECT_NAME,
27 None
28 )
29 self.project.is_default = True
30 self.project.save()
31
32 def test_only_default_project(self):
33 """
34 No projects except default
35 => should see the landing page
36 """
37 self.get(reverse('landing'))
38 self.assertTrue(self.LANDING_PAGE_TITLE in self.get_page_source())
39
40 def test_default_project_has_build(self):
41 """
42 Default project has a build, no other projects
43 => should see the builds page
44 """
45 now = timezone.now()
46 build = Build.objects.create(project=self.project,
47 started_on=now,
48 completed_on=now)
49 build.save()
50
51 self.get(reverse('landing'))
52
53 elements = self.find_all('#allbuildstable')
54 self.assertEqual(len(elements), 1, 'should redirect to builds')
55 content = self.get_page_source()
56 self.assertFalse(self.PROJECT_NAME in content,
57 'should not show builds for project %s' % self.PROJECT_NAME)
58 self.assertTrue(self.CLI_BUILDS_PROJECT_NAME in content,
59 'should show builds for cli project')
60
61 def test_user_project_exists(self):
62 """
63 User has added a project (without builds)
64 => should see the projects page
65 """
66 user_project = Project.objects.create_project('foo', None)
67 user_project.save()
68
69 self.get(reverse('landing'))
70
71 elements = self.find_all('#projectstable')
72 self.assertEqual(len(elements), 1, 'should redirect to projects')
73
74 def test_user_project_has_build(self):
75 """
76 User has added a project (with builds), command line builds doesn't
77 => should see the builds page
78 """
79 user_project = Project.objects.create_project(self.PROJECT_NAME, None)
80 user_project.save()
81
82 now = timezone.now()
83 build = Build.objects.create(project=user_project,
84 started_on=now,
85 completed_on=now)
86 build.save()
87
88 self.get(reverse('landing'))
89
90 elements = self.find_all('#allbuildstable')
91 self.assertEqual(len(elements), 1, 'should redirect to builds')
92 content = self.get_page_source()
93 self.assertTrue(self.PROJECT_NAME in content,
94 'should show builds for project %s' % self.PROJECT_NAME)
95 self.assertFalse(self.CLI_BUILDS_PROJECT_NAME in content,
96 'should not show builds for cli project')