From 65c805eb6a3415698fe29a5c726a6d4277bcbb11 Mon Sep 17 00:00:00 2001 From: Alexandru DAMIAN Date: Tue, 19 May 2015 17:22:46 +0100 Subject: bitbake: toastergui: tests for the all-projects API point This patch adds Django tests that verify that the 'all-projects' page returns a valid HTML page when invoked normally, containing the project name; and valid JSON containing API-needed fields if the GET parameter `format` is set to "json" (Bitbake rev: 9edd61fe7afaf273ed31d214af9251462182ad4f) Signed-off-by: Alexandru DAMIAN Signed-off-by: Richard Purdie --- bitbake/lib/toaster/toastergui/tests.py | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 bitbake/lib/toaster/toastergui/tests.py (limited to 'bitbake/lib/toaster/toastergui/tests.py') diff --git a/bitbake/lib/toaster/toastergui/tests.py b/bitbake/lib/toaster/toastergui/tests.py new file mode 100644 index 0000000000..8a78a41caa --- /dev/null +++ b/bitbake/lib/toaster/toastergui/tests.py @@ -0,0 +1,36 @@ +from django.test import TestCase +from django.core.urlresolvers import reverse +from orm.models import Project, Release, BitbakeVersion, Build + +class AllProjectsViewTestCase(TestCase): + TEST_PROJECT_NAME = "test project" + + def setUp(self): + bbv, created = BitbakeVersion.objects.get_or_create(name="test bbv", giturl="/tmp/", branch="master", dirpath="") + release, created = Release.objects.get_or_create(name="test release", bitbake_version = bbv) + Project.objects.create_project(name=AllProjectsViewTestCase.TEST_PROJECT_NAME, release=release) + + def test_get_base_call_returns_html(self): + response = self.client.get(reverse('all-projects'), follow=True) + self.assertEqual(response.status_code, 200) + self.assertTrue(response['Content-Type'].startswith('text/html')) + self.assertTemplateUsed(response, "projects.html") + self.assertTrue(AllProjectsViewTestCase.TEST_PROJECT_NAME in response.content) + + def test_get_json_call_returns_json(self): + response = self.client.get(reverse('all-projects'), {"format": "json"}, follow=True) + self.assertEqual(response.status_code, 200) + self.assertTrue(response['Content-Type'].startswith('application/json')) + try: + import json + data = json.loads(response.content) + except: + self.fail("Response %s is not json-loadable" % response.content) + + self.assertTrue("list" in data) + self.assertTrue(AllProjectsViewTestCase.TEST_PROJECT_NAME in map(lambda x: x["name"], data["list"])) + self.assertTrue("id" in data["list"][0]) + self.assertTrue("xhrProjectDataTypeaheadUrl" in data["list"][0]) + self.assertTrue("projectPageUrl" in data["list"][0]) + self.assertTrue("xhrProjectEditUrl" in data["list"][0]) + self.assertTrue("projectBuildUrl" in data["list"][0]) -- cgit v1.2.3-54-g00ecf