test_new_project_page.py 3.3 KB

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