jsf.js_next_gen 4.0.0-RC.3 → 4.0.0-RC.30

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 (183) hide show
  1. package/dist/docs/assets/main.js +56 -52
  2. package/dist/docs/assets/style.css +23 -0
  3. package/dist/window/faces-development.js +2860 -2999
  4. package/dist/window/faces-development.js.br +0 -0
  5. package/dist/window/faces-development.js.gz +0 -0
  6. package/dist/window/faces-development.js.map +1 -1
  7. package/dist/window/faces.js +1 -1
  8. package/dist/window/faces.js.LICENSE.txt +0 -2
  9. package/dist/window/faces.js.br +0 -0
  10. package/dist/window/faces.js.gz +0 -0
  11. package/dist/window/faces.js.map +1 -1
  12. package/dist/window/jsf-development.js +2865 -3004
  13. package/dist/window/jsf-development.js.br +0 -0
  14. package/dist/window/jsf-development.js.gz +0 -0
  15. package/dist/window/jsf-development.js.map +1 -1
  16. package/dist/window/jsf.js +1 -1
  17. package/dist/window/jsf.js.LICENSE.txt +0 -2
  18. package/dist/window/jsf.js.br +0 -0
  19. package/dist/window/jsf.js.gz +0 -0
  20. package/dist/window/jsf.js.map +1 -1
  21. package/package.json +16 -16
  22. package/src/main/test.xml +23 -0
  23. package/src/main/typescript/@types/definitions/index.d.ts +12 -7
  24. package/src/main/typescript/api/_api.ts +4 -3
  25. package/src/main/typescript/impl/AjaxImpl.ts +125 -41
  26. package/src/main/typescript/impl/core/Const.ts +52 -41
  27. package/src/main/typescript/impl/util/Assertions.ts +16 -8
  28. package/src/main/typescript/impl/util/ExtDomQuery.ts +12 -4
  29. package/src/main/typescript/impl/util/HiddenInputBuilder.ts +89 -0
  30. package/src/main/typescript/impl/util/Lang.ts +9 -11
  31. package/src/main/typescript/impl/util/URLCodec.ts +71 -0
  32. package/src/main/typescript/impl/xhrCore/ErrorData.ts +15 -10
  33. package/src/main/typescript/impl/xhrCore/EventData.ts +2 -2
  34. package/src/main/typescript/impl/xhrCore/IResponseProcessor.ts +15 -1
  35. package/src/main/typescript/impl/xhrCore/RequestDataResolver.ts +69 -24
  36. package/src/main/typescript/impl/xhrCore/ResonseDataResolver.ts +4 -4
  37. package/src/main/typescript/impl/xhrCore/Response.ts +55 -38
  38. package/src/main/typescript/impl/xhrCore/ResponseProcessor.ts +173 -98
  39. package/src/main/typescript/impl/xhrCore/XhrFormData.ts +64 -158
  40. package/src/main/typescript/impl/xhrCore/XhrRequest.ts +36 -21
  41. package/src/main/typescript/myfaces/OamSubmit.ts +29 -13
  42. package/src/main/typescript/test/frameworkBase/_ext/monadish/DomQueryTest.spec.ts +1 -1
  43. package/src/main/typescript/test/frameworkBase/_ext/shared/StandardInits.ts +72 -0
  44. package/src/main/typescript/test/frameworkBase/_ext/shared/XmlResponses.ts +40 -1
  45. package/src/main/typescript/test/impl/ImplTest.spec.ts +3 -3
  46. package/src/main/typescript/test/impl/ImplTest_23.spec.ts +3 -3
  47. package/src/main/typescript/test/xhrCore/EventTests.spec.ts +1 -1
  48. package/src/main/typescript/test/xhrCore/FileUploadTest.spec.ts +2 -0
  49. package/src/main/typescript/test/xhrCore/NamespacesRequestTest.spec.ts +203 -0
  50. package/src/main/typescript/test/xhrCore/OamSubmitTest.spec.ts +177 -0
  51. package/src/main/typescript/test/xhrCore/RequestParamsTest.spec.ts +128 -15
  52. package/src/main/typescript/test/xhrCore/RequestTest.spec.ts +70 -3
  53. package/src/main/typescript/test/xhrCore/RequestTest_23.spec.ts +39 -3
  54. package/src/main/typescript/test/xhrCore/ResponseTest.spec.ts +372 -34
  55. package/src/main/typescript/test/xhrCore/ResponseTest23.spec.ts +43 -9
  56. package/src/main/typescript/test/xhrCore/XhrFormDataTest.spec.ts +67 -49
  57. package/src/main/typescript/test.xml +6 -0
  58. package/src/main/typescript/tsconfig.json +2 -2
  59. package/src/test/resources/jsf-development.js +1 -1
  60. package/src/tmp/test.html +12 -88
  61. package/target/api/_api.js +16 -29
  62. package/target/api/_api.js.map +1 -1
  63. package/target/api/faces.js +4 -4
  64. package/target/api/faces.js.map +1 -1
  65. package/target/api/jsf.js +9 -9
  66. package/target/api/jsf.js.map +1 -1
  67. package/target/classes/com/example/jsfs_js_ts/DecoratedFacesJS.class +0 -0
  68. package/target/classes/com/example/jsfs_js_ts/DecoratingResourceHandlerWrapper.class +0 -0
  69. package/target/classes/com/example/jsfs_js_ts/FacesJSMapFileResourceWrapper.class +0 -0
  70. package/target/classes/com/example/jsfs_js_ts/FacesJSMappingDecorator.class +0 -0
  71. package/target/impl/AjaxImpl.js +155 -89
  72. package/target/impl/AjaxImpl.js.map +1 -1
  73. package/target/impl/PushImpl.js +45 -48
  74. package/target/impl/PushImpl.js.map +1 -1
  75. package/target/impl/core/Const.js +52 -40
  76. package/target/impl/core/Const.js.map +1 -1
  77. package/target/impl/core/Context.js +10 -0
  78. package/target/impl/core/Context.js.map +1 -0
  79. package/target/impl/core/ImplTypes.js +9 -14
  80. package/target/impl/core/ImplTypes.js.map +1 -1
  81. package/target/impl/i18n/Messages.js +3 -4
  82. package/target/impl/i18n/Messages.js.map +1 -1
  83. package/target/impl/util/Assertions.js +20 -24
  84. package/target/impl/util/Assertions.js.map +1 -1
  85. package/target/impl/util/AsyncQueue.js +28 -36
  86. package/target/impl/util/AsyncQueue.js.map +1 -1
  87. package/target/impl/util/ExtDomQuery.js +153 -221
  88. package/target/impl/util/ExtDomQuery.js.map +1 -1
  89. package/target/impl/util/HiddenElementBuilder.js +7 -0
  90. package/target/impl/util/HiddenElementBuilder.js.map +1 -0
  91. package/target/impl/util/HiddenInputBuilder.js +79 -0
  92. package/target/impl/util/HiddenInputBuilder.js.map +1 -0
  93. package/target/impl/util/Lang.js +23 -32
  94. package/target/impl/util/Lang.js.map +1 -1
  95. package/target/impl/util/URLCodec.js +69 -0
  96. package/target/impl/util/URLCodec.js.map +1 -0
  97. package/target/impl/xhrCore/ErrorData.js +41 -64
  98. package/target/impl/xhrCore/ErrorData.js.map +1 -1
  99. package/target/impl/xhrCore/EventData.js +10 -13
  100. package/target/impl/xhrCore/EventData.js.map +1 -1
  101. package/target/impl/xhrCore/RequestContext.js +11 -0
  102. package/target/impl/xhrCore/RequestContext.js.map +1 -0
  103. package/target/impl/xhrCore/RequestDataResolver.js +71 -27
  104. package/target/impl/xhrCore/RequestDataResolver.js.map +1 -1
  105. package/target/impl/xhrCore/ResonseDataResolver.js +16 -16
  106. package/target/impl/xhrCore/ResonseDataResolver.js.map +1 -1
  107. package/target/impl/xhrCore/Response.js +43 -28
  108. package/target/impl/xhrCore/Response.js.map +1 -1
  109. package/target/impl/xhrCore/ResponseProcessor.js +217 -162
  110. package/target/impl/xhrCore/ResponseProcessor.js.map +1 -1
  111. package/target/impl/xhrCore/XhrFormData.js +77 -199
  112. package/target/impl/xhrCore/XhrFormData.js.map +1 -1
  113. package/target/impl/xhrCore/XhrRequest.js +102 -103
  114. package/target/impl/xhrCore/XhrRequest.js.map +1 -1
  115. package/target/myfaces/OamSubmit.js +33 -24
  116. package/target/myfaces/OamSubmit.js.map +1 -1
  117. package/target/test/frameworkBase/LangTest.spec.js +46 -32
  118. package/target/test/frameworkBase/LangTest.spec.js.map +1 -1
  119. package/target/test/frameworkBase/_ext/monadish/DomQueryTest.spec.js +238 -228
  120. package/target/test/frameworkBase/_ext/monadish/DomQueryTest.spec.js.map +1 -1
  121. package/target/test/frameworkBase/_ext/monadish/LangTest.spec.js +45 -31
  122. package/target/test/frameworkBase/_ext/monadish/LangTest.spec.js.map +1 -1
  123. package/target/test/frameworkBase/_ext/monadish/MappingProbes.js +24 -33
  124. package/target/test/frameworkBase/_ext/monadish/MappingProbes.js.map +1 -1
  125. package/target/test/frameworkBase/_ext/monadish/MappingTest.spec.js +8 -8
  126. package/target/test/frameworkBase/_ext/monadish/MappingTest.spec.js.map +1 -1
  127. package/target/test/frameworkBase/_ext/monadish/MonadTest.spec.js +31 -31
  128. package/target/test/frameworkBase/_ext/monadish/MonadTest.spec.js.map +1 -1
  129. package/target/test/frameworkBase/_ext/monadish/StreamTest.spec.js +50 -48
  130. package/target/test/frameworkBase/_ext/monadish/StreamTest.spec.js.map +1 -1
  131. package/target/test/frameworkBase/_ext/shared/StandardInits.js +310 -132
  132. package/target/test/frameworkBase/_ext/shared/StandardInits.js.map +1 -1
  133. package/target/test/frameworkBase/_ext/shared/XmlResponses.js +235 -22
  134. package/target/test/frameworkBase/_ext/shared/XmlResponses.js.map +1 -1
  135. package/target/test/impl/ImplTest.spec.js +32 -59
  136. package/target/test/impl/ImplTest.spec.js.map +1 -1
  137. package/target/test/impl/ImplTest_23.spec.js +32 -59
  138. package/target/test/impl/ImplTest_23.spec.js.map +1 -1
  139. package/target/test/impl/SeparatorCharsTest.spec.js +17 -17
  140. package/target/test/impl/SeparatorCharsTest.spec.js.map +1 -1
  141. package/target/test/myfaces/OamSubmit.spec.js +25 -25
  142. package/target/test/myfaces/OamSubmit.spec.js.map +1 -1
  143. package/target/test/queue/AsynchronousProbe.js +23 -29
  144. package/target/test/queue/AsynchronousProbe.js.map +1 -1
  145. package/target/test/queue/AsynchronousQueueTest.spec.js +39 -70
  146. package/target/test/queue/AsynchronousQueueTest.spec.js.map +1 -1
  147. package/target/test/xhrCore/EventTests.spec.js +43 -74
  148. package/target/test/xhrCore/EventTests.spec.js.map +1 -1
  149. package/target/test/xhrCore/FakeWebsocket.js +14 -16
  150. package/target/test/xhrCore/FakeWebsocket.js.map +1 -1
  151. package/target/test/xhrCore/FileUploadTest.spec.js +47 -77
  152. package/target/test/xhrCore/FileUploadTest.spec.js.map +1 -1
  153. package/target/test/xhrCore/NamespacesRequestTest.spec.js +204 -0
  154. package/target/test/xhrCore/NamespacesRequestTest.spec.js.map +1 -0
  155. package/target/test/xhrCore/OamSubmitTest.spec.js +180 -0
  156. package/target/test/xhrCore/OamSubmitTest.spec.js.map +1 -0
  157. package/target/test/xhrCore/RequestParamsTest.spec.js +143 -72
  158. package/target/test/xhrCore/RequestParamsTest.spec.js.map +1 -1
  159. package/target/test/xhrCore/RequestTest.spec.js +173 -149
  160. package/target/test/xhrCore/RequestTest.spec.js.map +1 -1
  161. package/target/test/xhrCore/RequestTest_23.spec.js +127 -142
  162. package/target/test/xhrCore/RequestTest_23.spec.js.map +1 -1
  163. package/target/test/xhrCore/ResponseTest.spec.js +415 -100
  164. package/target/test/xhrCore/ResponseTest.spec.js.map +1 -1
  165. package/target/test/xhrCore/ResponseTest23.spec.js +152 -91
  166. package/target/test/xhrCore/ResponseTest23.spec.js.map +1 -1
  167. package/target/test/xhrCore/ShadowDomTest.spec.js +30 -61
  168. package/target/test/xhrCore/ShadowDomTest.spec.js.map +1 -1
  169. package/target/test/xhrCore/WebsocketTest.js +60 -93
  170. package/target/test/xhrCore/WebsocketTest.js.map +1 -1
  171. package/target/test/xhrCore/XhrFormDataTest.spec.js +79 -30
  172. package/target/test/xhrCore/XhrFormDataTest.spec.js.map +1 -1
  173. package/target/test-classes/.gz +0 -0
  174. package/target/test-classes/com/example/jsfs_js_ts/JsfsJsTsApplicationTests.class +0 -0
  175. package/target/test-classes/fileuploadtest.html +24 -0
  176. package/target/test-classes/jsf-development.js +3559 -0
  177. package/target/test-classes/jsf-development.js.br +0 -0
  178. package/target/test-classes/jsf-development.js.gz +0 -0
  179. package/target/test-classes/jsf-development.js.map +1 -0
  180. package/target/test-classes/jsf.js +3 -0
  181. package/target/test-classes/jsf.js.br +0 -0
  182. package/target/test-classes/jsf.js.gz +0 -0
  183. package/tmp.xml +36 -0
@@ -18,9 +18,20 @@ import {Implementation} from "../../impl/AjaxImpl";
18
18
  import {StandardInits} from "../frameworkBase/_ext/shared/StandardInits";
19
19
 
20
20
  import protocolPage = StandardInits.protocolPage;
21
- import {DQ} from "mona-dish";
21
+ import {Config, DQ} from "mona-dish";
22
22
  import {XhrFormData} from "../../impl/xhrCore/XhrFormData";
23
- import { expect } from "chai";
23
+ import {expect} from "chai";
24
+ import prefixPage = StandardInits.prefixEmbeddedPage;
25
+ import prefixEmbeddedPage = StandardInits.prefixEmbeddedPage;
26
+ import HTML_PREFIX_EMBEDDED_BODY = StandardInits.HTML_PREFIX_EMBEDDED_BODY;
27
+ import {it} from "mocha";
28
+ import {decodeEncodedValues, mergeKeyValueEntries} from "../../impl/util/URLCodec";
29
+
30
+ function getFormData(requestBody: string): Config {
31
+ let ret = new Config({});
32
+ mergeKeyValueEntries(ret, decodeEncodedValues(requestBody));
33
+ return ret;
34
+ }
24
35
 
25
36
  describe("test for proper request param patterns identical to the old implementation", function () {
26
37
  const UPDATE_INSERT_2 = {
@@ -35,12 +46,12 @@ describe("test for proper request param patterns identical to the old implementa
35
46
  /**
36
47
  * matches two maps for absolute identicality
37
48
  */
38
- let matches = (item1: {[key: string]: any}, item2: {[key: string]: any}): boolean => {
39
- if(Object.keys(item1).length != Object.keys(item2).length) {
49
+ let matches = (item1: { [key: string]: any }, item2: { [key: string]: any }): boolean => {
50
+ if (Object.keys(item1).length != Object.keys(item2).length) {
40
51
  return false;
41
52
  }
42
- for(let key in item1) {
43
- if((!(key in item2)) || item1[key] != item2[key]) {
53
+ for (let key in item1) {
54
+ if ((!(key in item2)) || item1[key] != item2[key]) {
44
55
  return false;
45
56
  }
46
57
  }
@@ -77,50 +88,152 @@ describe("test for proper request param patterns identical to the old implementa
77
88
  this.closeIt();
78
89
  });
79
90
 
80
- it("must pass updateinsert2 with proper parameters", function() {
91
+ it("must pass updateinsert2 with proper parameters", function () {
81
92
  DQ.byId("cmd_update_insert2").click();
82
93
 
83
94
  let requestBody = this.requests[0].requestBody;
84
- let formData = new XhrFormData(requestBody);
95
+ let formData = getFormData(requestBody);
85
96
 
86
97
  expect(matches(formData.value, UPDATE_INSERT_2)).to.be.true;
87
-
88
98
  });
89
99
 
90
100
 
91
- it("must handle base64 encoded strings properly as request data", function() {
101
+ it("must handle base64 encoded strings properly as request data", function () {
92
102
  let probe = "YWFhYWFhc1Rlc3RpdCDDpGtvNDU5NjczMDA9PSsrNDU5MGV3b3UkJiUmLyQmJQ==";
93
103
  DQ.byId("jakarta.faces.ViewState").inputValue.value = probe;
94
104
  DQ.byId("cmd_update_insert2").click();
95
105
  let requestBody = this.requests[0].requestBody;
96
106
  //We check if the base64 encoded string matches the original
97
- let formData = new XhrFormData(requestBody);
107
+ let formData = getFormData(requestBody);
98
108
 
99
109
  expect(decodeURIComponent(formData.getIf("jakarta.faces.ViewState").value) == probe).to.be.true;
100
110
  });
101
111
 
102
112
 
103
- it("must handle empty parameters properly", function() {
113
+ it("must handle empty parameters properly", function () {
104
114
  let probe = "";
105
115
  DQ.byId("jakarta.faces.ViewState").inputValue.value = probe;
106
116
  DQ.byId("cmd_update_insert2").click();
107
117
  let requestBody = this.requests[0].requestBody;
108
118
  //We check if the base64 encoded string matches the original
109
- let formData = new XhrFormData(requestBody);
119
+ let formData = getFormData(requestBody);
110
120
 
111
121
  expect(decodeURIComponent(formData.getIf("jakarta.faces.ViewState").value) == probe).to.be.true;
112
122
  });
113
123
 
114
124
  //KssbpZfCe+0lwDhgMRQ44wRFkaM1o1lbMMUO3lini5YhXWm6
115
125
 
116
- it("must handle base64 special cases properly (+ in encoding)", function() {
126
+ it("must handle base64 special cases properly (+ in encoding)", function () {
117
127
  let probe = "KssbpZfCe+0lwDhgMRQ44wRFkaM1o1lbMMUO3lini5YhXWm6";
118
128
  DQ.byId("jakarta.faces.ViewState").inputValue.value = probe;
119
129
  DQ.byId("cmd_update_insert2").click();
120
130
  let requestBody = this.requests[0].requestBody;
121
131
  //We check if the base64 encoded string matches the original
122
- let formData = new XhrFormData(requestBody);
132
+ let formData = getFormData(requestBody);
123
133
 
124
134
  expect(decodeURIComponent(formData.getIf("jakarta.faces.ViewState").value) == probe).to.be.true;
125
135
  });
136
+
137
+ it("must handle prefixed inputs properly (prefixes must be present) faces4", function (done) {
138
+ window.document.body.innerHTML = HTML_PREFIX_EMBEDDED_BODY;
139
+
140
+ //we now run the tests here
141
+ try {
142
+
143
+ let event = {
144
+ isTrusted: true,
145
+ type: 'change',
146
+ target: document.getElementById("page:input::field"),
147
+ currentTarget: document.getElementById("page:input::field")
148
+ };
149
+ faces.ajax.request(document.getElementById("page:input"), event as any, {
150
+ render: "page:output",
151
+ execute: "page:input",
152
+ params: {
153
+ "booga2.xxx": "yyy",
154
+ "javax.faces.behavior.event": "change",
155
+ "booga": "bla"
156
+ },
157
+ });
158
+ } catch (err) {
159
+ console.error(err);
160
+ expect(false).to.eq(true);
161
+ }
162
+ const requestBody = this.requests[0].requestBody;
163
+ //We check if the base64 encoded string matches the original
164
+ expect(requestBody.indexOf("javax.faces.behavior.event")).to.not.eq(-1);
165
+ expect(requestBody.indexOf("javax.faces.behavior.event=change")).to.not.eq(-1);
166
+ expect(requestBody.indexOf("page%3Ainput=input_value")).to.not.eq(-1);
167
+ done();
168
+ });
169
+
170
+
171
+
172
+
173
+ /**
174
+ * This test is based on Tobago 6 (Jakarte EE 9).
175
+ */
176
+ it("must handle ':' in IDs properly", function (done) {
177
+ window.document.body.innerHTML = `
178
+
179
+ <tobago-page locale="en" class="container-fluid" id="page" focus-on-error="true" wait-overlay-delay-full="1000" wait-overlay-delay-ajax="1000">
180
+ <form action="/content/010-input/10-in/In.xhtml?jfwid=q6qbeuqed" id="page::form" method="post" accept-charset="UTF-8" data-tobago-context-path="">
181
+ <input type="hidden" name="jakarta.faces.source" id="jakarta.faces.source" disabled="disabled">
182
+ <tobago-focus id="page::lastFocusId">
183
+ <input type="hidden" name="page::lastFocusId" id="page::lastFocusId::field">
184
+ </tobago-focus>
185
+ <input type="hidden" name="org.apache.myfaces.tobago.webapp.Secret" id="org.apache.myfaces.tobago.webapp.Secret" value="secretValue">
186
+ <tobago-in id="page:input" class="tobago-auto-spacing">
187
+ <input type="text" name="page:input" id="page:input::field" class="form-control" value="Bob">
188
+ <tobago-behavior event="change" client-id="page:input" field-id="page:input::field" execute="page:input" render="page:output"></tobago-behavior>
189
+ </tobago-in>
190
+ <tobago-out id="page:output" class="tobago-auto-spacing">
191
+ <span class="form-control-plaintext"></span>
192
+ </tobago-out>
193
+ <div class="tobago-page-menuStore">
194
+ </div>
195
+ <span id="page::faces-state-container">
196
+ <input type="hidden" name="jakarta.faces.ViewState" id="j_id__v_0:jakarta.faces.ViewState:1" value="viewStateValue" autocomplete="off">
197
+ <input type="hidden" name="jakarta.faces.RenderKitId" value="tobago">
198
+ <input type="hidden" id="j_id__v_0:jakarta.faces.ClientWindow:1" name="jakarta.faces.ClientWindow" value="clientWindowValue">
199
+ </span>
200
+ </form>
201
+ </tobago-page>
202
+ `;
203
+
204
+ //we now run the tests here
205
+ try {
206
+
207
+ let event = {
208
+ isTrusted: true,
209
+ type: 'change',
210
+ target: document.getElementById("page:input::field"),
211
+ currentTarget: document.getElementById("page:input::field")
212
+ };
213
+ global.debug2 = true;
214
+ faces.ajax.request(document.getElementById("page:input"), event as any, {
215
+ "jakarta.faces.behavior.event": 'change',
216
+ execute: "page:input",
217
+ render: "page:output"
218
+ });
219
+ } catch (err) {
220
+ console.error(err);
221
+ expect(false).to.eq(true);
222
+ }
223
+ const requestBody = this.requests[0].requestBody;
224
+ expect(requestBody.indexOf("org.apache.myfaces.tobago.webapp.Secret=secretValue")).to.not.eq(-1);
225
+ expect(requestBody.indexOf("page%3Ainput=Bob")).to.not.eq(-1);
226
+ expect(requestBody.indexOf("jakarta.faces.ViewState=viewStateValue")).to.not.eq(-1);
227
+ expect(requestBody.indexOf("jakarta.faces.RenderKitId=tobago")).to.not.eq(-1);
228
+ expect(requestBody.indexOf("jakarta.faces.ClientWindow=clientWindowValue")).to.not.eq(-1);
229
+ expect(requestBody.indexOf("jakarta.faces.behavior.event=change")).to.not.eq(-1);
230
+ expect(requestBody.indexOf("jakarta.faces.partial.event=change")).to.not.eq(-1);
231
+ expect(requestBody.indexOf("jakarta.faces.source=page%3Ainput")).to.not.eq(-1);
232
+ expect(requestBody.indexOf("jakarta.faces.partial.ajax=true")).to.not.eq(-1);
233
+ expect(requestBody.indexOf("page%3A%3Aform=page%3A%3Aform")).to.not.eq(-1);
234
+ expect(requestBody.indexOf("jakarta.faces.partial.execute=page%3Ainput")).to.not.eq(-1);
235
+ expect(requestBody.indexOf("jakarta.faces.partial.render=page%3Aoutput")).to.not.eq(-1);
236
+ done();
237
+ });
238
+
126
239
  });
@@ -20,7 +20,7 @@ import {expect} from "chai";
20
20
  import {StandardInits} from "../frameworkBase/_ext/shared/StandardInits";
21
21
  import {DomQuery} from "mona-dish";
22
22
  import {
23
- COMPLETE,
23
+ COMPLETE, EMPTY_STR,
24
24
  P_AJAX,
25
25
  P_EXECUTE,
26
26
  P_PARTIAL_SOURCE,
@@ -464,9 +464,9 @@ describe('Tests after core when it hits response', function () {
464
464
  },
465
465
  onerror: (error: any) => {
466
466
  expect(error.type).to.eq("error");
467
- expect(!!error.status).to.eq(true);
467
+ expect(error.status).to.eq(EMPTY_STR);
468
468
  expect(!!error.message).to.eq(true);
469
- expect(!!error.source).to.eq(true);
469
+ expect(!!error.source?.id).to.eq(true);
470
470
  expect(!!error.responseCode).to.eq(true);
471
471
  expect(!!error.responseText).to.eq(true);
472
472
  expect(!error.responseXML).to.eq(true);
@@ -491,5 +491,72 @@ describe('Tests after core when it hits response', function () {
491
491
  }
492
492
 
493
493
  });
494
+
495
+ // We can cover this TCK issue in a simple code unit test, the case is simple enough
496
+ it("must throw an error on invalid delays (MYFACES-4499, TCK_ISSUE320IT )", (done) => {
497
+
498
+ let element = DomQuery.byId("input_2").getAsElem(0).value;
499
+ try {
500
+ faces.ajax.request(element, null, {
501
+ execute: "input_1",
502
+ render: "@form",
503
+ delay: NaN,
504
+ params: {
505
+ pass1: "pass1",
506
+ pass2: "pass2",
507
+ }
508
+ });
509
+ } catch (e) {
510
+ expect(e.message.indexOf("NaN") > 0).to.eq(true, "Invalid NaN in message");
511
+ done();
512
+ return;
513
+ }
514
+ done("Expecting a client error to be thrown")
515
+ });
516
+
517
+ it("must throw an error on invalid delays (MYFACES-4499, TCK_ISSUE320IT ) - 2", (done) => {
518
+
519
+ let element = DomQuery.byId("input_2").getAsElem(0).value;
520
+ try {
521
+ faces.ajax.request(element, null, {
522
+ execute: "input_1",
523
+ render: "@form",
524
+ delay: -1,
525
+ params: {
526
+ pass1: "pass1",
527
+ pass2: "pass2",
528
+ }
529
+ });
530
+ } catch (e) {
531
+ expect(e.message.indexOf("-1") > 0).to
532
+ .eq(true, "Invalid integer value in message");
533
+ done();
534
+ return;
535
+ }
536
+ done("Expecting a client error to be thrown")
537
+ });
538
+ it("must throw an error on invalid delays (MYFACES-4499, TCK_ISSUE320IT ) - 3", (done) => {
539
+
540
+ let element = DomQuery.byId("input_2").getAsElem(0).value;
541
+ try {
542
+ faces.ajax.request(element, null, {
543
+ execute: "input_1",
544
+ render: "@form",
545
+ delay: "booga",
546
+ params: {
547
+ pass1: "pass1",
548
+ pass2: "pass2",
549
+ }
550
+ });
551
+ } catch (e) {
552
+ expect(e.message.indexOf("booga") > 0).to.be
553
+ .eq(true, "Invalid string value in message");
554
+ done();
555
+ return;
556
+ }
557
+ done("Expecting a client error to be thrown")
558
+ });
559
+
560
+
494
561
  });
495
562
 
@@ -24,7 +24,7 @@ import {expect} from "chai";
24
24
  import {StandardInits} from "../frameworkBase/_ext/shared/StandardInits";
25
25
  import {DomQuery} from "mona-dish";
26
26
  import {
27
- COMPLETE,
27
+ COMPLETE, EMPTY_STR,
28
28
  SUCCESS
29
29
  } from "../../impl/core/Const";
30
30
  ;
@@ -65,6 +65,7 @@ let {
65
65
 
66
66
  import STD_XML = StandardInits.STD_XML;
67
67
  import defaultMyFaces23 = StandardInits.defaultMyFaces23;
68
+ import HTML_PREFIX_EMBEDDED_BODY = StandardInits.HTML_PREFIX_EMBEDDED_BODY;
68
69
 
69
70
  declare var jsf: any;
70
71
  declare var Implementation: any;
@@ -333,9 +334,9 @@ describe('Tests after core when it hits response', function () {
333
334
  pass2: "pass2",
334
335
  onerror: (error: any) => {
335
336
  expect(error.type).to.eq("error");
336
- expect(!!error.status).to.eq(true);
337
+ expect(error.status).to.eq(EMPTY_STR);
337
338
  expect(!!error.message).to.eq(true);
338
- expect(!!error.source).to.eq(true);
339
+ expect(!!error.source.id).to.eq(true);
339
340
  expect(!!error.responseCode).to.eq(true);
340
341
  expect(!!error.responseText).to.eq(true);
341
342
  expect(!error.responseXML).to.eq(true);
@@ -360,5 +361,40 @@ describe('Tests after core when it hits response', function () {
360
361
  }
361
362
 
362
363
  });
364
+
365
+ it("must handle prefixed inputs properly (prefixes must be present)", function (done) {
366
+ window.document.body.innerHTML = HTML_PREFIX_EMBEDDED_BODY;
367
+
368
+ //we now run the tests here
369
+ try {
370
+
371
+ let event = {
372
+ isTrusted: true,
373
+ type: 'change',
374
+ target: document.getElementById("page:input::field"),
375
+ currentTarget: document.getElementById("page:input::field")
376
+ };
377
+ jsf.ajax.request(document.getElementById("page:input"), event as any, {
378
+ render: "page:output",
379
+ execute: "page:input",
380
+ params: {
381
+ "booga2.xxx": "yyy",
382
+ "javax.faces.behavior.event": "change",
383
+ "booga": "bla"
384
+ },
385
+ });
386
+ } catch (err) {
387
+ console.error(err);
388
+ expect(false).to.eq(true);
389
+ }
390
+ const requestBody = this.requests[0].requestBody;
391
+ //We check if the base64 encoded string matches the original
392
+ expect(requestBody.indexOf("javax.faces.behavior.event")).to.not.eq(-1);
393
+ expect(requestBody.indexOf("javax.faces.behavior.event=change")).to.not.eq(-1);
394
+ expect(requestBody.indexOf("page%3Ainput=input_value")).to.not.eq(-1);
395
+ done();
396
+ });
397
+
398
+
363
399
  });
364
400