From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by yocto-www.yoctoproject.org (Postfix, from userid 118) id 6B51FE00C80; Thu, 31 Mar 2016 07:41:45 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on yocto-www.yoctoproject.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-HAM-Report: * -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low * trust * [209.85.220.41 listed in list.dnswl.org] * -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily * valid * -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature Received: from mail-pa0-f41.google.com (mail-pa0-f41.google.com [209.85.220.41]) by yocto-www.yoctoproject.org (Postfix) with ESMTP id 374F8E00C7C for ; Thu, 31 Mar 2016 07:41:41 -0700 (PDT) Received: by mail-pa0-f41.google.com with SMTP id td3so67514018pab.2 for ; Thu, 31 Mar 2016 07:41:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20150623.gappssmtp.com; s=20150623; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=SWUQ8ozfjwB5/wGfoRF2mUjj/pjamUbweDSc+0Dnlhk=; b=w6DvFe0+FNnhBy8kRKtEpe3XS+fMD1P2rjMPNK3LZ2k8eAp+ebwep5Q0SoiBiTm8eH Z1QWihgpMjLk2/I73aCC95+giqAjUVtsGIo75la+VBYny/RFSU3jWMZDsKkli2Aw7VxE hRm9YJsUP5XUT9ww4RFc2qN1Le6HpIF018hyyYZrgbBZTsPhHD9KRaZ+XBqrNFPXTwNn /mmuZm7V/pH+gwivJBJfjr78NOZcWXFaTOSvwtKbNjs2nYOlu4k23PBx3jKMAXo6FhBh 1KvjNMP8TcHkNeve8/4K6KLTu6LYbFsi/DFAXWP+0IaKpxKVa+xHCeOWLt+95HthHCct 1Iaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=SWUQ8ozfjwB5/wGfoRF2mUjj/pjamUbweDSc+0Dnlhk=; b=IdUven2q98M8953xkJ9u75EnHzE4SHNRmwWoS4igeMeoD0vHbb4/11g+CgLSjp8EBA cmKB5OG+koqVM5TiILVnKwdvKrWLDbTTuOD+8vZfkn9oM5D1vvYMQ1a2Cegrz4XBV5OI s4/uFTs0JmFqK5s1f6uq3VvQ4d4S/KBebr9lHS9do4e2wCvnkvUP6j6bZAQsxHG+YhLY fiI6FMydLgpCUEEulzaGyX5wizlN6MwFG1bti48EG6Io8OHI51PJ16rhjG4+lfz/v9r1 2jH/EOx2ZKDCKa8Hli978R9i1BczNjg6HgiRZT4kRvoxqVXsKFdTUYx9UmosBQ5R+Jfl 0djQ== X-Gm-Message-State: AD7BkJIATCyqMkmG2N6zgIhCBsbejCq/94E5QPZlPAtq1Crz7nwnfl03kfcvoAoOgRP7OICJ X-Received: by 10.66.191.202 with SMTP id ha10mr22711628pac.8.1459435300530; Thu, 31 Mar 2016 07:41:40 -0700 (PDT) Received: from [192.168.2.24] ([83.217.123.106]) by smtp.googlemail.com with ESMTPSA id se8sm14076707pac.44.2016.03.31.07.41.38 for (version=TLSv1/SSLv3 cipher=OTHER); Thu, 31 Mar 2016 07:41:39 -0700 (PDT) To: toaster@yoctoproject.org References: <1458133834-26276-1-git-send-email-elliot.smith@intel.com> <1458133834-26276-6-git-send-email-elliot.smith@intel.com> From: Michael Wood Message-ID: <56FD3721.6090703@intel.com> Date: Thu, 31 Mar 2016 15:41:37 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <1458133834-26276-6-git-send-email-elliot.smith@intel.com> Subject: Re: [PATCH 5/5] toaster-tests: migrate landing page tests to Selenium X-BeenThere: toaster@yoctoproject.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Web based interface for BitBake List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Mar 2016 14:41:45 -0000 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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 > --- > .../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 """ >