From c281e786c805f400ca23d4412e29d396632d5441 Mon Sep 17 00:00:00 2001 From: Adam Young Date: Mon, 31 Jan 2011 09:09:26 -0500 Subject: widget unit tests unit test for basic functionality, text, and checkbox widgets --- install/ui/test/aci_tests.html | 2 +- install/ui/test/all_tests.html | 1 + install/ui/test/index.html | 1 + install/ui/test/widget_tests.html | 26 ++++++ install/ui/test/widget_tests.js | 166 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 195 insertions(+), 1 deletion(-) create mode 100755 install/ui/test/widget_tests.html create mode 100644 install/ui/test/widget_tests.js (limited to 'install/ui/test') diff --git a/install/ui/test/aci_tests.html b/install/ui/test/aci_tests.html index 16ab0f7d7..0847e1501 100755 --- a/install/ui/test/aci_tests.html +++ b/install/ui/test/aci_tests.html @@ -24,7 +24,7 @@ -

Certificate Test Suite

+

ACI Test Suite

diff --git a/install/ui/test/all_tests.html b/install/ui/test/all_tests.html index f703519b3..1d2c7b300 100644 --- a/install/ui/test/all_tests.html +++ b/install/ui/test/all_tests.html @@ -25,6 +25,7 @@ +

Complete Test Suite

diff --git a/install/ui/test/index.html b/install/ui/test/index.html index 78b41e9b5..948cce000 100644 --- a/install/ui/test/index.html +++ b/install/ui/test/index.html @@ -31,6 +31,7 @@
  • Navigation Test Suite
  • Certificate Test Suite
  • Access Control Interface Test Suite +
  • Widget Test Suite diff --git a/install/ui/test/widget_tests.html b/install/ui/test/widget_tests.html new file mode 100755 index 000000000..e38b44216 --- /dev/null +++ b/install/ui/test/widget_tests.html @@ -0,0 +1,26 @@ + + + + Widget Test Suite + + + + + + + + + + + + + + +

    Widget Test Suite

    +

    +
    +

    +
      +
      + + diff --git a/install/ui/test/widget_tests.js b/install/ui/test/widget_tests.js new file mode 100644 index 000000000..758377775 --- /dev/null +++ b/install/ui/test/widget_tests.js @@ -0,0 +1,166 @@ +/* Authors: + * Adam Young + * + * Copyright (C) 2010 Red Hat + * see file 'COPYING' for use and warranty information + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; version 2 only + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +var widget_container; + + +module('widget',{ + setup: function() { + IPA.ajax_options.async = false; + IPA.init( + "data", + true, + function(data, text_status, xhr) { + ok(true, "ipa_init() succeeded."); + }, + function(xhr, text_status, error_thrown) { + ok(false, "ipa_init() failed: "+error_thrown); + } + ); + widget_container = $('
      ').appendTo(document.body); + }, + teardown: function() { + widget_container.remove(); + }} +); + + + +function base_widget_test(widget,entity_name, field_name,value){ + ok (widget, "Created Widget"); + widget.init(); + ok(!widget.label,'widget with no entity has no label'); + ok(!widget.tooltip,'widget with entity and name has no tooltip'); + + //init reads param info for an entity. We'll use the user entity + widget.entity_name = entity_name; + widget.name = field_name; + + widget.init(); + ok(widget.label,'widget with entity and name has label'); + ok(widget.tooltip,'widget with entity and name has tooltip'); + + + ok(!widget.container,'widget has no container before setup'); + widget.create(widget_container); + widget.setup(widget_container); + + ok(widget.container,'widget has container after setup'); + + +} + + +function widget_string_test(widget, value){ + var value = 'test_title'; + var mock_record = {'title': value}; + + widget.load(mock_record); + + ok(widget.save() instanceof Array,'save returns array'); + + + mock_record = {'title':[value]}; + widget.load(mock_record); + + ok(widget.save() instanceof Array,'save returns array'); + +} + +test("Testing base widget.", function() { + var update_called = false; + var spec = { + update:function(){ + update_called = true; + } + }; + + var widget = IPA.widget(spec); + base_widget_test(widget,'user','title','test_value'); + widget_string_test(widget); + ok (update_called, 'Update called'); + +}); + + +test("Testing text widget.", function() { + var widget = IPA.text_widget({undo:true}); + base_widget_test(widget,'user','title','test_value'); + widget_string_test(widget); + + + var input = $('input[type=text]',widget_container); + input.val('changed'); + input.keyup(); + same(widget.save(),['changed'], "Setting Value"); + same(widget.is_dirty(),true, "Click sets is_dirty"); + + var undo = widget.get_undo(); + undo.click(); + same(widget.is_dirty(),false, "Undo Clears is_dirty"); + + + var old_pattern = widget.param_info.pattern; + + widget.param_info.pattern ='abc'; + input.val('not right'); + input.keyup(); + same(widget.valid,false, 'Field is not valid'); + var error_field = widget.get_error_link(); + + same(error_field.css('display'),'block','error field is visible'); + + + input.val('abc'); + input.keyup(); + same(widget.valid,true, 'Field is valid'); + same(error_field.css('display'),'none','error field not visible'); + + widget.param_info.pattern = old_pattern; + +}); + +test("Testing checkbox widget.", function() { + var widget = IPA.checkbox_widget(); + base_widget_test(widget,'user','title','test_value'); + + mock_record = {'title':'something'}; + + widget.load(mock_record); + same(widget.save(),[true], "Checkbox is set"); + + mock_record = {'title':null}; + + widget.load(mock_record); + same(widget.save(), [false], "Checkbox is not set"); + + var input = $('input[type=checkbox]',widget_container); + + same(input.length,1,'One control in the container'); + + input.click(); + + same(widget.save(),[true], "Click sets checkbox"); + same(widget.is_dirty(),true, "Click sets is_dirty"); + + +}); + -- cgit