Skip to content

Commit 3425fee

Browse files
committed
tests: added tests for netteForms.js
1 parent fcdb7e9 commit 3425fee

File tree

9 files changed

+428
-9
lines changed

9 files changed

+428
-9
lines changed

.travis.yml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,22 @@ matrix:
1010
allow_failures:
1111
- php: hhvm
1212

13+
include:
14+
- php: 5.5
15+
env: netteForms=1
16+
1317
script:
14-
- vendor/bin/tester tests -s -p php -c tests/php-unix.ini
15-
- php code-checker/src/code-checker.php
18+
- if [ "$netteForms" != 1 ]; then vendor/bin/tester tests -s -p php -c tests/php-unix.ini; fi
19+
- if [ "$netteForms" != 1 ]; then php code-checker/src/code-checker.php; fi
20+
- if [ "$netteForms" == 1 ]; then grunt --gruntfile tests/netteForms/Gruntfile.js test; fi
1621

1722
after_failure:
1823
# Print *.actual content
1924
- for i in $(find tests -name \*.actual); do echo "--- $i"; cat $i; echo; echo; done
2025

2126
before_script:
2227
# Install Nette Tester & Code Checker
23-
- composer install --no-interaction --dev --prefer-source
24-
- composer create-project nette/code-checker code-checker ~2.3 --no-interaction --prefer-source
28+
- if [ "$netteForms" != 1 ]; then composer install --no-interaction --dev --prefer-source; fi
29+
- if [ "$netteForms" != 1 ]; then composer create-project nette/code-checker code-checker ~2.3 --no-interaction --prefer-source; fi
30+
- if [ "$netteForms" == 1 ]; then npm install -g grunt-cli; cd tests/netteForms; npm install; bower install; cd ../..; fi
31+

src/assets/netteForms.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ Nette.validators = {
257257
},
258258

259259
equal: function(elem, arg, val) {
260+
/* jshint eqeqeq: false */
260261
if (arg === undefined) {
261262
return null;
262263
}
@@ -301,9 +302,9 @@ Nette.validators = {
301302

302303
regexp: function(elem, arg, val) {
303304
var parts = typeof arg === 'string' ? arg.match(/^\/(.*)\/([imu]*)$/) : false;
304-
if (parts) { try {
305-
return (new RegExp(parts[1], parts[2].replace('u', ''))).test(val);
306-
} catch (e) {} }
305+
try {
306+
return parts && (new RegExp(parts[1], parts[2].replace('u', ''))).test(val);
307+
} catch (e) {}
307308
},
308309

309310
pattern: function(elem, arg, val) {
@@ -385,7 +386,7 @@ Nette.toggleForm = function(form, elem) {
385386
*/
386387
Nette.toggleControl = function(elem, rules, topSuccess, firsttime) {
387388
rules = rules || Nette.parseJSON(elem.getAttribute('data-nette-rules'));
388-
var has = false, __hasProp = Object.prototype.hasOwnProperty, handler = function() {
389+
var has = false, hasProp = Object.prototype.hasOwnProperty, handler = function () {
389390
Nette.toggleForm(elem.form, elem);
390391
}, handled = [];
391392

@@ -424,7 +425,7 @@ Nette.toggleControl = function(elem, rules, topSuccess, firsttime) {
424425
}
425426
}
426427
for (var id2 in rule.toggle || []) {
427-
if (__hasProp.call(rule.toggle, id2)) {
428+
if (hasProp.call(rule.toggle, id2)) {
428429
Nette.toggles[id2] = Nette.toggles[id2] || (rule.toggle[id2] ? success : !success);
429430
}
430431
}

tests/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
/*/output
22
/test.log
33
/tmp
4+
/netteForms/node_modules
5+
/netteForms/bower_components

tests/netteForms/.jshintrc

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
// Predefined globals whom JSHint will ignore.
3+
"browser" : true, // Standard browser globals e.g. `window`, `document`.
4+
"predef" : [ // Custom globals.
5+
"FileList"
6+
],
7+
8+
"debug" : false, // Allow debugger statements e.g. browser breakpoints.
9+
"devel" : true, // Allow developments statements e.g. `console.log();`.
10+
11+
// ECMAScript 5.
12+
"es5" : false, // Allow ECMAScript 5 syntax.
13+
14+
// The Good Parts.
15+
"asi" : true, // Tolerate Automatic Semicolon Insertion (no semicolons).
16+
"laxbreak" : true, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons.
17+
"bitwise" : true, // Prohibit bitwise operators (&, |, ^, etc.).
18+
"boss" : false, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments.
19+
"curly" : true, // Require {} for every new block or scope.
20+
"eqeqeq" : true, // Require triple equals i.e. `===`.
21+
"eqnull" : false, // Tolerate use of `== null`.
22+
"evil" : true, // Tolerate use of `eval`.
23+
"expr" : false, // Tolerate `ExpressionStatement` as Programs.
24+
"forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`.
25+
"immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );`
26+
"latedef" : true, // Prohipit variable use before definition.
27+
"loopfunc" : true, // Allow functions to be defined within loops.
28+
"noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`.
29+
"regexp" : true, // Prohibit `.` and `[^...]` in regular expressions.
30+
"regexdash" : false, // Tolerate unescaped last dash i.e. `[-...]`.
31+
"scripturl" : true, // Tolerate script-targeted URLs.
32+
"shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`.
33+
"supernew" : false, // Tolerate `new function () { ... };` and `new Object;`.
34+
"undef" : true, // Require all non-global variables be declared before they are used.
35+
36+
// Personal styling preferences.
37+
"newcap" : true, // Require capitalization of all constructor functions e.g. `new F()`.
38+
"noempty" : true, // Prohibit use of empty blocks.
39+
"nonew" : true, // Prohibit use of constructors for side-effects.
40+
"nomen" : true, // Prohibit use of initial or trailing underbars in names.
41+
"onevar" : false, // Allow only one `var` statement per function.
42+
"plusplus" : false, // Prohibit use of `++` & `--`.
43+
"sub" : false // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`.
44+
}

tests/netteForms/Gruntfile.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module.exports = function(grunt) {
2+
grunt.initConfig({
3+
jshint: {
4+
options: {
5+
jshintrc: '.jshintrc'
6+
},
7+
all: [
8+
'../../src/assets/*.js'
9+
]
10+
},
11+
jasmine: {
12+
test: {
13+
src: '../../src/assets/*.js',
14+
options: {
15+
vendor: [
16+
'bower_components/fixtures/fixtures.js'
17+
],
18+
specs: 'spec/*Spec.js'
19+
}
20+
}
21+
}
22+
});
23+
24+
grunt.loadNpmTasks('grunt-contrib-jshint');
25+
grunt.loadNpmTasks('grunt-contrib-jasmine');
26+
27+
grunt.registerTask('test', [
28+
'jshint','jasmine'
29+
]);
30+
};

tests/netteForms/SpecRunner.html

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8">
5+
<title>Jasmine Spec Runner v2.2.0</title>
6+
7+
<link rel="stylesheet" href="bower_components/jasmine/lib/jasmine-core/jasmine.css">
8+
9+
<script src="bower_components/jasmine/lib/jasmine-core/jasmine.js"></script>
10+
<script src="bower_components/jasmine/lib/jasmine-core/jasmine-html.js"></script>
11+
<script src="bower_components/jasmine/lib/jasmine-core/boot.js"></script>
12+
<script src="bower_components/fixtures/fixtures.js"></script>
13+
14+
<script src="../../src/assets/netteForms.js"></script>
15+
16+
<script src="spec/Nette.validateRuleSpec.js"></script>
17+
</head>
18+
19+
<body>
20+
</body>
21+
</html>

tests/netteForms/bower.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"name": "netteForms.js tests",
3+
"dependencies": {
4+
"jasmine": "~2.2.1",
5+
"fixtures": "~1.5.3"
6+
}
7+
}

tests/netteForms/package.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"devDependencies": {
3+
"bower": "^1.3.12",
4+
"grunt": "^0.4.5",
5+
"grunt-contrib-jasmine": "^0.8.2",
6+
"grunt-contrib-jshint": "^0.11.0"
7+
}
8+
}

0 commit comments

Comments
 (0)