react 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -228
- package/ReactJSErrors.js +40 -0
- package/addons.js +4 -0
- package/lib/$.js +46 -0
- package/lib/CSSCore.js +114 -0
- package/lib/CSSProperty.js +90 -0
- package/lib/CSSPropertyOperations.js +97 -0
- package/lib/CallbackRegistry.js +91 -0
- package/lib/ChangeEventPlugin.js +365 -0
- package/lib/CompositionEventPlugin.js +212 -0
- package/lib/DOMChildrenOperations.js +135 -0
- package/lib/DOMProperty.js +266 -0
- package/lib/DOMPropertyOperations.js +168 -0
- package/lib/Danger.js +186 -0
- package/lib/DefaultDOMPropertyConfig.js +187 -0
- package/lib/DefaultEventPluginOrder.js +44 -0
- package/lib/EnterLeaveEventPlugin.js +112 -0
- package/lib/EventConstants.js +73 -0
- package/lib/EventListener.js +61 -0
- package/lib/EventPluginHub.js +190 -0
- package/lib/EventPluginRegistry.js +237 -0
- package/lib/EventPluginUtils.js +185 -0
- package/lib/EventPropagators.js +179 -0
- package/lib/ExecutionEnvironment.js +41 -0
- package/lib/LinkedStateMixin.js +46 -0
- package/lib/LinkedValueMixin.js +68 -0
- package/lib/MobileSafariClickEventPlugin.js +63 -0
- package/lib/PooledClass.js +113 -0
- package/lib/React.js +71 -0
- package/lib/ReactChildren.js +132 -0
- package/lib/ReactComponent.js +515 -0
- package/lib/ReactComponentBrowserEnvironment.js +140 -0
- package/lib/ReactComponentEnvironment.js +24 -0
- package/lib/ReactCompositeComponent.js +1020 -0
- package/lib/ReactCurrentOwner.js +39 -0
- package/lib/ReactDOM.js +194 -0
- package/lib/ReactDOMButton.js +64 -0
- package/lib/ReactDOMComponent.js +374 -0
- package/lib/ReactDOMForm.js +52 -0
- package/lib/ReactDOMIDOperations.js +173 -0
- package/lib/ReactDOMInput.js +169 -0
- package/lib/ReactDOMOption.js +50 -0
- package/lib/ReactDOMSelect.js +160 -0
- package/lib/ReactDOMSelection.js +189 -0
- package/lib/ReactDOMTextarea.js +136 -0
- package/lib/ReactDefaultBatchingStrategy.js +75 -0
- package/lib/ReactDefaultInjection.js +91 -0
- package/lib/ReactDefaultPerf.js +407 -0
- package/lib/ReactErrorUtils.js +46 -0
- package/lib/ReactEventEmitter.js +341 -0
- package/lib/ReactEventEmitterMixin.js +89 -0
- package/lib/ReactEventTopLevelCallback.js +89 -0
- package/lib/ReactInputSelection.js +140 -0
- package/lib/ReactInstanceHandles.js +322 -0
- package/lib/ReactLink.js +54 -0
- package/lib/ReactMarkupChecksum.js +53 -0
- package/lib/ReactMount.js +617 -0
- package/lib/ReactMountReady.js +95 -0
- package/lib/ReactMultiChild.js +441 -0
- package/lib/ReactMultiChildUpdateTypes.js +36 -0
- package/lib/ReactOwner.js +146 -0
- package/lib/ReactPerf.js +88 -0
- package/lib/ReactPropTransferer.js +128 -0
- package/lib/ReactPropTypes.js +158 -0
- package/lib/ReactReconcileTransaction.js +161 -0
- package/lib/ReactServerRendering.js +62 -0
- package/lib/ReactStateSetters.js +111 -0
- package/lib/ReactTextComponent.js +94 -0
- package/lib/ReactTransitionEvents.js +97 -0
- package/lib/ReactTransitionGroup.js +112 -0
- package/lib/ReactTransitionKeySet.js +111 -0
- package/lib/ReactTransitionableChild.js +152 -0
- package/lib/ReactUpdates.js +145 -0
- package/lib/ReactWithAddons.js +41 -0
- package/lib/SelectEventPlugin.js +217 -0
- package/lib/SimpleEventPlugin.js +365 -0
- package/lib/SyntheticClipboardEvent.js +45 -0
- package/lib/SyntheticCompositionEvent.js +51 -0
- package/lib/SyntheticEvent.js +163 -0
- package/lib/SyntheticFocusEvent.js +44 -0
- package/lib/SyntheticKeyboardEvent.js +56 -0
- package/lib/SyntheticMouseEvent.js +85 -0
- package/lib/SyntheticTouchEvent.js +50 -0
- package/lib/SyntheticUIEvent.js +45 -0
- package/lib/SyntheticWheelEvent.js +63 -0
- package/lib/Transaction.js +251 -0
- package/lib/ViewportMetrics.js +37 -0
- package/lib/accumulate.js +54 -0
- package/lib/adler32.js +39 -0
- package/lib/containsNode.js +49 -0
- package/lib/copyProperties.js +54 -0
- package/lib/createArrayFrom.js +94 -0
- package/lib/createNodesFromMarkup.js +93 -0
- package/lib/createObjectFrom.js +61 -0
- package/lib/cx.js +44 -0
- package/lib/dangerousStyleValue.js +57 -0
- package/lib/emptyFunction.js +43 -0
- package/lib/escapeTextForBrowser.js +47 -0
- package/lib/ex.js +49 -0
- package/lib/filterAttributes.js +45 -0
- package/lib/flattenChildren.js +54 -0
- package/lib/forEachAccumulated.js +36 -0
- package/lib/ge.js +76 -0
- package/lib/getActiveElement.js +33 -0
- package/lib/getEventTarget.js +36 -0
- package/lib/getMarkupWrap.js +108 -0
- package/lib/getNodeForCharacterOffset.js +80 -0
- package/lib/getReactRootElementInContainer.js +40 -0
- package/lib/getTextContentAccessor.js +40 -0
- package/lib/getUnboundedScrollPosition.js +45 -0
- package/lib/hyphenate.js +35 -0
- package/lib/invariant.js +54 -0
- package/lib/isEventSupported.js +74 -0
- package/lib/isNode.js +33 -0
- package/lib/isTextInputElement.js +49 -0
- package/lib/isTextNode.js +30 -0
- package/lib/joinClasses.js +44 -0
- package/lib/keyMirror.js +58 -0
- package/lib/keyOf.js +41 -0
- package/lib/memoizeStringOnly.js +39 -0
- package/lib/merge.js +37 -0
- package/lib/mergeHelpers.js +137 -0
- package/lib/mergeInto.js +45 -0
- package/lib/mixInto.js +34 -0
- package/lib/mutateHTMLNodeWithMarkup.js +100 -0
- package/lib/objMap.js +47 -0
- package/lib/objMapKeyVal.js +47 -0
- package/lib/performanceNow.js +42 -0
- package/lib/shallowEqual.js +49 -0
- package/lib/traverseAllChildren.js +127 -0
- package/package.json +33 -31
- package/react.js +4 -0
- package/.npmignore +0 -7
- package/.travis.yml +0 -7
- package/Jakefile.js +0 -39
- package/LICENSE +0 -19
- package/browser-test/dist.html +0 -90
- package/browser-test/index.html +0 -86
- package/browser-test/min.html +0 -90
- package/dist/react.js +0 -3141
- package/dist/react.min.js +0 -22
- package/doc/advanced.md +0 -175
- package/doc/color-def.graffle +0 -938
- package/doc/color-def.png +0 -0
- package/doc/simple.dot +0 -25
- package/doc/simple.png +0 -0
- package/examples/longer-example.js +0 -41
- package/examples/simple.js +0 -45
- package/examples/using-ast-directly.js +0 -30
- package/examples/using-events1.js +0 -79
- package/examples/using-log-events.js +0 -43
- package/lib/base-task.js +0 -120
- package/lib/cb-task.js +0 -84
- package/lib/core.js +0 -138
- package/lib/dsl.js +0 -138
- package/lib/error.js +0 -55
- package/lib/event-collector.js +0 -81
- package/lib/event-manager.js +0 -89
- package/lib/eventemitter.js +0 -20
- package/lib/finalcb-first-task.js +0 -68
- package/lib/finalcb-task.js +0 -65
- package/lib/id.js +0 -22
- package/lib/input-parser.js +0 -56
- package/lib/log-events.js +0 -101
- package/lib/parse.js +0 -41
- package/lib/promise-resolve.js +0 -50
- package/lib/promise-task.js +0 -93
- package/lib/react.js +0 -59
- package/lib/ret-task.js +0 -71
- package/lib/sprintf.js +0 -18
- package/lib/status.js +0 -14
- package/lib/task.js +0 -251
- package/lib/track-tasks.js +0 -74
- package/lib/validate.js +0 -159
- package/lib/vcon.js +0 -113
- package/lib/when-task.js +0 -84
- package/src/dist.build.requirejs +0 -20
- package/test/ast.mocha.js +0 -136
- package/test/cb-task.mocha.js +0 -220
- package/test/core-deferred.mocha.js +0 -143
- package/test/core-when.mocha.js +0 -96
- package/test/core.mocha.js +0 -589
- package/test/dsl.mocha.js +0 -352
- package/test/event-manager.mocha.js +0 -119
- package/test/exec-options.mocha.js +0 -48
- package/test/finalcb-task.mocha.js +0 -58
- package/test/input-parser.mocha.js +0 -86
- package/test/log-events.mocha.js +0 -88
- package/test/mocha.opts +0 -2
- package/test/module-use.mocha.js +0 -164
- package/test/promise-auto-resolve.mocha.js +0 -68
- package/test/ret-task.mocha.js +0 -220
- package/test/task.mocha.js +0 -42
- package/test/validate-cb-task.mocha.js +0 -100
- package/test/validate-ret-task.mocha.js +0 -110
- package/test/validate.mocha.js +0 -324
- package/test/vcon.mocha.js +0 -193
- package/vendor/chai/chai.js +0 -4251
- package/vendor/jquery/jquery-1.7.1.js +0 -9266
- package/vendor/jquery/jquery-1.7.1.min.js +0 -4
- package/vendor/node/util.js +0 -531
- package/vendor/requirejs/require.js +0 -2045
- package/vendor/requirejs/require.min.js +0 -36
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/*global react:true */
|
|
2
|
-
|
|
3
|
-
if (typeof(chai) === 'undefined') {
|
|
4
|
-
var chai = require('chai');
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
if (typeof(react) === 'undefined') {
|
|
8
|
-
var react = require('../'); //require('react');
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
(function () {
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
|
-
var t = chai.assert;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
Testing exec options
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
suite('exec-options');
|
|
21
|
-
|
|
22
|
-
function multiply(x, y, cb) { cb(null, x * y); }
|
|
23
|
-
|
|
24
|
-
test('execOptions as first param', function (done) {
|
|
25
|
-
var fn = react();
|
|
26
|
-
var errors = fn.setAndValidateAST({
|
|
27
|
-
inParams: ['a', 'b'],
|
|
28
|
-
tasks: [
|
|
29
|
-
{ f: multiply, a: ['a', 'b'], out: ['c'] }
|
|
30
|
-
],
|
|
31
|
-
outTask: { a: ['c'] }
|
|
32
|
-
});
|
|
33
|
-
t.deepEqual(errors, [], 'no validation errors');
|
|
34
|
-
|
|
35
|
-
var execOptions = {
|
|
36
|
-
reactExecOptions: true,
|
|
37
|
-
outputStyle: 'cb'
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
fn(execOptions, 2, 3, function (err, c) {
|
|
41
|
-
t.equal(err, null);
|
|
42
|
-
t.equal(c, 6);
|
|
43
|
-
done();
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}());
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/*global react:true taskUtil:true */
|
|
2
|
-
|
|
3
|
-
if (typeof(chai) === 'undefined') {
|
|
4
|
-
var chai = require('chai');
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
if (typeof(react) === 'undefined') {
|
|
8
|
-
var react = require('../'); //require('react');
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
if (typeof(taskUtil) === 'undefined') {
|
|
12
|
-
var taskUtil = require('../lib/task.js');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
(function () {
|
|
16
|
-
'use strict';
|
|
17
|
-
|
|
18
|
-
var t = chai.assert;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
Testing final cb task
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
suite('finalcb-task');
|
|
25
|
-
|
|
26
|
-
test('undefined cb throws exception', function (done) {
|
|
27
|
-
var fn = function () {
|
|
28
|
-
var finalTask = taskUtil.createOutTask({}, undefined);
|
|
29
|
-
};
|
|
30
|
-
t.throws(fn, 'callback is not a function');
|
|
31
|
-
done();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
test('null cb throws exception', function (done) {
|
|
35
|
-
var fn = function () {
|
|
36
|
-
var finalTask = taskUtil.createOutTask({}, null);
|
|
37
|
-
};
|
|
38
|
-
t.throws(fn, 'callback is not a function');
|
|
39
|
-
done();
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('cb needs to be a function or throws exception', function (done) {
|
|
43
|
-
var fn = function () {
|
|
44
|
-
var finalTask = taskUtil.createOutTask({}, 'foo');
|
|
45
|
-
};
|
|
46
|
-
t.throws(fn, 'callback is not a function');
|
|
47
|
-
done();
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
test('valid fn creates outTask', function (done) {
|
|
51
|
-
function foo() { }
|
|
52
|
-
var finalTask = taskUtil.createOutTask({ a: ['bar', 'baz']}, foo);
|
|
53
|
-
t.equal(finalTask.f, foo);
|
|
54
|
-
t.deepEqual(finalTask.a, ['bar', 'baz']);
|
|
55
|
-
done();
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
}());
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/*global react:true inputParser:true */
|
|
2
|
-
|
|
3
|
-
if (typeof(chai) === 'undefined') {
|
|
4
|
-
var chai = require('chai');
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
if (typeof(react) === 'undefined') {
|
|
8
|
-
var react = require('../'); //require('react');
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
if (typeof(inputParser) === 'undefined') {
|
|
12
|
-
var inputParser = require('../lib/input-parser.js');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
(function () {
|
|
16
|
-
'use strict';
|
|
17
|
-
|
|
18
|
-
var t = chai.assert;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
Testing ...
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
suite('input-parser');
|
|
25
|
-
|
|
26
|
-
test('parser parses input args', function (done) {
|
|
27
|
-
function myCb() { }
|
|
28
|
-
var ast = { inParams: ['a', 'b'] };
|
|
29
|
-
var parsedInput = inputParser([10, 20, myCb], ast);
|
|
30
|
-
t.deepEqual(parsedInput.args, [10, 20]);
|
|
31
|
-
t.deepEqual(parsedInput.options, inputParser.defaultExecOptions);
|
|
32
|
-
done();
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
test('parser parses input args with cb', function (done) {
|
|
36
|
-
function foo() { }
|
|
37
|
-
var ast = { inParams: ['a', 'b'] };
|
|
38
|
-
var parsedInput = inputParser([10, 20, foo], ast);
|
|
39
|
-
t.deepEqual(parsedInput.args, [10, 20]);
|
|
40
|
-
t.deepEqual(parsedInput.cb, foo);
|
|
41
|
-
t.deepEqual(parsedInput.options, inputParser.defaultExecOptions);
|
|
42
|
-
done();
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
test('parser parses input args with cb and extra args', function (done) {
|
|
46
|
-
function foo() { }
|
|
47
|
-
var ast = { inParams: ['a', 'b'] };
|
|
48
|
-
var parsedInput = inputParser([10, 20, foo, 30, 40], ast);
|
|
49
|
-
t.deepEqual(parsedInput.args, [10, 20]);
|
|
50
|
-
t.deepEqual(parsedInput.cb, foo);
|
|
51
|
-
t.deepEqual(parsedInput.extraArgs, [30, 40]);
|
|
52
|
-
t.deepEqual(parsedInput.options, inputParser.defaultExecOptions);
|
|
53
|
-
done();
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
test('parser parses input args with extra args', function (done) {
|
|
57
|
-
var ast = { inParams: [] };
|
|
58
|
-
var execOptions = { reactExecOptions: true, outputStyle: 'none' };
|
|
59
|
-
var parsedInput = inputParser([execOptions, 10, 20], ast);
|
|
60
|
-
t.deepEqual(parsedInput.args, []);
|
|
61
|
-
t.deepEqual(parsedInput.extraArgs, [10, 20]);
|
|
62
|
-
done();
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
test('parser pulls react exec option off arg list', function (done) {
|
|
66
|
-
function myCb() { }
|
|
67
|
-
var ast = { inParams: ['a', 'b'] };
|
|
68
|
-
var execOptions = { reactExecOptions: true, foo: 10 };
|
|
69
|
-
var parsedInput = inputParser([execOptions, 10, 20, myCb], ast);
|
|
70
|
-
t.deepEqual(parsedInput.args, [10, 20]);
|
|
71
|
-
t.deepEqual(parsedInput.options, { reactExecOptions: true, outputStyle: 'cb', foo: 10 });
|
|
72
|
-
done();
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
test('parser pulls react exec options off arg list and merges from left to right', function (done) {
|
|
76
|
-
function myCb() { }
|
|
77
|
-
var ast = { inParams: ['a', 'b'] };
|
|
78
|
-
var execOptions = { reactExecOptions: true, foo: 12, bar: 24 };
|
|
79
|
-
var execOptions2 = { reactExecOptions: true, bar: 36, baz: 'hello' };
|
|
80
|
-
var parsedInput = inputParser([execOptions, execOptions2, 10, 20, myCb], ast);
|
|
81
|
-
t.deepEqual(parsedInput.args, [10, 20]);
|
|
82
|
-
t.deepEqual(parsedInput.options, { reactExecOptions: true, outputStyle: 'cb', foo: 12, bar: 36, baz: 'hello' });
|
|
83
|
-
done();
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
}());
|
package/test/log-events.mocha.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/*global react:true BaseTask:true */
|
|
2
|
-
|
|
3
|
-
if (typeof(chai) === 'undefined') {
|
|
4
|
-
var chai = require('chai');
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
if (typeof(react) === 'undefined') {
|
|
8
|
-
var react = require('../'); //require('react');
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
(function () {
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
|
-
var t = chai.assert;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
Testing turning on logging of events
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
suite('log-events');
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
@example
|
|
24
|
-
var react = require('react');
|
|
25
|
-
react.logEvents(); // log to console
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
before(function () {
|
|
29
|
-
react.logEvents();
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
after(function () {
|
|
33
|
-
react.logEvents(false);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
test('use react() default DSL from module', function (done) {
|
|
37
|
-
function multiply(a, b, cb) { cb(null, a * b); }
|
|
38
|
-
function add(a, b, cb) { cb(null, a + b); }
|
|
39
|
-
var fn = react('multiplyAdd', 'a, b, cb -> err, m, s',
|
|
40
|
-
multiply, 'a, b, cb -> err, m',
|
|
41
|
-
add, 'm, a, cb -> err, s'
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
fn(2, 3, function (err, m, s) {
|
|
46
|
-
t.deepEqual(err, null, 'should not be any error');
|
|
47
|
-
t.equal(m, 6);
|
|
48
|
-
t.equal(s, 8);
|
|
49
|
-
done();
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
test('use react.selectFirst() default DSL with events', function (done) {
|
|
54
|
-
function noSuccess(a, b, cb) {
|
|
55
|
-
setTimeout(function () { cb(null); }, 100); // returns undefined result
|
|
56
|
-
}
|
|
57
|
-
function noSuccessNull(a, b, cb) { cb(null, null); } // returns null result
|
|
58
|
-
function add(a, b, cb) { cb(null, a + b); }
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
var fn = react.selectFirst('mySelectFirst', 'a, b, cb -> err, c',
|
|
62
|
-
noSuccess, 'a, b, cb -> err, c',
|
|
63
|
-
noSuccessNull, 'a, b, cb -> err, c',
|
|
64
|
-
add, 'a, b, cb -> err, c',
|
|
65
|
-
noSuccess, 'a, b, cb -> err, c'
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
var collector = react.createEventCollector();
|
|
69
|
-
collector.capture(fn, 'task.complete');
|
|
70
|
-
|
|
71
|
-
fn(2, 3, function (err, c) {
|
|
72
|
-
t.deepEqual(err, null, 'should not be any error');
|
|
73
|
-
t.equal(c, 5);
|
|
74
|
-
var events = collector.list();
|
|
75
|
-
t.equal(events.length, 3, 'should have seen two task compl events');
|
|
76
|
-
t.equal(events[0].task.name, 'noSuccess', 'name matches');
|
|
77
|
-
t.equal(events[1].task.name, 'noSuccessNull', 'name matches');
|
|
78
|
-
t.equal(events[2].task.name, 'add', 'name matches');
|
|
79
|
-
t.deepEqual(events[2].task.results, [5], 'results match');
|
|
80
|
-
done();
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
}());
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
package/test/mocha.opts
DELETED
package/test/module-use.mocha.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/*global react:true BaseTask:true */
|
|
2
|
-
|
|
3
|
-
if (typeof(chai) === 'undefined') {
|
|
4
|
-
var chai = require('chai');
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
if (typeof(react) === 'undefined') {
|
|
8
|
-
var react = require('../'); //require('react');
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
if (typeof(BaseTask) === 'undefined') {
|
|
12
|
-
var BaseTask = require('../lib/base-task.js');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
(function () {
|
|
16
|
-
'use strict';
|
|
17
|
-
|
|
18
|
-
var t = chai.assert;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
Testing the general use of react
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
suite('module-use');
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
@example
|
|
28
|
-
var react = require('react');
|
|
29
|
-
react.options.an_option = 'something';
|
|
30
|
-
|
|
31
|
-
// define function
|
|
32
|
-
var loadAndSave = react('myName', 'one, two, cb -> err, result1, result2',
|
|
33
|
-
foo, 'one, cb -> err, cat',
|
|
34
|
-
bar, 'two, cat, cb -> err, dog',
|
|
35
|
-
baz, 'dog, cb -> err, result1',
|
|
36
|
-
bum, 'dog, cb -> err, result2');
|
|
37
|
-
|
|
38
|
-
// OR using AST
|
|
39
|
-
|
|
40
|
-
var loadAndSave = react();
|
|
41
|
-
loadAndSave.setAndValidateAST({
|
|
42
|
-
inParams: ['one', 'two'],
|
|
43
|
-
tasks: { },
|
|
44
|
-
outTask: { a: ['three'] }
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
//if you want to listen to task completion events
|
|
48
|
-
loadAndSave.events.on('task.complete', function (taskObj) { });
|
|
49
|
-
|
|
50
|
-
loadAndSave(1,2,cb); // execute like any other function
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
|
-
test('module exports an function object with properties', function (done) {
|
|
54
|
-
t.isFunction(react, 'is a core constructor and default dsl function');
|
|
55
|
-
t.isObject(react.options, 'has property for global react options');
|
|
56
|
-
t.isObject(react.events, 'has global react event manager');
|
|
57
|
-
t.isFunction(react.logEvents, 'has function to enable event logging');
|
|
58
|
-
t.isFunction(react.trackTasks, 'has function to enable task and flow tracking');
|
|
59
|
-
t.isFunction(react.resolvePromises, 'has fn to enable promise detection & resolution');
|
|
60
|
-
done();
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
function foo() { }
|
|
64
|
-
function bar() { }
|
|
65
|
-
|
|
66
|
-
test('calling react constructor function creates new function with ast', function (done) {
|
|
67
|
-
var r = react();
|
|
68
|
-
t.isFunction(r, 'is a function ready to execute flow');
|
|
69
|
-
t.isObject(r.ast, 'is object for inspecting AST');
|
|
70
|
-
t.deepEqual(r.ast.inParams, [], 'ast.inParams should return empty array');
|
|
71
|
-
t.deepEqual(r.ast.tasks, [], 'ast.tasks() should return empty array');
|
|
72
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
73
|
-
done();
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
test('setAndValidateAST sets the ast and validates returning errors', function (done) {
|
|
77
|
-
var r = react();
|
|
78
|
-
var errors = r.setAndValidateAST({
|
|
79
|
-
inParams: ['a', 'b'],
|
|
80
|
-
tasks: [
|
|
81
|
-
{ f: foo, a: ['a'], out: ['c'] },
|
|
82
|
-
{ f: bar, a: ['b'], out: ['d'] }
|
|
83
|
-
],
|
|
84
|
-
outTask: { a: ['c', 'd'] }
|
|
85
|
-
});
|
|
86
|
-
t.deepEqual(r.ast.inParams, ['a', 'b'], 'ast.inParams() should match array just set');
|
|
87
|
-
t.deepEqual(r.ast.tasks, [
|
|
88
|
-
{ f: foo, a: ['a'], out: ['c'], type: 'cb', name: 'foo' },
|
|
89
|
-
{ f: bar, a: ['b'], out: ['d'], type: 'cb', name: 'bar' }
|
|
90
|
-
]);
|
|
91
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' }, 'should return obj just set');
|
|
92
|
-
done();
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
test('use react() default DSL from module', function (done) {
|
|
96
|
-
function multiply(a, b, cb) { cb(null, a * b); }
|
|
97
|
-
function add(a, b, cb) { cb(null, a + b); }
|
|
98
|
-
var fn = react('multiplyAdd', 'a, b, cb -> err, m, s',
|
|
99
|
-
multiply, 'a, b, cb -> err, m',
|
|
100
|
-
add, 'm, a, cb -> err, s'
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
fn(2, 3, function (err, m, s) {
|
|
105
|
-
t.deepEqual(err, null, 'should not be any error');
|
|
106
|
-
t.equal(m, 6);
|
|
107
|
-
t.equal(s, 8);
|
|
108
|
-
done();
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
test('use react.selectFirst() default DSL with events', function (done) {
|
|
113
|
-
function noSuccess(a, b, cb) {
|
|
114
|
-
setTimeout(function () { cb(null); }, 100); // returns undefined result
|
|
115
|
-
}
|
|
116
|
-
function noSuccessNull(a, b, cb) { cb(null, null); } // returns null result
|
|
117
|
-
function add(a, b, cb) { cb(null, a + b); }
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
var fn = react.selectFirst('mySelectFirst', 'a, b, cb -> err, c',
|
|
121
|
-
noSuccess, 'a, b, cb -> err, c',
|
|
122
|
-
noSuccessNull, 'a, b, cb -> err, c',
|
|
123
|
-
add, 'a, b, cb -> err, c',
|
|
124
|
-
noSuccess, 'a, b, cb -> err, c'
|
|
125
|
-
);
|
|
126
|
-
|
|
127
|
-
var collector = react.createEventCollector();
|
|
128
|
-
collector.capture(fn, 'task.complete');
|
|
129
|
-
|
|
130
|
-
fn(2, 3, function (err, c) {
|
|
131
|
-
t.deepEqual(err, null, 'should not be any error');
|
|
132
|
-
t.equal(c, 5);
|
|
133
|
-
var events = collector.list();
|
|
134
|
-
t.equal(events.length, 3, 'should have seen two task compl events');
|
|
135
|
-
t.equal(events[0].task.name, 'noSuccess', 'name matches');
|
|
136
|
-
t.equal(events[1].task.name, 'noSuccessNull', 'name matches');
|
|
137
|
-
t.equal(events[2].task.name, 'add', 'name matches');
|
|
138
|
-
t.deepEqual(events[2].task.results, [5], 'results match');
|
|
139
|
-
done();
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
test('reference local/global vars', function (done) {
|
|
144
|
-
function foo(cb) {
|
|
145
|
-
cb(null, 100);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
var fn = react('refGlobal', 'cb -> err, result',
|
|
149
|
-
'console.log', '"using global/local ref to console" ->',
|
|
150
|
-
foo, 'cb -> err, result', { after: 'console.log' }
|
|
151
|
-
);
|
|
152
|
-
|
|
153
|
-
fn(function (err, result) {
|
|
154
|
-
if (err) return done(err);
|
|
155
|
-
t.equal(result, 100);
|
|
156
|
-
done();
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
}());
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|