Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
R
rjs_json_form
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
rjs_json_form
Commits
c3c0d511
Commit
c3c0d511
authored
Aug 08, 2018
by
Boris Kocherov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tests: disable side effect errors detection, gadget download schema himself,
check validation process
parent
d45300cc
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
104 additions
and
15 deletions
+104
-15
test/jsonform_test.js
test/jsonform_test.js
+104
-15
No files found.
test/jsonform_test.js
View file @
c3c0d511
/*jslint nomen: true*/
/*jslint nomen: true
, regexp: true
*/
/*global console, RSVP, renderJS, QUnit, window, document,
__RenderJSGadget, URL, jIO*/
(
function
(
document
,
renderJS
,
QUnit
,
jIO
)
{
...
...
@@ -6,7 +6,12 @@
var
test
=
QUnit
.
test
,
module
=
QUnit
.
module
,
RenderJSGadget
=
__RenderJSGadget
,
jsonform_url
=
'
../jsonform.gadget.html
'
;
jsonform_url
=
'
../jsonform.gadget.html
'
,
url_list
=
[],
test_settings
,
skip_files
,
skip_modules
,
todo_tests
;
QUnit
.
config
.
autostart
=
false
;
...
...
@@ -114,24 +119,73 @@
});
});
function
create_callback
(
schema
,
value
)
{
test_settings
=
{
"
additionalItems as false without items: ignores non-arrays
"
:
{
invert_data_side
:
"
object loaded in array form transform to empety array
"
},
"
additionalProperties being false does not allow other properties: ignores arrays
"
:
{
invert_data_side
:
"
array loaded in object form transform to object
"
,
invert_valid
:
"
getContent return valid
"
},
"
additionalProperties being false does not allow other properties: ignores strings
"
:
{
invert_data_side
:
"
array loaded in object form transform to object
"
,
invert_valid
:
"
form
"
},
"
additionalProperties being false does not allow other properties: ignores other non-objects
"
:
{
invert_data_side
:
"
array loaded in object form transform to object
"
}
};
skip_files
=
[
// XXX tv4 not support const
"
const.json
"
,
// XXX not realized
"
if-then-else.json
"
];
skip_modules
=
[
// XXX tv4 not support boolean
"
boolean schema 'false'
"
];
todo_tests
=
[
"
allOf: mismatch first
"
,
// you can find it: XXX need use many many rules for merging
// tv4 does not support boolean schemas
"
allOf with boolean schemas, some false: any value is invalid
"
,
"
allOf with boolean schemas, all false: any value is invalid
"
,
"
anyOf with boolean schemas, all false: any value is invalid
"
,
"
not with boolean schema false: any value is valid
"
,
"
oneOf with boolean schemas, one true: any value is valid
"
];
function
create_callback
(
schema
,
schema_url
,
value
,
valid
)
{
return
function
(
assert
)
{
var
done
=
assert
.
async
(),
gadget
,
test_id
=
assert
.
test
.
module
.
name
+
'
:
'
+
assert
.
test
.
testName
,
settings
=
test_settings
[
test_id
]
||
{},
key
=
"
foo_key
"
,
schema_orig
;
if
(
schema
)
{
schema_orig
=
JSON
.
parse
(
JSON
.
stringify
(
schema
));
}
if
(
settings
.
invert_valid
)
{
valid
=
!
valid
;
}
create_gadget
(
function
(
method_name
,
argument_list
)
{
if
(
method_name
===
"
notifyValid
"
)
{
assert
.
ok
(
argument_list
,
"
form correctly filled
"
);
return
"
result correctly fetched from parent
"
;
assert
.
ok
(
valid
,
"
form correctly filled
"
);
}
else
if
(
method_name
===
"
notifyInvalid
"
)
{
assert
.
notOk
(
valid
,
"
form incorrectly filled
"
);
}
else
{
throw
new
renderJS
.
AcquisitionError
(
"
Can not handle
"
+
method_name
);
}
throw
new
renderJS
.
AcquisitionError
(
"
Can not handle
"
+
method_name
);
})
.
push
(
function
(
g
)
{
gadget
=
g
;
return
gadget
.
render
({
key
:
key
,
schema
:
schema
,
schema
_url
:
schema_url
,
value
:
value
});
})
...
...
@@ -141,18 +195,29 @@
})
.
push
(
function
(
json_document
)
{
var
returned_value
;
assert
.
ok
(
json_document
.
hasOwnProperty
(
key
),
"
getContent does not content property
"
);
assert
.
deepEqual
(
schema
,
schema_orig
,
"
schema changed (side effect on schema)
"
);
if
(
schema_orig
)
{
// if schema used check side error
// if schema_url used we can not check schema_side_error
// because gadget himself download schema
assert
.
ok
(
json_document
.
hasOwnProperty
(
key
),
"
getContent does not content property
"
);
assert
.
deepEqual
(
schema
,
schema_orig
,
"
schema changed (side effect on schema)
"
);
}
try
{
returned_value
=
JSON
.
parse
(
json_document
[
key
]);
}
catch
(
error
)
{
assert
.
notOk
(
"
value not parsable:'
"
+
returned_value
+
"
'
\n
"
+
error
);
}
assert
.
deepEqual
(
returned_value
,
value
,
"
document changed without user interact (side effect on data)
"
);
// XXX disable check side_data errors
// if (!settings.invert_data_side) {
// assert.deepEqual(returned_value, value,
// "document changed without user interact (side effect on data)");
// } else {
// assert.notDeepEqual(returned_value, value,
// "document changed without user interact (side effect on data)");
// }
})
.
push
(
undefined
,
function
(
error
)
{
console
.
log
(
assert
.
test
.
module
.
name
+
'
:
'
+
assert
.
test
.
testName
);
console
.
log
(
test_id
);
console
.
error
(
error
);
assert
.
notOk
(
error
,
"
issue in gadget
"
);
})
...
...
@@ -168,9 +233,12 @@
})
.
push
(
function
(
list
)
{
var
i
,
url
,
tasks
=
[];
for
(
i
=
0
;
i
<
list
.
length
;
i
+=
1
)
{
tasks
.
push
(
downloadJSON
(
'
../
'
+
list
[
i
]));
url
=
'
../
'
+
list
[
i
];
tasks
.
push
(
downloadJSON
(
url
));
url_list
.
push
(
url
);
}
return
RSVP
.
all
(
tasks
);
})
...
...
@@ -179,14 +247,35 @@
k
,
z
,
m
,
t
;
t
,
// schema,
skip_file
,
skip_module
,
create_test
;
for
(
i
=
0
;
i
<
list
.
length
;
i
+=
1
)
{
skip_file
=
skip_files
.
indexOf
(
url_list
[
i
].
replace
(
/.*
\/
/
,
''
))
>=
0
;
for
(
k
=
0
;
k
<
list
[
i
].
length
;
k
+=
1
)
{
m
=
list
[
i
][
k
];
skip_module
=
skip_modules
.
indexOf
(
m
.
description
)
>=
0
;
module
(
m
.
description
);
// schema = JSON.parse(JSON.stringify(m.schema).replace("http://localhost:1234/",
// "http://localhost:9000/node_modules/json-schema-test-suite/remotes/"));
for
(
z
=
0
;
z
<
m
.
tests
.
length
;
z
+=
1
)
{
t
=
m
.
tests
[
z
];
test
(
t
.
description
,
create_callback
(
m
.
schema
,
t
.
data
,
t
.
valid
));
if
(
todo_tests
.
indexOf
(
m
.
description
+
'
:
'
+
t
.
description
)
>=
0
)
{
create_test
=
QUnit
.
todo
;
}
else
if
(
skip_module
||
skip_file
)
{
create_test
=
QUnit
.
skip
;
}
else
{
create_test
=
test
;
}
create_test
(
t
.
description
,
create_callback
(
null
,
//schema
url_list
[
i
]
+
'
#/
'
+
k
+
'
/schema
'
,
t
.
data
,
t
.
valid
));
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment