react 0.6.2 → 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.
Files changed (204) hide show
  1. package/README.md +15 -217
  2. package/ReactJSErrors.js +40 -0
  3. package/addons.js +4 -0
  4. package/lib/$.js +46 -0
  5. package/lib/CSSCore.js +114 -0
  6. package/lib/CSSProperty.js +90 -0
  7. package/lib/CSSPropertyOperations.js +97 -0
  8. package/lib/CallbackRegistry.js +91 -0
  9. package/lib/ChangeEventPlugin.js +365 -0
  10. package/lib/CompositionEventPlugin.js +212 -0
  11. package/lib/DOMChildrenOperations.js +135 -0
  12. package/lib/DOMProperty.js +266 -0
  13. package/lib/DOMPropertyOperations.js +168 -0
  14. package/lib/Danger.js +186 -0
  15. package/lib/DefaultDOMPropertyConfig.js +187 -0
  16. package/lib/DefaultEventPluginOrder.js +44 -0
  17. package/lib/EnterLeaveEventPlugin.js +112 -0
  18. package/lib/EventConstants.js +73 -0
  19. package/lib/EventListener.js +61 -0
  20. package/lib/EventPluginHub.js +190 -0
  21. package/lib/EventPluginRegistry.js +237 -0
  22. package/lib/EventPluginUtils.js +185 -0
  23. package/lib/EventPropagators.js +179 -0
  24. package/lib/ExecutionEnvironment.js +41 -0
  25. package/lib/LinkedStateMixin.js +46 -0
  26. package/lib/LinkedValueMixin.js +68 -0
  27. package/lib/MobileSafariClickEventPlugin.js +63 -0
  28. package/lib/PooledClass.js +113 -0
  29. package/lib/React.js +71 -0
  30. package/lib/ReactChildren.js +132 -0
  31. package/lib/ReactComponent.js +515 -0
  32. package/lib/ReactComponentBrowserEnvironment.js +140 -0
  33. package/lib/ReactComponentEnvironment.js +24 -0
  34. package/lib/ReactCompositeComponent.js +1020 -0
  35. package/lib/ReactCurrentOwner.js +39 -0
  36. package/lib/ReactDOM.js +194 -0
  37. package/lib/ReactDOMButton.js +64 -0
  38. package/lib/ReactDOMComponent.js +374 -0
  39. package/lib/ReactDOMForm.js +52 -0
  40. package/lib/ReactDOMIDOperations.js +173 -0
  41. package/lib/ReactDOMInput.js +169 -0
  42. package/lib/ReactDOMOption.js +50 -0
  43. package/lib/ReactDOMSelect.js +160 -0
  44. package/lib/ReactDOMSelection.js +189 -0
  45. package/lib/ReactDOMTextarea.js +136 -0
  46. package/lib/ReactDefaultBatchingStrategy.js +75 -0
  47. package/lib/ReactDefaultInjection.js +91 -0
  48. package/lib/ReactDefaultPerf.js +407 -0
  49. package/lib/ReactErrorUtils.js +46 -0
  50. package/lib/ReactEventEmitter.js +341 -0
  51. package/lib/ReactEventEmitterMixin.js +89 -0
  52. package/lib/ReactEventTopLevelCallback.js +89 -0
  53. package/lib/ReactInputSelection.js +140 -0
  54. package/lib/ReactInstanceHandles.js +322 -0
  55. package/lib/ReactLink.js +54 -0
  56. package/lib/ReactMarkupChecksum.js +53 -0
  57. package/lib/ReactMount.js +617 -0
  58. package/lib/ReactMountReady.js +95 -0
  59. package/lib/ReactMultiChild.js +441 -0
  60. package/lib/ReactMultiChildUpdateTypes.js +36 -0
  61. package/lib/ReactOwner.js +146 -0
  62. package/lib/ReactPerf.js +88 -0
  63. package/lib/ReactPropTransferer.js +128 -0
  64. package/lib/ReactPropTypes.js +158 -0
  65. package/lib/ReactReconcileTransaction.js +161 -0
  66. package/lib/ReactServerRendering.js +62 -0
  67. package/lib/ReactStateSetters.js +111 -0
  68. package/lib/ReactTextComponent.js +94 -0
  69. package/lib/ReactTransitionEvents.js +97 -0
  70. package/lib/ReactTransitionGroup.js +112 -0
  71. package/lib/ReactTransitionKeySet.js +111 -0
  72. package/lib/ReactTransitionableChild.js +152 -0
  73. package/lib/ReactUpdates.js +145 -0
  74. package/lib/ReactWithAddons.js +41 -0
  75. package/lib/SelectEventPlugin.js +217 -0
  76. package/lib/SimpleEventPlugin.js +365 -0
  77. package/lib/SyntheticClipboardEvent.js +45 -0
  78. package/lib/SyntheticCompositionEvent.js +51 -0
  79. package/lib/SyntheticEvent.js +163 -0
  80. package/lib/SyntheticFocusEvent.js +44 -0
  81. package/lib/SyntheticKeyboardEvent.js +56 -0
  82. package/lib/SyntheticMouseEvent.js +85 -0
  83. package/lib/SyntheticTouchEvent.js +50 -0
  84. package/lib/SyntheticUIEvent.js +45 -0
  85. package/lib/SyntheticWheelEvent.js +63 -0
  86. package/lib/Transaction.js +251 -0
  87. package/lib/ViewportMetrics.js +37 -0
  88. package/lib/accumulate.js +54 -0
  89. package/lib/adler32.js +39 -0
  90. package/lib/containsNode.js +49 -0
  91. package/lib/copyProperties.js +54 -0
  92. package/lib/createArrayFrom.js +94 -0
  93. package/lib/createNodesFromMarkup.js +93 -0
  94. package/lib/createObjectFrom.js +61 -0
  95. package/lib/cx.js +44 -0
  96. package/lib/dangerousStyleValue.js +57 -0
  97. package/lib/emptyFunction.js +43 -0
  98. package/lib/escapeTextForBrowser.js +47 -0
  99. package/lib/ex.js +49 -0
  100. package/lib/filterAttributes.js +45 -0
  101. package/lib/flattenChildren.js +54 -0
  102. package/lib/forEachAccumulated.js +36 -0
  103. package/lib/ge.js +76 -0
  104. package/lib/getActiveElement.js +33 -0
  105. package/lib/getEventTarget.js +36 -0
  106. package/lib/getMarkupWrap.js +108 -0
  107. package/lib/getNodeForCharacterOffset.js +80 -0
  108. package/lib/getReactRootElementInContainer.js +40 -0
  109. package/lib/getTextContentAccessor.js +40 -0
  110. package/lib/getUnboundedScrollPosition.js +45 -0
  111. package/lib/hyphenate.js +35 -0
  112. package/lib/invariant.js +54 -0
  113. package/lib/isEventSupported.js +74 -0
  114. package/lib/isNode.js +33 -0
  115. package/lib/isTextInputElement.js +49 -0
  116. package/lib/isTextNode.js +30 -0
  117. package/lib/joinClasses.js +44 -0
  118. package/lib/keyMirror.js +58 -0
  119. package/lib/keyOf.js +41 -0
  120. package/lib/memoizeStringOnly.js +39 -0
  121. package/lib/merge.js +37 -0
  122. package/lib/mergeHelpers.js +137 -0
  123. package/lib/mergeInto.js +45 -0
  124. package/lib/mixInto.js +34 -0
  125. package/lib/mutateHTMLNodeWithMarkup.js +100 -0
  126. package/lib/objMap.js +47 -0
  127. package/lib/objMapKeyVal.js +47 -0
  128. package/lib/performanceNow.js +42 -0
  129. package/lib/shallowEqual.js +49 -0
  130. package/lib/traverseAllChildren.js +127 -0
  131. package/package.json +33 -21
  132. package/react.js +4 -0
  133. package/.npmignore +0 -7
  134. package/.travis.yml +0 -5
  135. package/Jakefile.js +0 -39
  136. package/LICENSE +0 -19
  137. package/browser-test/dist.html +0 -89
  138. package/browser-test/index.html +0 -85
  139. package/browser-test/min.html +0 -89
  140. package/dist/react.js +0 -3094
  141. package/dist/react.min.js +0 -22
  142. package/doc/advanced.md +0 -166
  143. package/doc/color-def.graffle +0 -938
  144. package/doc/color-def.png +0 -0
  145. package/doc/simple.dot +0 -25
  146. package/doc/simple.png +0 -0
  147. package/examples/longer-example.js +0 -41
  148. package/examples/simple.js +0 -45
  149. package/examples/using-ast-directly.js +0 -30
  150. package/examples/using-events1.js +0 -79
  151. package/examples/using-log-events.js +0 -43
  152. package/lib/base-task.js +0 -123
  153. package/lib/cb-task.js +0 -84
  154. package/lib/core.js +0 -138
  155. package/lib/dsl.js +0 -138
  156. package/lib/error.js +0 -55
  157. package/lib/event-collector.js +0 -81
  158. package/lib/event-manager.js +0 -85
  159. package/lib/eventemitter.js +0 -20
  160. package/lib/finalcb-first-task.js +0 -68
  161. package/lib/finalcb-task.js +0 -65
  162. package/lib/id.js +0 -22
  163. package/lib/input-parser.js +0 -56
  164. package/lib/log-events.js +0 -92
  165. package/lib/parse.js +0 -41
  166. package/lib/promise-resolve.js +0 -50
  167. package/lib/promise-task.js +0 -93
  168. package/lib/react.js +0 -59
  169. package/lib/ret-task.js +0 -71
  170. package/lib/sprintf.js +0 -18
  171. package/lib/status.js +0 -14
  172. package/lib/task.js +0 -251
  173. package/lib/track-tasks.js +0 -74
  174. package/lib/validate.js +0 -159
  175. package/lib/vcon.js +0 -90
  176. package/lib/when-task.js +0 -85
  177. package/src/dist.build.requirejs +0 -20
  178. package/test/ast.mocha.js +0 -136
  179. package/test/cb-task.mocha.js +0 -220
  180. package/test/core-deferred.mocha.js +0 -143
  181. package/test/core-when.mocha.js +0 -96
  182. package/test/core.mocha.js +0 -589
  183. package/test/dsl.mocha.js +0 -350
  184. package/test/event-manager.mocha.js +0 -119
  185. package/test/exec-options.mocha.js +0 -48
  186. package/test/finalcb-task.mocha.js +0 -58
  187. package/test/input-parser.mocha.js +0 -86
  188. package/test/mocha.opts +0 -2
  189. package/test/module-use.mocha.js +0 -147
  190. package/test/promise-auto-resolve.mocha.js +0 -68
  191. package/test/ret-task.mocha.js +0 -220
  192. package/test/task.mocha.js +0 -42
  193. package/test/validate-cb-task.mocha.js +0 -100
  194. package/test/validate-ret-task.mocha.js +0 -110
  195. package/test/validate.mocha.js +0 -324
  196. package/test/vcon.mocha.js +0 -193
  197. package/vendor/chai/chai.js +0 -2038
  198. package/vendor/jquery/jquery-1.7.1.js +0 -9266
  199. package/vendor/jquery/jquery-1.7.1.min.js +0 -4
  200. package/vendor/mocha/mocha.css +0 -135
  201. package/vendor/mocha/mocha.js +0 -3589
  202. package/vendor/node/util.js +0 -531
  203. package/vendor/requirejs/require.js +0 -2053
  204. package/vendor/requirejs/require.min.js +0 -33
@@ -1,48 +0,0 @@
1
- 'use strict';
2
- /*global react:true */
3
-
4
- if (typeof(chai) === 'undefined') {
5
- var chai = require('chai');
6
- }
7
-
8
- if (typeof(react) === 'undefined') {
9
- var react = require('../'); //require('react');
10
- }
11
-
12
- (function () {
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
- 'use strict';
2
- /*global react:true taskUtil:true */
3
-
4
- if (typeof(chai) === 'undefined') {
5
- var chai = require('chai');
6
- }
7
-
8
- if (typeof(react) === 'undefined') {
9
- var react = require('../'); //require('react');
10
- }
11
-
12
- if (typeof(taskUtil) === 'undefined') {
13
- var taskUtil = require('../lib/task.js');
14
- }
15
-
16
- (function () {
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
- 'use strict';
2
- /*global react:true inputParser:true */
3
-
4
- if (typeof(chai) === 'undefined') {
5
- var chai = require('chai');
6
- }
7
-
8
- if (typeof(react) === 'undefined') {
9
- var react = require('../'); //require('react');
10
- }
11
-
12
- if (typeof(inputParser) === 'undefined') {
13
- var inputParser = require('../lib/input-parser.js');
14
- }
15
-
16
- (function () {
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/mocha.opts DELETED
@@ -1,2 +0,0 @@
1
- --reporter spec
2
- --ui qunit
@@ -1,147 +0,0 @@
1
- 'use strict';
2
- /*global react:true BaseTask:true */
3
-
4
- if (typeof(chai) === 'undefined') {
5
- var chai = require('chai');
6
- }
7
-
8
- if (typeof(react) === 'undefined') {
9
- var react = require('../'); //require('react');
10
- }
11
-
12
- if (typeof(BaseTask) === 'undefined') {
13
- var BaseTask = require('../lib/base-task.js');
14
- }
15
-
16
- (function () {
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
- }());
144
-
145
-
146
-
147
-
@@ -1,68 +0,0 @@
1
- 'use strict';
2
- /*global react:true Deferred:true */
3
-
4
- if (typeof(chai) === 'undefined') {
5
- var chai = require('chai');
6
- }
7
-
8
- if (typeof(react) === 'undefined') {
9
- var react = require('../'); //require('react');
10
- }
11
-
12
- if (typeof(Deferred) === 'undefined') {
13
- var Deferred = require('Deferred');
14
- }
15
-
16
- (function () {
17
-
18
- var t = chai.assert;
19
-
20
- suite('promise-auto-resolve');
21
-
22
- /**
23
- Test that arguments which are promises are automatically resolved
24
- before calling react functions
25
- */
26
-
27
- react.resolvePromises(); // enable promise resolving
28
-
29
- function multiply(x, y, cb) { cb(null, x * y); }
30
- function add(x, y, cb) { cb(null, x + y); }
31
- // function badF2(a, b, cb) { cb('my-error'); }
32
-
33
- test('auto resolve promises passed as args', function (done) {
34
- var fn = react();
35
- var errors = fn.setAndValidateAST({
36
- inParams: ['a', 'b'],
37
- tasks: [
38
- { f: multiply, a: ['a', 'b'], out: ['c'] },
39
- { f: add, a: ['c', 'b'], out: ['d'] }
40
- ],
41
- outTask: { a: ['c', 'd'] }
42
- });
43
- t.deepEqual(errors, [], 'no validation errors');
44
-
45
- function retAP() {
46
- var deferred = new Deferred();
47
- setTimeout(function () { deferred.resolve(2); }, 10);
48
- return deferred.promise();
49
- }
50
-
51
- function retBP() {
52
- var deferred = new Deferred();
53
- setTimeout(function () { deferred.resolve(3); }, 10);
54
- return deferred.promise();
55
- }
56
-
57
- var ap = retAP();
58
- var bp = retBP();
59
-
60
- fn(ap, bp, function (err, c, d) {
61
- t.equal(err, null);
62
- t.equal(c, 6);
63
- t.equal(d, 9);
64
- done();
65
- });
66
- });
67
-
68
- }());
@@ -1,220 +0,0 @@
1
- 'use strict';
2
- /*global react:true RetTask:true VContext:true */
3
-
4
- if (typeof(chai) === 'undefined') {
5
- var chai = require('chai');
6
- }
7
-
8
- if (typeof(react) === 'undefined') {
9
- var react = require('../'); //require('react');
10
- }
11
-
12
- if (typeof(RetTask) === 'undefined') {
13
- var RetTask = require('../lib/ret-task.js');
14
- }
15
-
16
- if (typeof(VContext) === 'undefined') {
17
- var VContext = require('../lib/vcon.js');
18
- }
19
-
20
- (function () {
21
-
22
- var t = chai.assert;
23
-
24
- /**
25
- Testing VContext
26
- */
27
-
28
- suite('ret-task');
29
-
30
- function foo() { }
31
- function bar() { }
32
- function cat() { }
33
-
34
- test('new task is not complete', function (done) {
35
- var task = new RetTask({ type: 'ret', f: foo, a: [], out: [] });
36
- t.equal(task.isComplete(), false);
37
- done();
38
- });
39
-
40
- test('ready task is not complete', function (done) {
41
- var task = new RetTask({ type: 'ret', f: foo, a: [], out: [], status: 'ready'});
42
- t.equal(task.isComplete(), false);
43
- done();
44
- });
45
-
46
- test('running task is not complete', function (done) {
47
- var task = new RetTask({ type: 'ret', f: foo, a: [], out: [], status: 'running'});
48
- t.equal(task.isComplete(), false);
49
- done();
50
- });
51
-
52
- test('complete task is complete', function (done) {
53
- var task = new RetTask({ type: 'ret', f: foo, a: [], out: [], status: 'complete' });
54
- t.equal(task.isComplete(), true);
55
- done();
56
- });
57
-
58
- test('task with any status is not ready', function (done) {
59
- var task = new RetTask({ type: 'ret', f: foo, a: [], out: [], status: 'complete' });
60
- var vCon = VContext.create([], []);
61
- var tasksByName = { foo: task };
62
- t.equal(task.isReady(vCon, tasksByName), false);
63
- task.status = 'ready';
64
- t.equal(task.isReady(vCon, tasksByName), false);
65
- task.status = 'running';
66
- t.equal(task.isReady(vCon, tasksByName), false);
67
- task.status = null;
68
- t.equal(task.isReady(vCon, tasksByName), true);
69
- done();
70
- });
71
-
72
- test('no args defined, no after -> not ready', function (done) {
73
- var task = new RetTask({ type: 'ret', f: foo, a: ['b'], out: [] });
74
- var vCon = VContext.create([], []);
75
- var tasksByName = { foo: task };
76
- t.equal(task.isReady(vCon, tasksByName), false);
77
- done();
78
- });
79
-
80
- test('obj prop undefined -> NOT ready', function (done) {
81
- var task = new RetTask({ type: 'ret', f: foo, a: ['b', 'c.prop'], out: [] });
82
- var vCon = VContext.create([1, {}], ['b', 'c']);
83
- var tasksByName = { foo: task };
84
- t.equal(task.isReady(vCon, tasksByName), false);
85
- done();
86
- });
87
-
88
- test('all args defined, no after, out no obj parent -> NOT ready', function (done) {
89
- var task = new RetTask({ type: 'ret', f: foo, a: ['b', 'c'], out: ['d.e'] });
90
- var vCon = VContext.create([1, null], ['b', 'c']);
91
- var tasksByName = { foo: task };
92
- t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
93
- done();
94
- });
95
-
96
- test('all args defined, no after, out no obj.par.par -> NOT ready', function (done) {
97
- var task = new RetTask({ type: 'ret', f: foo, a: ['b', 'c'], out: ['c.e.f'] });
98
- var vCon = VContext.create([1, { }], ['b', 'c']);
99
- var tasksByName = { foo: task };
100
- t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
101
- done();
102
- });
103
-
104
- test('all args defined, no after, out null obj parent -> NOT ready', function (done) {
105
- var task = new RetTask({ type: 'ret', f: foo, a: ['b', 'c'], out: ['c.e'] });
106
- var vCon = VContext.create([1, null], ['b', 'c']);
107
- var tasksByName = { foo: task };
108
- t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
109
- done();
110
- });
111
-
112
- test('all args defined, no after, out null obj.par.par -> NOT ready', function (done) {
113
- var task = new RetTask({ type: 'ret', f: foo, a: ['b', 'c'], out: ['c.e.f'] });
114
- var vCon = VContext.create([1, { e: null }], ['b', 'c']);
115
- var tasksByName = { foo: task };
116
- t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
117
- done();
118
- });
119
-
120
- test('all args defined, no after -> ready', function (done) {
121
- var task = new RetTask({ type: 'ret', f: foo, a: ['b', 'c'], out: [] });
122
- var vCon = VContext.create([1, null], ['b', 'c']);
123
- var tasksByName = { foo: task };
124
- t.equal(task.isReady(vCon, tasksByName), true);
125
- done();
126
- });
127
-
128
- test('all args defined, obj prop null, no after -> ready', function (done) {
129
- var task = new RetTask({ type: 'ret', f: foo, a: ['b', 'c.prop'], out: [] });
130
- var vCon = VContext.create([1, { prop: null }], ['b', 'c']);
131
- var tasksByName = { foo: task };
132
- t.equal(task.isReady(vCon, tasksByName), true);
133
- done();
134
- });
135
-
136
- test('all args defined, after not complete -> NOT ready', function (done) {
137
- var tcat = new RetTask({ type: 'ret', f: cat, a: [], out: [], status: 'complete' });
138
- var tbar = new RetTask({ type: 'ret', f: bar, a: [], out: [], status: 'running' });
139
- var task = new RetTask(
140
- { type: 'ret', f: foo, a: ['b', 'c'], out: [], after: ['cat', 'bar']});
141
- var vCon = VContext.create([1, 2], ['b', 'c']);
142
- var tasksByName = { foo: task, bar: tbar, cat: tcat };
143
- t.equal(task.isReady(vCon, tasksByName), false);
144
- done();
145
- });
146
-
147
- test('all args defined, after all complete -> ready', function (done) {
148
- var tcat = new RetTask({ type: 'ret', f: cat, a: [], out: [], status: 'complete' });
149
- var tbar = new RetTask({ type: 'ret', f: bar, a: [], out: [], status: 'complete' });
150
- var task = new RetTask(
151
- { type: 'ret', f: foo, a: ['b', 'c'], out: [], after: ['cat', 'bar']});
152
- var vCon = VContext.create([1, 2], ['b', 'c']);
153
- var tasksByName = { foo: task, bar: tbar, cat: tcat };
154
- t.equal(task.isReady(vCon, tasksByName), true);
155
- done();
156
- });
157
-
158
- test('string without . is not method call', function (done) {
159
- var task = new RetTask({ type: 'ret', f: 'foo', a: [], out: ['b'] });
160
- t.equal(task.isMethodCall(), false);
161
- task.f = null;
162
- t.equal(task.isMethodCall(), false);
163
- done();
164
- });
165
-
166
- test('string with . is method call', function (done) {
167
- var task = new RetTask({ type: 'ret', f: 'foo.bar', a: [], out: ['b'] });
168
- t.equal(task.isMethodCall(), true);
169
- task.f = 'foo.bar.baz';
170
- t.equal(task.isMethodCall(), true);
171
- done();
172
- });
173
-
174
- test('undefined or null fn - functionExists', function (done) {
175
- var task = new RetTask({ type: 'ret', f: 'foo', a: [], out: ['b'] });
176
- var vCon = VContext.create([], []);
177
- task.f = null;
178
- t.isFalse(task.functionExists(vCon));
179
- task.f = undefined;
180
- t.isFalse(task.functionExists(vCon));
181
- task.f = 'foo';
182
- t.isFalse(task.functionExists(vCon));
183
- vCon.values.foo = { };
184
- task.f = 'foo.bar';
185
- t.isFalse(task.functionExists(vCon));
186
- done();
187
- });
188
-
189
- test('functionExists', function (done) {
190
- var task = new RetTask({ type: 'ret', f: foo, a: [], out: ['b'] });
191
- var vCon = VContext.create([], []);
192
- t.isTrue(task.functionExists(vCon));
193
- done();
194
- });
195
-
196
- test('method functionExists', function (done) {
197
- var task = new RetTask({ type: 'ret', f: 'foo.b', a: [], out: ['b'] });
198
- var vCon = VContext.create([{b: bar}], ['foo']);
199
- t.isTrue(task.functionExists(vCon));
200
- task.f = 'foo.bar.cat';
201
- vCon.values.foo = { bar: { cat: cat}};
202
- t.isTrue(task.functionExists(vCon));
203
- done();
204
- });
205
-
206
- test('getMethodObj non-existent return undefined', function (done) {
207
- var task = new RetTask({ type: 'ret', f: 'foo.b.c', a: [], out: ['b'] });
208
- var vCon = VContext.create([{}], ['foo']);
209
- t.equal(task.getMethodObj(vCon), undefined);
210
- done();
211
- });
212
-
213
- test('getMethodObj returns object', function (done) {
214
- var task = new RetTask({ type: 'ret', f: 'foo.b', a: [], out: ['b'] });
215
- var vCon = VContext.create([{b: bar}], ['foo']);
216
- t.deepEqual(task.getMethodObj(vCon), { b: bar});
217
- done();
218
- });
219
-
220
- }());