diff options
author | Adam Young <ayoung@redhat.com> | 2011-01-31 09:09:26 -0500 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2011-01-31 13:12:53 -0500 |
commit | c281e786c805f400ca23d4412e29d396632d5441 (patch) | |
tree | 93acc12954e3caa86d0afd0428b11f4db889621b | |
parent | 6db310531583385102c4139fe46a6eec0e5e1a0a (diff) | |
download | freeipa-c281e786c805f400ca23d4412e29d396632d5441.tar.gz freeipa-c281e786c805f400ca23d4412e29d396632d5441.tar.xz freeipa-c281e786c805f400ca23d4412e29d396632d5441.zip |
widget unit tests
unit test for basic functionality, text, and checkbox widgets
-rwxr-xr-x | install/ui/test/aci_tests.html | 2 | ||||
-rw-r--r-- | install/ui/test/all_tests.html | 1 | ||||
-rw-r--r-- | install/ui/test/index.html | 1 | ||||
-rwxr-xr-x | install/ui/test/widget_tests.html | 26 | ||||
-rw-r--r-- | install/ui/test/widget_tests.js | 166 |
5 files changed, 195 insertions, 1 deletions
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 @@ <script type="text/javascript" src="aci_tests.js"></script> </head> <body> - <h1 id="qunit-header">Certificate Test Suite</h1> + <h1 id="qunit-header">ACI Test Suite</h1> <h2 id="qunit-banner"></h2> <div id="qunit-testrunner-toolbar"></div> <h2 id="qunit-userAgent"></h2> 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 @@ <script type="text/javascript" src="navigation_tests.js"></script> <script type="text/javascript" src="certificate_tests.js"></script> <script type="text/javascript" src="aci_tests.js"></script> + <script type="text/javascript" src="widget_tests.js"></script> </head> <body> <h1 id="qunit-header">Complete Test Suite</h1> 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 @@ <li><a href="navigation_tests.html">Navigation Test Suite</a> <li><a href="certificate_tests.html">Certificate Test Suite</a> <li><a href="aci_tests.html">Access Control Interface Test Suite</a> + <li><a href="widget_tests.html">Widget Test Suite</a> </ul> </div> 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 @@ +<!DOCTYPE html> +<html> +<head> + <title>Widget Test Suite</title> + <link rel="stylesheet" href="qunit.css" type="text/css" media="screen"> + <script type="text/javascript" src="qunit.js"></script> + + + + <script type="text/javascript" src="../jquery.js"></script> + <script type="text/javascript" src="../jquery.ba-bbq.js"></script> + <script type="text/javascript" src="../jquery-ui.js"></script> + <script type="text/javascript" src="../ipa.js"></script> + <script type="text/javascript" src="../widget.js"></script> + + <script type="text/javascript" src="widget_tests.js"></script> +</head> +<body> + <h1 id="qunit-header">Widget Test Suite</h1> + <h2 id="qunit-banner"></h2> + <div id="qunit-testrunner-toolbar"></div> + <h2 id="qunit-userAgent"></h2> + <ol id="qunit-tests"></ol> + <div id="qunit-fixture"></div> +</body> +</html> 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 <ayoung@redhat.com> + * + * 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 = $('<div id="widget"/>').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"); + + +}); + |