test_landing_page.py 3.2 KB

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