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 <[email protected]> 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 <[email protected]> >> --- >> .../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 > [email protected] > https://lists.yoctoproject.org/listinfo/toaster > -- Elliot Smith Software Engineer Intel Open Source Technology Centre
-- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
