bitbake: toastergui: tests Fix and more comprehensive typeahead unittest

Fix the currently broken unit test for typeaheads and add some
additional fields to check for in layers, projects, recipes and machines
typeaheads.

(Bitbake rev: 5700cd269e3a4fd517e16a3a19e61a23091df465)

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Michael Wood
2015-08-04 22:46:38 +03:00
committed by Richard Purdie
parent 4d7944d6ad
commit 0494a2769b

View File

@@ -1,7 +1,8 @@
from django.test import TestCase
from django.core.urlresolvers import reverse
from orm.models import Project, Release, BitbakeVersion, Build
from orm.models import ReleaseLayerSourcePriority, LayerSource, Layer, Layer_Version
from orm.models import ReleaseLayerSourcePriority, LayerSource, Layer, Layer_Version, Recipe, Machine, ProjectLayer
import json
class ProvisionedProjectTestCase(TestCase):
TEST_PROJECT_NAME = "test project"
@@ -27,7 +28,6 @@ class AllProjectsViewTestCase(ProvisionedProjectTestCase):
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)
@@ -44,6 +44,9 @@ class AllProjectsViewTestCase(ProvisionedProjectTestCase):
class ProvisionedLayersProjectTestCase(ProvisionedProjectTestCase):
LAYER_NAME = "base-layer"
RECIPE_NAME = "base-recipe"
def setUp(self):
super(ProvisionedLayersProjectTestCase, self).setUp()
self.layersource, created = LayerSource.objects.get_or_create(sourcetype = LayerSource.TYPE_IMPORTED)
@@ -51,6 +54,13 @@ class ProvisionedLayersProjectTestCase(ProvisionedProjectTestCase):
self.layer, created = Layer.objects.get_or_create(name=XHRDataTypeAheadTestCase.LAYER_NAME, layer_source=self.layersource, vcs_url="/tmp/")
self.lv, created = Layer_Version.objects.get_or_create(layer = self.layer, project = self.project, layer_source=self.layersource, commit="master")
self.recipe, created = Recipe.objects.get_or_create(layer_source=self.layersource, name=ProvisionedLayersProjectTestCase.RECIPE_NAME, version="1.2", summary="one recipe", description="recipe", layer_version=self.lv)
self.machine, created = Machine.objects.get_or_create(layer_version=self.lv, name="wisk", description="wisking machine")
ProjectLayer.objects.get_or_create(project = self.project,
layercommit = self.lv)
class XHRDataTypeAheadTestCase(ProvisionedLayersProjectTestCase):
@@ -58,20 +68,60 @@ class XHRDataTypeAheadTestCase(ProvisionedLayersProjectTestCase):
super(XHRDataTypeAheadTestCase, self).setUp()
self.assertTrue(self.lv in self.project.compatible_layerversions())
def test_xhr_datatypeahead_layer(self):
response = self.client.get(reverse('xhr_datatypeahead', args=(self.project.id,)), {"type": "layerdeps"})
self.assertEqual(response.status_code, 200)
self.assertTrue(response['Content-Type'].startswith('application/json'))
def test_typeaheads(self):
layers_url = reverse('xhr_layerstypeahead', args=(self.project.id,))
prj_url = reverse('xhr_projectstypeahead')
try:
import json
data = json.loads(response.content)
except:
self.fail("Response %s is not json-loadable" % response.content)
urls = [ layers_url,
prj_url,
reverse('xhr_recipestypeahead', args=(self.project.id,)),
reverse('xhr_machinestypeahead', args=(self.project.id,)),
]
self.assertTrue("error" in data)
self.assertEqual(data["error"], "ok")
self.assertTrue("list" in data)
self.assertTrue(len(data["list"]) > 0)
def basic_reponse_check(reponse, url):
self.assertEqual(response.status_code, 200)
self.assertTrue(response['Content-Type'].startswith('application/json'))
self.assertTrue(XHRDataTypeAheadTestCase.LAYER_NAME in map(lambda x: x["name"], data["list"]))
try:
data = json.loads(response.content)
except:
self.fail("Response %s is not json-loadable" % response.content)
self.assertTrue("error" in data)
self.assertEqual(data["error"], "ok")
self.assertTrue("results" in data)
# We got a result so now check the fields
if len(data['results']) > 0:
result = data['results'][0]
self.assertTrue(len(result['name']) > 0)
self.assertTrue("detail" in result)
self.assertTrue(result['id'] > 0)
# Special check for the layers typeahead's extra fields
if url == layers_url:
self.assertTrue(len(result['layerdetailurl']) > 0)
self.assertTrue(len(result['vcs_url']) > 0)
self.assertTrue(len(result['vcs_reference']) > 0)
# Special check for project typeahead extra fields
elif url == prj_url:
self.assertTrue(len(result['projectPageUrl']) > 0)
return True
return False
import string
for url in urls:
results = False
for typeing in list(string.ascii_letters):
response = self.client.get(url, { 'search' : typeing })
results = basic_reponse_check(response, url)
if results:
break
# After "typeing" the alpabet we should have result true
# from each of the urls
self.assertTrue(results)