diff --git a/History.txt b/History.txt index 76c12f8..2e9b1b8 100644 --- a/History.txt +++ b/History.txt @@ -1,3 +1,8 @@ +== 0.7.3 2009-03-21 + +* New assertions: assertNotHasClass(element, class) +* Fixed algorithm for assertHasClass + == 0.7.2 2008-10-08 * AJAX callback from IE6 working [choan] diff --git a/Rakefile b/Rakefile index 9968899..9a702fe 100644 --- a/Rakefile +++ b/Rakefile @@ -12,7 +12,7 @@ require 'rake/packagetask' $:.unshift File.dirname(__FILE__) + "/lib" -APP_VERSION = '0.7.2' +APP_VERSION = '0.7.3' APP_NAME = 'jsunittest' RUBYFORGE_PROJECT = 'drnicjavascript' APP_FILE_NAME= "#{APP_NAME}.js" diff --git a/src/assertions.js b/src/assertions.js index f30b6cf..a5e33f4 100644 --- a/src/assertions.js +++ b/src/assertions.js @@ -146,8 +146,21 @@ JsUnitTest.Unit.Assertions = { assertHasClass: function(element, klass, message) { element = JsUnitTest.$(element); message = this.buildMessage(message || 'assertHasClass', '? doesn\'t have class .', element, klass); - this.assertBlock(message, function() { - return !!element.className.match(new RegExp(klass)) + this.assertBlock(message, function() { + var elementClassName = element.className; + return (elementClassName.length > 0 && (elementClassName == klass || + new RegExp("(^|\\s)" + klass + "(\\s|$)").test(elementClassName))); + // return !!element.className.match(new RegExp(klass)) + }); + }, + + assertNotHasClass: function(element, klass, message) { + element = JsUnitTest.$(element); + message = this.buildMessage(message || 'assertNotHasClass', '? does have class .', element, klass); + this.assertBlock(message, function() { + var elementClassName = element.className; + return !(elementClassName.length > 0 && (elementClassName == klass || + new RegExp("(^|\\s)" + klass + "(\\s|$)").test(elementClassName))); }); }, diff --git a/test/unit/assertions_test.html b/test/unit/assertions_test.html index 4a53c61..6bcef00 100644 --- a/test/unit/assertions_test.html +++ b/test/unit/assertions_test.html @@ -165,10 +165,15 @@

JavaScript unit test file

testHasClass: function() { with(this) { //
assertHasClass('test_1', 'a'); - // info(document.getElementById('test_1').className); assertHasClass(document.getElementById('test_1'), 'dddd'); }}, + testNotHasClass: function() { with(this) { + //
+ assertNotHasClass('test_1', 'abc'); + assertNotHasClass(document.getElementById('test_1'), 'ddd'); + }}, + testAssertVisible: function() { with(this) { assertVisible('testcss1'); assertNotVisible('testcss1_span');