summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/toaster/toastergui/tests.py98
1 files changed, 66 insertions, 32 deletions
diff --git a/bitbake/lib/toaster/toastergui/tests.py b/bitbake/lib/toaster/toastergui/tests.py
index a4cab58483..869c39d84c 100644
--- a/bitbake/lib/toaster/toastergui/tests.py
+++ b/bitbake/lib/toaster/toastergui/tests.py
@@ -83,8 +83,12 @@ class ViewTests(TestCase):
83 self.assertEqual(data["error"], "ok") 83 self.assertEqual(data["error"], "ok")
84 self.assertTrue("rows" in data) 84 self.assertTrue("rows" in data)
85 85
86 self.assertTrue(self.project.name in [x["name"] for x in data["rows"]]) 86 name_found = False
87 self.assertTrue("id" in data["rows"][0]) 87 for row in data["rows"]:
88 name_found = row['name'].find(self.project.name)
89
90 self.assertTrue(name_found,
91 "project name not found in projects table")
88 92
89 def test_typeaheads(self): 93 def test_typeaheads(self):
90 """Test typeahead ReST API""" 94 """Test typeahead ReST API"""
@@ -322,22 +326,24 @@ class ViewTests(TestCase):
322 self.assertEqual(response.status_code, 200, 'should be 200 OK status') 326 self.assertEqual(response.status_code, 200, 'should be 200 OK status')
323 327
324 # check other columns have been populated correctly 328 # check other columns have been populated correctly
325 self.assertEqual(row1['name'], self.recipe1.name) 329 self.assertTrue(self.recipe1.name in row1['name'])
326 self.assertEqual(row1['version'], self.recipe1.version) 330 self.assertTrue(self.recipe1.version in row1['version'])
327 self.assertEqual(row1['get_description_or_summary'], 331 self.assertTrue(self.recipe1.description in
328 self.recipe1.description) 332 row1['get_description_or_summary'])
329 self.assertEqual(row1['layer_version__layer__name'], 333
330 self.recipe1.layer_version.layer.name) 334 self.assertTrue(self.recipe1.layer_version.layer.name in
331 self.assertEqual(row2['name'], self.recipe2.name) 335 row1['layer_version__layer__name'])
332 self.assertEqual(row2['version'], self.recipe2.version) 336
333 self.assertEqual(row2['get_description_or_summary'], 337 self.assertTrue(self.recipe2.name in row2['name'])
334 self.recipe2.description) 338 self.assertTrue(self.recipe2.version in row2['version'])
335 self.assertEqual(row2['layer_version__layer__name'], 339 self.assertTrue(self.recipe2.description in
336 self.recipe2.layer_version.layer.name) 340 row2['get_description_or_summary'])
341
342 self.assertTrue(self.recipe2.layer_version.layer.name in
343 row2['layer_version__layer__name'])
337 344
338 def test_toaster_tables(self): 345 def test_toaster_tables(self):
339 """Test all ToasterTables instances""" 346 """Test all ToasterTables instances"""
340 current_recipes = self.project.get_available_recipes()
341 347
342 def get_data(table, options={}): 348 def get_data(table, options={}):
343 """Send a request and parse the json response""" 349 """Send a request and parse the json response"""
@@ -354,12 +360,30 @@ class ViewTests(TestCase):
354 'layerid': self.lver.pk, 360 'layerid': self.lver.pk,
355 'recipeid': self.recipe1.pk, 361 'recipeid': self.recipe1.pk,
356 'recipe_id': image_recipe.pk, 362 'recipe_id': image_recipe.pk,
357 'custrecipeid': self.customr.pk 363 'custrecipeid': self.customr.pk}
358 }
359 364
360 response = table.get(request, **args) 365 response = table.get(request, **args)
361 return json.loads(response.content) 366 return json.loads(response.content)
362 367
368 def get_text_from_td(td):
369 """If we have html in the td then extract the text portion"""
370 # just so we don't waste time parsing non html
371 if "<" not in td:
372 ret = td
373 else:
374 ret = BeautifulSoup(td).text
375
376 # We change the td into ascii as a way to remove characters
377 # such as \xa0 (non break space) which mess with the ordering
378 # comparisons
379 ret.strip().encode('ascii',
380 errors='replace').replace('?', ' ')
381 # Case where the td is empty
382 if len(ret):
383 return "0"
384 else:
385 return ret
386
363 # Get a list of classes in tables module 387 # Get a list of classes in tables module
364 tables = inspect.getmembers(toastergui.tables, inspect.isclass) 388 tables = inspect.getmembers(toastergui.tables, inspect.isclass)
365 389
@@ -379,8 +403,10 @@ class ViewTests(TestCase):
379 "Cannot test on a %s table with < 1 row" % name) 403 "Cannot test on a %s table with < 1 row" % name)
380 404
381 if table.default_orderby: 405 if table.default_orderby:
382 row_one = all_data['rows'][0][table.default_orderby.strip("-")] 406 row_one = get_text_from_td(
383 row_two = all_data['rows'][1][table.default_orderby.strip("-")] 407 all_data['rows'][0][table.default_orderby.strip("-")])
408 row_two = get_text_from_td(
409 all_data['rows'][1][table.default_orderby.strip("-")])
384 410
385 if '-' in table.default_orderby: 411 if '-' in table.default_orderby:
386 self.assertTrue(row_one >= row_two, 412 self.assertTrue(row_one >= row_two,
@@ -399,28 +425,36 @@ class ViewTests(TestCase):
399 # If a column is orderable test it in both order 425 # If a column is orderable test it in both order
400 # directions ordering on the columns field_name 426 # directions ordering on the columns field_name
401 ascending = get_data(table_cls(), 427 ascending = get_data(table_cls(),
402 {"orderby" : column['field_name']}) 428 {"orderby": column['field_name']})
403 429
404 row_one = ascending['rows'][0][column['field_name']] 430 row_one = get_text_from_td(
405 row_two = ascending['rows'][1][column['field_name']] 431 ascending['rows'][0][column['field_name']])
432 row_two = get_text_from_td(
433 ascending['rows'][1][column['field_name']])
406 434
407 self.assertTrue(row_one <= row_two, 435 self.assertTrue(row_one <= row_two,
408 "Ascending sort applied but row 0 is less " 436 "Ascending sort applied but row 0: \"%s\""
409 "than row 1 %s %s " % 437 " is less than row 1: \"%s\" "
410 (column['field_name'], name)) 438 "%s %s " %
411 439 (row_one, row_two,
440 column['field_name'], name))
412 441
413 descending = get_data(table_cls(), 442 descending = get_data(table_cls(),
414 {"orderby" : 443 {"orderby":
415 '-'+column['field_name']}) 444 '-'+column['field_name']})
416 445
417 row_one = descending['rows'][0][column['field_name']] 446 row_one = get_text_from_td(
418 row_two = descending['rows'][1][column['field_name']] 447 descending['rows'][0][column['field_name']])
448 row_two = get_text_from_td(
449 descending['rows'][1][column['field_name']])
419 450
420 self.assertTrue(row_one >= row_two, 451 self.assertTrue(row_one >= row_two,
421 "Descending sort applied but row 0 is " 452 "Descending sort applied but row 0: %s"
422 "greater than row 1 %s %s" % 453 "is greater than row 1: %s"
423 (column['field_name'], name)) 454 "field %s table %s" %
455 (row_one,
456 row_two,
457 column['field_name'], name))
424 458
425 # If the two start rows are the same we haven't actually 459 # If the two start rows are the same we haven't actually
426 # changed the order 460 # changed the order