blob: 8e56bb043e3be2c432a810c289706435ffe22a93 [file] [log] [blame]
Brad Bishop96ff1982019-08-19 13:50:42 -04001#! /usr/bin/env python3
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002#
3# BitBake Toaster Implementation
4#
5# Copyright (C) 2013-2016 Intel Corporation
6#
Brad Bishopc342db32019-05-15 21:57:59 -04007# SPDX-License-Identifier: GPL-2.0-only
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008#
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009
10from django.core.urlresolvers import reverse
11from tests.browser.selenium_helpers import SeleniumTestCase
12from selenium.webdriver.support.ui import Select
13from selenium.common.exceptions import InvalidElementStateException
14
15from orm.models import Project, Release, BitbakeVersion
16
17
18class TestNewProjectPage(SeleniumTestCase):
19 """ Test project data at /project/X/ is displayed correctly """
20
21 def setUp(self):
22 bitbake, c = BitbakeVersion.objects.get_or_create(
23 name="master",
24 giturl="git://master",
25 branch="master",
26 dirpath="master")
27
28 release, c = Release.objects.get_or_create(name="msater",
29 description="master"
30 "release",
31 branch_name="master",
32 helptext="latest",
33 bitbake_version=bitbake)
34
35 self.release, c = Release.objects.get_or_create(
36 name="msater2",
37 description="master2"
38 "release2",
39 branch_name="master2",
40 helptext="latest2",
41 bitbake_version=bitbake)
42
43 def test_create_new_project(self):
44 """ Test creating a project """
45
46 project_name = "masterproject"
47
48 url = reverse('newproject')
49 self.get(url)
50
51 self.enter_text('#new-project-name', project_name)
52
53 select = Select(self.find('#projectversion'))
54 select.select_by_value(str(self.release.pk))
55
56 self.click("#create-project-button")
57
58 # We should get redirected to the new project's page with the
59 # notification at the top
60 element = self.wait_until_visible('#project-created-notification')
61
62 self.assertTrue(project_name in element.text,
63 "New project name not in new project notification")
64
65 self.assertTrue(Project.objects.filter(name=project_name).count(),
66 "New project not found in database")
67
68 def test_new_duplicates_project_name(self):
69 """
70 Should not be able to create a new project whose name is the same
71 as an existing project
72 """
73
74 project_name = "dupproject"
75
76 Project.objects.create_project(name=project_name,
77 release=self.release)
78
79 url = reverse('newproject')
80 self.get(url)
81
82 self.enter_text('#new-project-name', project_name)
83
84 select = Select(self.find('#projectversion'))
85 select.select_by_value(str(self.release.pk))
86
87 element = self.wait_until_visible('#hint-error-project-name')
88
89 self.assertTrue(("Project names must be unique" in element.text),
90 "Did not find unique project name error message")
91
92 # Try and click it anyway, if it submits we'll have a new project in
93 # the db and assert then
94 try:
95 self.click("#create-project-button")
96 except InvalidElementStateException:
97 pass
98
99 self.assertTrue(
100 (Project.objects.filter(name=project_name).count() == 1),
101 "New project not found in database")