[Toaster] [PATCH 5/5] toaster-tests: migrate landing page tests to Selenium
Michael Wood
michael.g.wood at intel.com
Thu Mar 31 08:12:40 PDT 2016
Yes that'd be great.
Michael
On 31/03/16 16:06, Smith, Elliot wrote:
> Sounds like a good idea to me. Do you want me to amend my branch to
> start the ball rolling?
>
> Elliot
>
> On 31 March 2016 at 15:41, Michael Wood <michael.g.wood at intel.com
> <mailto:michael.g.wood at intel.com>> wrote:
>
> Hijacking this with a bit of an RFC, but as I'm looking at tests
> at the moment, shall we start consolidating the tests in a single
> directory?
>
> I was thinking:
>
> ├──bitbake/lib/toaster/tests
> │ ├── browser
> │ ├── views
> │ ├── build
> │ ├── api
> │ ├── static
> ...etc
>
> usage ./manage.py test tests [or tests.views etc]
>
> Michael
>
>
> On 16/03/16 13:10, Elliot Smith wrote:
>
> Signed-off-by: Elliot Smith <elliot.smith at intel.com
> <mailto:elliot.smith at intel.com>>
> ---
> .../lib/toaster/tests_browser/test_landing_page.py | 108
> +++++++++++++++++++++
> bitbake/lib/toaster/toastergui/tests.py | 74 --------------
> 2 files changed, 108 insertions(+), 74 deletions(-)
> create mode 100644
> bitbake/lib/toaster/tests_browser/test_landing_page.py
>
> diff --git
> a/bitbake/lib/toaster/tests_browser/test_landing_page.py
> b/bitbake/lib/toaster/tests_browser/test_landing_page.py
> new file mode 100644
> index 0000000..8343630
> --- /dev/null
> +++ b/bitbake/lib/toaster/tests_browser/test_landing_page.py
> @@ -0,0 +1,108 @@
> +#! /usr/bin/env python
> +# ex:ts=4:sw=4:sts=4:et
> +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
> +#
> +# BitBake Toaster Implementation
> +#
> +# Copyright (C) 2013-2016 Intel Corporation
> +#
> +# This program is free software; you can redistribute it
> and/or modify
> +# it under the terms of the GNU General Public License
> version 2 as
> +# published by the Free Software Foundation.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public
> License along
> +# with this program; if not, write to the Free Software
> Foundation, Inc.,
> +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> +
> +from django.core.urlresolvers import reverse
> +from django.utils import timezone
> +from toaster.tests_browser.selenium_helpers import
> SeleniumTestCase
> +
> +from orm.models import Project, Build
> +
> +class TestLandingPage(SeleniumTestCase):
> + """ Tests for redirects on the landing page """
> +
> + PROJECT_NAME = 'test project'
> + LANDING_PAGE_TITLE = 'This is Toaster'
> + CLI_BUILDS_PROJECT_NAME = 'command line builds'
> +
> + def setUp(self):
> + """ Add default project manually """
> + self.project = Project.objects.create_project(
> + self.CLI_BUILDS_PROJECT_NAME,
> + None
> + )
> + self.project.is_default = True
> + self.project.save()
> +
> + def test_only_default_project(self):
> + """
> + No projects except default
> + => should see the landing page
> + """
> + self.get(reverse('landing'))
> + self.assertTrue(self.LANDING_PAGE_TITLE in
> self.get_page_source())
> +
> + def test_default_project_has_build(self):
> + """
> + Default project has a build, no other projects
> + => should see the builds page
> + """
> + now = timezone.now()
> + build = Build.objects.create(project=self.project,
> + started_on=now,
> + completed_on=now)
> + build.save()
> +
> + self.get(reverse('landing'))
> +
> + elements = self.find_all('#allbuildstable')
> + self.assertEqual(len(elements), 1, 'should redirect
> to builds')
> + content = self.get_page_source()
> + self.assertFalse(self.PROJECT_NAME in content,
> + 'should not show builds for project
> %s' % self.PROJECT_NAME)
> + self.assertTrue(self.CLI_BUILDS_PROJECT_NAME in content,
> + 'should show builds for cli project')
> +
> + def test_user_project_exists(self):
> + """
> + User has added a project (without builds)
> + => should see the projects page
> + """
> + user_project = Project.objects.create_project('foo',
> None)
> + user_project.save()
> +
> + self.get(reverse('landing'))
> +
> + elements = self.find_all('#projectstable')
> + self.assertEqual(len(elements), 1, 'should redirect
> to projects')
> +
> + def test_user_project_has_build(self):
> + """
> + User has added a project (with builds), command line
> builds doesn't
> + => should see the builds page
> + """
> + user_project =
> Project.objects.create_project(self.PROJECT_NAME, None)
> + user_project.save()
> +
> + now = timezone.now()
> + build = Build.objects.create(project=user_project,
> + started_on=now,
> + completed_on=now)
> + build.save()
> +
> + self.get(reverse('landing'))
> +
> + elements = self.find_all('#allbuildstable')
> + self.assertEqual(len(elements), 1, 'should redirect
> to builds')
> + content = self.get_page_source()
> + self.assertTrue(self.PROJECT_NAME in content,
> + 'should show builds for project %s' %
> self.PROJECT_NAME)
> + self.assertFalse(self.CLI_BUILDS_PROJECT_NAME in content,
> + 'should not show builds for cli
> project')
> diff --git a/bitbake/lib/toaster/toastergui/tests.py
> b/bitbake/lib/toaster/toastergui/tests.py
> index 6975ac1..eebd1b7 100644
> --- a/bitbake/lib/toaster/toastergui/tests.py
> +++ b/bitbake/lib/toaster/toastergui/tests.py
> @@ -493,80 +493,6 @@ class ViewTests(TestCase):
> "Changed page on table %s
> but first row is the "
> "same as the previous page"
> % name)
> -class LandingPageTests(TestCase):
> - """ Tests for redirects on the landing page """
> - # disable bogus pylint message error:
> - # "Instance of 'WSGIRequest' has no 'url' member (no-member)"
> - # (see
> https://github.com/landscapeio/pylint-django/issues/42)
> - # pylint: disable=E1103
> -
> - LANDING_PAGE_TITLE = 'This is Toaster'
> -
> - def setUp(self):
> - """ Add default project manually """
> - self.project = Project.objects.create_project('foo',
> None)
> - self.project.is_default = True
> - self.project.save()
> -
> - def test_only_default_project(self):
> - """
> - No projects except default
> - => get the landing page
> - """
> - response = self.client.get(reverse('landing'))
> - self.assertTrue(self.LANDING_PAGE_TITLE in
> response.content)
> -
> - def test_default_project_has_build(self):
> - """
> - Default project has a build, no other projects
> - => get the builds page
> - """
> - now = timezone.now()
> - build = Build.objects.create(project=self.project,
> - started_on=now,
> - completed_on=now)
> - build.save()
> -
> - response = self.client.get(reverse('landing'))
> - self.assertEqual(response.status_code, 302,
> - 'response should be a redirect')
> - self.assertTrue('/builds' in response.url,
> - 'should redirect to builds')
> -
> - def test_user_project_exists(self):
> - """
> - User has added a project (without builds)
> - => get the projects page
> - """
> - user_project = Project.objects.create_project('foo',
> None)
> - user_project.save()
> -
> - response = self.client.get(reverse('landing'))
> - self.assertEqual(response.status_code, 302,
> - 'response should be a redirect')
> - self.assertTrue('/projects' in response.url,
> - 'should redirect to projects')
> -
> - def test_user_project_has_build(self):
> - """
> - User has added a project (with builds)
> - => get the builds page
> - """
> - user_project = Project.objects.create_project('foo',
> None)
> - user_project.save()
> -
> - now = timezone.now()
> - build = Build.objects.create(project=user_project,
> - started_on=now,
> - completed_on=now)
> - build.save()
> -
> - response = self.client.get(reverse('landing'))
> - self.assertEqual(response.status_code, 302,
> - 'response should be a redirect')
> - self.assertTrue('/builds' in response.url,
> - 'should redirect to builds')
> -
> class BuildDashboardTests(TestCase):
> """ Tests for the build dashboard /build/X """
>
>
> --
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org <mailto:toaster at yoctoproject.org>
> https://lists.yoctoproject.org/listinfo/toaster
>
>
>
>
> --
> Elliot Smith
> Software Engineer
> Intel Open Source Technology Centre
>
> ---------------------------------------------------------------------
> Intel Corporation (UK) Limited
> Registered No. 1134945 (England)
> Registered Office: Pipers Way, Swindon SN3 1RJ
> VAT No: 860 2173 47
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
More information about the toaster
mailing list