@luomus/laji-form 15.1.0 → 15.1.1

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 (297) hide show
  1. package/CHANGELOG.md +0 -4
  2. package/dist/laji-form.js +1 -1
  3. package/dist/styles.css +81 -90
  4. package/jsonconfig.json +26 -0
  5. package/migrate.sh +0 -1
  6. package/package.json +8 -8
  7. package/test-export/array-spec.js +204 -0
  8. package/test-export/bird-point-count-spec.d.ts +1 -0
  9. package/test-export/bird-point-count-spec.js +62 -0
  10. package/test-export/collection-contest-form-spec.d.ts +1 -0
  11. package/test-export/collection-contest-form-spec.js +38 -0
  12. package/test-export/dataset-form-spec.d.ts +1 -0
  13. package/test-export/dataset-form-spec.js +50 -0
  14. package/test-export/date-time-widget-spec.d.ts +1 -0
  15. package/test-export/date-time-widget-spec.js +188 -0
  16. package/test-export/geocoder-spec.d.ts +1 -0
  17. package/test-export/geocoder-spec.js +135 -0
  18. package/test-export/image-array-spec.d.ts +1 -0
  19. package/test-export/image-array-spec.js +94 -0
  20. package/test-export/inject-field-spec.d.ts +1 -0
  21. package/test-export/inject-field-spec.js +148 -0
  22. package/test-export/internal-uuids-spec.d.ts +1 -0
  23. package/test-export/internal-uuids-spec.js +157 -0
  24. package/test-export/invasive-species-eradication-np-spec.d.ts +1 -0
  25. package/test-export/invasive-species-eradication-np-spec.js +18 -0
  26. package/test-export/invasive-species-eradication-spec.d.ts +1 -0
  27. package/test-export/invasive-species-eradication-spec.js +25 -0
  28. package/test-export/line-transect-spec.d.ts +1 -0
  29. package/test-export/line-transect-spec.js +121 -0
  30. package/test-export/mobile-form-spec.d.ts +1 -0
  31. package/test-export/mobile-form-spec.js +84 -0
  32. package/test-export/nafi-spec.d.ts +1 -0
  33. package/test-export/nafi-spec.js +85 -0
  34. package/test-export/select-widget-spec.d.ts +1 -0
  35. package/test-export/select-widget-spec.js +68 -0
  36. package/test-export/single-item-array-field-spec.d.ts +1 -0
  37. package/test-export/single-item-array-field-spec.js +92 -0
  38. package/test-export/syke-butterfly-spec.d.ts +1 -0
  39. package/test-export/syke-butterfly-spec.js +163 -0
  40. package/test-export/test-utils.d.ts +150 -177
  41. package/test-export/test-utils.js +218 -214
  42. package/test-export/transaction-form-spec.d.ts +1 -0
  43. package/test-export/transaction-form-spec.js +63 -0
  44. package/test-export/trip-report-autosuggest-spec.d.ts +1 -0
  45. package/test-export/trip-report-autosuggest-spec.js +272 -0
  46. package/test-export/trip-report-spec.d.ts +1 -0
  47. package/test-export/trip-report-spec.js +456 -0
  48. package/test-export/unit-list-shorthand-array-field-spec.d.ts +1 -0
  49. package/test-export/unit-list-shorthand-array-field-spec.js +71 -0
  50. package/test-export/validation-spec.d.ts +1 -0
  51. package/test-export/validation-spec.js +336 -0
  52. package/test-export/water-bird-spec.d.ts +1 -0
  53. package/test-export/water-bird-spec.js +30 -0
  54. package/test-export/wbc-spec.d.ts +1 -0
  55. package/test-export/wbc-spec.js +82 -0
  56. package/tsconfig.test.json +1 -1
  57. package/xsel -b +9 -0
  58. package/cypress/fixtures/example.json +0 -5
  59. package/cypress/screenshots/nafi.cy.ts/NAFI (MHL.6) -- selecting species name with keyboard navigation -- and closes suggestion list (failed).png +0 -0
  60. package/cypress/screenshots/nafi.cy.ts/NAFI (MHL.6) -- selecting species name with keyboard navigation -- and is marked as suggested (failed).png +0 -0
  61. package/lib/ApiClient.d.ts +0 -46
  62. package/lib/ApiClient.js +0 -93
  63. package/lib/Context.d.ts +0 -8
  64. package/lib/Context.js +0 -18
  65. package/lib/ReactContext.d.ts +0 -7
  66. package/lib/ReactContext.js +0 -5
  67. package/lib/components/BaseComponent.d.ts +0 -9
  68. package/lib/components/BaseComponent.js +0 -29
  69. package/lib/components/LajiForm.d.ts +0 -221
  70. package/lib/components/LajiForm.js +0 -615
  71. package/lib/components/VirtualSchemaField.d.ts +0 -42
  72. package/lib/components/VirtualSchemaField.js +0 -74
  73. package/lib/components/components.d.ts +0 -119
  74. package/lib/components/components.js +0 -606
  75. package/lib/components/fields/AnnotationField.d.ts +0 -34
  76. package/lib/components/fields/AnnotationField.js +0 -242
  77. package/lib/components/fields/AnyToBooleanField.d.ts +0 -18
  78. package/lib/components/fields/AnyToBooleanField.js +0 -20
  79. package/lib/components/fields/ArrayBulkField.d.ts +0 -23
  80. package/lib/components/fields/ArrayBulkField.js +0 -82
  81. package/lib/components/fields/ArrayCombinerField.d.ts +0 -36
  82. package/lib/components/fields/ArrayCombinerField.js +0 -138
  83. package/lib/components/fields/ArrayField.d.ts +0 -39
  84. package/lib/components/fields/ArrayField.js +0 -148
  85. package/lib/components/fields/AudioArrayField.d.ts +0 -22
  86. package/lib/components/fields/AudioArrayField.js +0 -100
  87. package/lib/components/fields/AutoArrayField.d.ts +0 -24
  88. package/lib/components/fields/AutoArrayField.js +0 -56
  89. package/lib/components/fields/AutosuggestField.d.ts +0 -69
  90. package/lib/components/fields/AutosuggestField.js +0 -299
  91. package/lib/components/fields/CombinedValueDisplayField.d.ts +0 -41
  92. package/lib/components/fields/CombinedValueDisplayField.js +0 -100
  93. package/lib/components/fields/ConditionalOnChangeField.d.ts +0 -42
  94. package/lib/components/fields/ConditionalOnChangeField.js +0 -107
  95. package/lib/components/fields/ConditionalUiSchemaField.d.ts +0 -123
  96. package/lib/components/fields/ConditionalUiSchemaField.js +0 -143
  97. package/lib/components/fields/ContextInjectionField.d.ts +0 -24
  98. package/lib/components/fields/ContextInjectionField.js +0 -68
  99. package/lib/components/fields/DataLeakerField.d.ts +0 -40
  100. package/lib/components/fields/DataLeakerField.js +0 -68
  101. package/lib/components/fields/DefaultValueArrayField.d.ts +0 -34
  102. package/lib/components/fields/DefaultValueArrayField.js +0 -59
  103. package/lib/components/fields/DependentBooleanField.d.ts +0 -38
  104. package/lib/components/fields/DependentBooleanField.js +0 -87
  105. package/lib/components/fields/DependentDisableField.d.ts +0 -35
  106. package/lib/components/fields/DependentDisableField.js +0 -71
  107. package/lib/components/fields/EnumRangeArrayField.d.ts +0 -27
  108. package/lib/components/fields/EnumRangeArrayField.js +0 -115
  109. package/lib/components/fields/ExtraLabelRowField.d.ts +0 -38
  110. package/lib/components/fields/ExtraLabelRowField.js +0 -100
  111. package/lib/components/fields/FakePropertyField.d.ts +0 -18
  112. package/lib/components/fields/FakePropertyField.js +0 -48
  113. package/lib/components/fields/FilterArrayField.d.ts +0 -73
  114. package/lib/components/fields/FilterArrayField.js +0 -121
  115. package/lib/components/fields/FlatField.d.ts +0 -29
  116. package/lib/components/fields/FlatField.js +0 -171
  117. package/lib/components/fields/GeocoderField.d.ts +0 -47
  118. package/lib/components/fields/GeocoderField.js +0 -372
  119. package/lib/components/fields/GridLayoutField.d.ts +0 -18
  120. package/lib/components/fields/GridLayoutField.js +0 -32
  121. package/lib/components/fields/HiddenField.d.ts +0 -10
  122. package/lib/components/fields/HiddenField.js +0 -11
  123. package/lib/components/fields/ImageArrayField.d.ts +0 -172
  124. package/lib/components/fields/ImageArrayField.js +0 -697
  125. package/lib/components/fields/ImageDisplayField.d.ts +0 -18
  126. package/lib/components/fields/ImageDisplayField.js +0 -44
  127. package/lib/components/fields/InitiallyHiddenField.d.ts +0 -21
  128. package/lib/components/fields/InitiallyHiddenField.js +0 -58
  129. package/lib/components/fields/InjectDefaultValueField.d.ts +0 -37
  130. package/lib/components/fields/InjectDefaultValueField.js +0 -68
  131. package/lib/components/fields/InjectField.d.ts +0 -46
  132. package/lib/components/fields/InjectField.js +0 -88
  133. package/lib/components/fields/InputWithDefaultValueButtonField.d.ts +0 -25
  134. package/lib/components/fields/InputWithDefaultValueButtonField.js +0 -61
  135. package/lib/components/fields/LocalityField.d.ts +0 -22
  136. package/lib/components/fields/LocalityField.js +0 -94
  137. package/lib/components/fields/LocationChooserField.d.ts +0 -27
  138. package/lib/components/fields/LocationChooserField.js +0 -440
  139. package/lib/components/fields/MapArrayField.d.ts +0 -78
  140. package/lib/components/fields/MapArrayField.js +0 -1783
  141. package/lib/components/fields/MapField.d.ts +0 -48
  142. package/lib/components/fields/MapField.js +0 -434
  143. package/lib/components/fields/MultiAnyToBooleanField.d.ts +0 -25
  144. package/lib/components/fields/MultiAnyToBooleanField.js +0 -100
  145. package/lib/components/fields/MultiArrayField.d.ts +0 -53
  146. package/lib/components/fields/MultiArrayField.js +0 -224
  147. package/lib/components/fields/MultiLanguageField.d.ts +0 -13
  148. package/lib/components/fields/MultiLanguageField.js +0 -52
  149. package/lib/components/fields/MultiTagArrayField.d.ts +0 -36
  150. package/lib/components/fields/MultiTagArrayField.js +0 -142
  151. package/lib/components/fields/NamedPlaceChooserField.d.ts +0 -29
  152. package/lib/components/fields/NamedPlaceChooserField.js +0 -380
  153. package/lib/components/fields/NamedPlaceSaverField.d.ts +0 -29
  154. package/lib/components/fields/NamedPlaceSaverField.js +0 -237
  155. package/lib/components/fields/NestField.d.ts +0 -148
  156. package/lib/components/fields/NestField.js +0 -289
  157. package/lib/components/fields/ObjectField.d.ts +0 -2
  158. package/lib/components/fields/ObjectField.js +0 -119
  159. package/lib/components/fields/PdfArrayField.d.ts +0 -21
  160. package/lib/components/fields/PdfArrayField.js +0 -40
  161. package/lib/components/fields/PrefillingArrayField.d.ts +0 -22
  162. package/lib/components/fields/PrefillingArrayField.js +0 -65
  163. package/lib/components/fields/SchemaField.d.ts +0 -7
  164. package/lib/components/fields/SchemaField.js +0 -109
  165. package/lib/components/fields/ScopeField.d.ts +0 -85
  166. package/lib/components/fields/ScopeField.js +0 -521
  167. package/lib/components/fields/SectionArrayField.d.ts +0 -38
  168. package/lib/components/fields/SectionArrayField.js +0 -618
  169. package/lib/components/fields/SelectTreeField.d.ts +0 -39
  170. package/lib/components/fields/SelectTreeField.js +0 -143
  171. package/lib/components/fields/SingleActiveArrayField.d.ts +0 -49
  172. package/lib/components/fields/SingleActiveArrayField.js +0 -974
  173. package/lib/components/fields/SingleItemArrayField.d.ts +0 -15
  174. package/lib/components/fields/SingleItemArrayField.js +0 -60
  175. package/lib/components/fields/SortArrayField.d.ts +0 -73
  176. package/lib/components/fields/SortArrayField.js +0 -351
  177. package/lib/components/fields/SplitField.d.ts +0 -28
  178. package/lib/components/fields/SplitField.js +0 -65
  179. package/lib/components/fields/StringToArrayField.d.ts +0 -24
  180. package/lib/components/fields/StringToArrayField.js +0 -48
  181. package/lib/components/fields/SumField.d.ts +0 -35
  182. package/lib/components/fields/SumField.js +0 -83
  183. package/lib/components/fields/TableField.d.ts +0 -18
  184. package/lib/components/fields/TableField.js +0 -136
  185. package/lib/components/fields/TagArrayField.d.ts +0 -38
  186. package/lib/components/fields/TagArrayField.js +0 -128
  187. package/lib/components/fields/ToggleAdditionalArrayFieldsField.d.ts +0 -26
  188. package/lib/components/fields/ToggleAdditionalArrayFieldsField.js +0 -81
  189. package/lib/components/fields/UiFieldApplierField.d.ts +0 -30
  190. package/lib/components/fields/UiFieldApplierField.js +0 -106
  191. package/lib/components/fields/UiFieldMapperArrayField.d.ts +0 -42
  192. package/lib/components/fields/UiFieldMapperArrayField.js +0 -121
  193. package/lib/components/fields/UnitCountShorthandField.d.ts +0 -22
  194. package/lib/components/fields/UnitCountShorthandField.js +0 -149
  195. package/lib/components/fields/UnitListShorthandArrayField.d.ts +0 -26
  196. package/lib/components/fields/UnitListShorthandArrayField.js +0 -108
  197. package/lib/components/fields/UnitShorthandField.d.ts +0 -32
  198. package/lib/components/fields/UnitShorthandField.js +0 -220
  199. package/lib/components/templates/ArrayFieldTemplate.d.ts +0 -85
  200. package/lib/components/templates/ArrayFieldTemplate.js +0 -417
  201. package/lib/components/templates/BaseInputTemplate.d.ts +0 -11
  202. package/lib/components/templates/BaseInputTemplate.js +0 -80
  203. package/lib/components/templates/DescriptionField.d.ts +0 -1
  204. package/lib/components/templates/DescriptionField.js +0 -37
  205. package/lib/components/templates/ErrorListTemplate.d.ts +0 -9
  206. package/lib/components/templates/ErrorListTemplate.js +0 -95
  207. package/lib/components/templates/FieldTemplate.d.ts +0 -6
  208. package/lib/components/templates/FieldTemplate.js +0 -112
  209. package/lib/components/templates/ObjectFieldTemplate.d.ts +0 -7
  210. package/lib/components/templates/ObjectFieldTemplate.js +0 -66
  211. package/lib/components/templates/TitleField.d.ts +0 -9
  212. package/lib/components/templates/TitleField.js +0 -51
  213. package/lib/components/widgets/AnyToBooleanWidget.d.ts +0 -20
  214. package/lib/components/widgets/AnyToBooleanWidget.js +0 -49
  215. package/lib/components/widgets/AutosuggestWidget.d.ts +0 -66
  216. package/lib/components/widgets/AutosuggestWidget.js +0 -1127
  217. package/lib/components/widgets/CheckboxWidget.d.ts +0 -37
  218. package/lib/components/widgets/CheckboxWidget.js +0 -139
  219. package/lib/components/widgets/DateTimeWidget.d.ts +0 -62
  220. package/lib/components/widgets/DateTimeWidget.js +0 -251
  221. package/lib/components/widgets/DateWidget.d.ts +0 -23
  222. package/lib/components/widgets/DateWidget.js +0 -41
  223. package/lib/components/widgets/HiddenWidget.d.ts +0 -15
  224. package/lib/components/widgets/HiddenWidget.js +0 -19
  225. package/lib/components/widgets/ImageSelectWidget.d.ts +0 -14
  226. package/lib/components/widgets/ImageSelectWidget.js +0 -57
  227. package/lib/components/widgets/InformalTaxonGroupChooserWidget.d.ts +0 -43
  228. package/lib/components/widgets/InformalTaxonGroupChooserWidget.js +0 -237
  229. package/lib/components/widgets/InputGroupWidget.d.ts +0 -21
  230. package/lib/components/widgets/InputGroupWidget.js +0 -36
  231. package/lib/components/widgets/InputWithDefaultValueButtonWidget.d.ts +0 -21
  232. package/lib/components/widgets/InputWithDefaultValueButtonWidget.js +0 -47
  233. package/lib/components/widgets/NumberWidget.d.ts +0 -13
  234. package/lib/components/widgets/NumberWidget.js +0 -21
  235. package/lib/components/widgets/PlainTextWidget.d.ts +0 -12
  236. package/lib/components/widgets/PlainTextWidget.js +0 -24
  237. package/lib/components/widgets/SelectWidget.d.ts +0 -52
  238. package/lib/components/widgets/SelectWidget.js +0 -158
  239. package/lib/components/widgets/SeparatedDateTimeWidget.d.ts +0 -19
  240. package/lib/components/widgets/SeparatedDateTimeWidget.js +0 -59
  241. package/lib/components/widgets/TaxonImageWidget.d.ts +0 -13
  242. package/lib/components/widgets/TaxonImageWidget.js +0 -30
  243. package/lib/components/widgets/TextSelectWidget.d.ts +0 -25
  244. package/lib/components/widgets/TextSelectWidget.js +0 -94
  245. package/lib/components/widgets/TextareaWidget.d.ts +0 -32
  246. package/lib/components/widgets/TextareaWidget.js +0 -87
  247. package/lib/components/widgets/TimeWidget.d.ts +0 -11
  248. package/lib/components/widgets/TimeWidget.js +0 -19
  249. package/lib/components/widgets/URLWidget.d.ts +0 -14
  250. package/lib/components/widgets/URLWidget.js +0 -12
  251. package/lib/components/widgets/UpperCaseWidget.d.ts +0 -13
  252. package/lib/components/widgets/UpperCaseWidget.js +0 -21
  253. package/lib/index.d.ts +0 -20
  254. package/lib/index.js +0 -50
  255. package/lib/services/blocker-service.d.ts +0 -11
  256. package/lib/services/blocker-service.js +0 -55
  257. package/lib/services/custom-event-service.d.ts +0 -17
  258. package/lib/services/custom-event-service.js +0 -35
  259. package/lib/services/dom-id-service.d.ts +0 -8
  260. package/lib/services/dom-id-service.js +0 -30
  261. package/lib/services/focus-service.d.ts +0 -13
  262. package/lib/services/focus-service.js +0 -60
  263. package/lib/services/id-service.d.ts +0 -22
  264. package/lib/services/id-service.js +0 -130
  265. package/lib/services/key-handler-service.d.ts +0 -56
  266. package/lib/services/key-handler-service.js +0 -184
  267. package/lib/services/root-instance-service.d.ts +0 -25
  268. package/lib/services/root-instance-service.js +0 -49
  269. package/lib/services/settings-service.d.ts +0 -34
  270. package/lib/services/settings-service.js +0 -154
  271. package/lib/services/singleton-map-service.d.ts +0 -23
  272. package/lib/services/singleton-map-service.js +0 -44
  273. package/lib/services/submit-hook-service.d.ts +0 -24
  274. package/lib/services/submit-hook-service.js +0 -73
  275. package/lib/styles.js +0 -4
  276. package/lib/themes/bs3.d.ts +0 -3
  277. package/lib/themes/bs3.js +0 -133
  278. package/lib/themes/bs5.d.ts +0 -3
  279. package/lib/themes/bs5.js +0 -111
  280. package/lib/themes/glyphicon-fa-mapping.d.ts +0 -3
  281. package/lib/themes/glyphicon-fa-mapping.js +0 -271
  282. package/lib/themes/stub.d.ts +0 -3
  283. package/lib/themes/stub.js +0 -82
  284. package/lib/themes/theme.d.ts +0 -233
  285. package/lib/themes/theme.js +0 -2
  286. package/lib/translations.json +0 -847
  287. package/lib/utils.d.ts +0 -171
  288. package/lib/utils.js +0 -1191
  289. package/lib/validation.d.ts +0 -7
  290. package/lib/validation.js +0 -141
  291. package/llol +0 -10
  292. package/llol.pdf +0 -10
  293. package/playwright-report/index.html +0 -62
  294. package/q +0 -196
  295. package/rename.sh +0 -24
  296. package/trip-report.spec.ts +0 -594
  297. /package/{lib/styles.d.ts → test-export/array-spec.d.ts} +0 -0
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const test_utils_1 = require("./test-utils");
13
+ describe("Internal UUIDs", () => {
14
+ let form;
15
+ const schema = {
16
+ type: "object",
17
+ properties: {
18
+ arrayOfObjects: {
19
+ type: "array",
20
+ items: {
21
+ type: "object",
22
+ properties: {
23
+ string: {
24
+ type: "string"
25
+ },
26
+ innerArrayOfObjects: {
27
+ type: "array",
28
+ items: {
29
+ type: "object",
30
+ properties: {
31
+ string: {
32
+ type: "string"
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
39
+ },
40
+ object: {
41
+ type: "object",
42
+ properties: {
43
+ innerObject: {
44
+ type: "object",
45
+ properties: {
46
+ arrayOfObjects: {
47
+ type: "array",
48
+ items: {
49
+ type: "object",
50
+ properties: {
51
+ string: {
52
+ type: "string"
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
60
+ },
61
+ number: {
62
+ type: "number"
63
+ },
64
+ }
65
+ };
66
+ const formData = {
67
+ arrayOfObjects: [
68
+ {
69
+ string: "foo",
70
+ innerArrayOfObjects: [
71
+ {
72
+ string: "foo"
73
+ }
74
+ ]
75
+ }
76
+ ],
77
+ object: {
78
+ innerObject: {
79
+ arrayOfObjects: [
80
+ {
81
+ string: "foo"
82
+ }
83
+ ]
84
+ }
85
+ },
86
+ number: 2
87
+ };
88
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
89
+ form = yield test_utils_1.createForm();
90
+ yield form.setState({ schema, formData });
91
+ }));
92
+ it("are generated on initialization", () => __awaiter(void 0, void 0, void 0, function* () {
93
+ const { formData } = yield form.getState();
94
+ yield expect(formData.arrayOfObjects[0]._lajiFormId).not.toBe(undefined);
95
+ yield expect(formData.arrayOfObjects[0].innerArrayOfObjects[0]._lajiFormId).not.toBe(undefined);
96
+ yield expect(formData.object.innerObject.arrayOfObjects[0]._lajiFormId).not.toBe(undefined);
97
+ }));
98
+ it("keeps data intact on id generation", () => __awaiter(void 0, void 0, void 0, function* () {
99
+ const { formData } = yield form.getState();
100
+ yield expect(formData.arrayOfObjects[0].string).toBe("foo");
101
+ yield expect(formData.arrayOfObjects[0].innerArrayOfObjects[0].string).toBe("foo");
102
+ yield expect(formData.object.innerObject.arrayOfObjects[0].string).toBe("foo");
103
+ yield expect(formData.number).toBe(2);
104
+ }));
105
+ it("are removed on submit", () => __awaiter(void 0, void 0, void 0, function* () {
106
+ yield form.submit();
107
+ const submitted = yield form.getSubmittedData();
108
+ yield expect(submitted.arrayOfObjects[0]).not.toContain("_lajiFormId");
109
+ yield expect(submitted.arrayOfObjects[0].innerArrayOfObjects[0]).not.toContain("_lajiFormId");
110
+ yield expect(submitted.object.innerObject.arrayOfObjects[0]).not.toContain("_lajiFormId");
111
+ }));
112
+ it("keeps data intact when ids removed", () => __awaiter(void 0, void 0, void 0, function* () {
113
+ yield form.submit();
114
+ const submitted = yield form.getSubmittedData();
115
+ yield expect(submitted.arrayOfObjects[0].string).toBe("foo");
116
+ yield expect(submitted.arrayOfObjects[0].innerArrayOfObjects[0].string).toBe("foo");
117
+ yield expect(submitted.object.innerObject.arrayOfObjects[0].string).toBe("foo");
118
+ yield expect(submitted.number).toBe(2);
119
+ }));
120
+ it("are removed on change by default", () => __awaiter(void 0, void 0, void 0, function* () {
121
+ yield form.$locateButton("arrayOfObjects", "add").click();
122
+ const changed = yield form.getChangedData();
123
+ yield expect(changed.arrayOfObjects[0]).not.toContain("_lajiFormId");
124
+ yield expect(changed.arrayOfObjects[0].innerArrayOfObjects[0]).not.toContain("_lajiFormId");
125
+ yield expect(changed.object.innerObject.arrayOfObjects[0]).not.toContain("_lajiFormId");
126
+ }));
127
+ it("are not removed on change if optimizeOnChange", () => __awaiter(void 0, void 0, void 0, function* () {
128
+ yield form.setState({ optimizeOnChange: true });
129
+ yield form.$locateButton("arrayOfObjects", "add").click();
130
+ const changed = yield form.getChangedData();
131
+ yield expect(changed.arrayOfObjects[0]._lajiFormId).not.toBe(undefined);
132
+ yield form.setState({ optimizeOnChange: false });
133
+ }));
134
+ it("are added to new array items", () => __awaiter(void 0, void 0, void 0, function* () {
135
+ yield form.setState({ optimizeOnChange: true, formData: Object.assign({}, formData) });
136
+ yield form.$locateButton("arrayOfObjects", "add").click();
137
+ const changed = yield form.getChangedData();
138
+ yield expect(changed.arrayOfObjects[1]._lajiFormId).not.toBe(undefined);
139
+ }));
140
+ describe("use pre-existing ids", () => {
141
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
142
+ yield form.setState({
143
+ formData: Object.assign(Object.assign({}, formData), { arrayOfObjects: [Object.assign(Object.assign({}, formData.arrayOfObjects[0]), { id: "ID" })] })
144
+ });
145
+ }));
146
+ it("instead of _lajiFormId", () => __awaiter(void 0, void 0, void 0, function* () {
147
+ const { formData } = yield form.getState();
148
+ yield expect(formData.arrayOfObjects[0].id).toBe("ID");
149
+ yield expect(formData.arrayOfObjects[0]).not.toContain("_lajiFormId");
150
+ }));
151
+ it("and they are kept intact when ids are removed", () => __awaiter(void 0, void 0, void 0, function* () {
152
+ yield form.submit();
153
+ const submitted = yield form.getSubmittedData();
154
+ yield expect(submitted.arrayOfObjects[0].id).toBe("ID");
155
+ }));
156
+ });
157
+ });
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const test_utils_1 = require("./test-utils");
13
+ describe("invasive species eradication named place form (MHL.32)", () => {
14
+ it("renders", () => __awaiter(void 0, void 0, void 0, function* () {
15
+ // Just check that no error occurs.
16
+ yield test_utils_1.createForm({ id: "MHL.32", localFormData: true });
17
+ }));
18
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const test_utils_1 = require("./test-utils");
13
+ const test_utils_2 = require("laji-map/test-export/test-utils");
14
+ describe("invasive species eradication form (MHL.33)", () => {
15
+ let form;
16
+ it("renders", () => __awaiter(void 0, void 0, void 0, function* () {
17
+ // Just check that no error occurs.
18
+ form = yield test_utils_1.createForm({ id: "MHL.33", localFormData: true });
19
+ }));
20
+ it("geometry can be drawn", () => __awaiter(void 0, void 0, void 0, function* () {
21
+ const map = new test_utils_2.MapPageObject();
22
+ yield map.drawRectangle();
23
+ expect((yield form.getChangedData()).gatherings[0].geometry.geometries[0].type).toBe("Polygon");
24
+ }));
25
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const test_utils_1 = require("./test-utils");
13
+ const protractor_1 = require("protractor");
14
+ describe("Line transect (MHL.1)", () => {
15
+ let form;
16
+ let $taxon;
17
+ let unitAutocompleteMock;
18
+ let taxonAutocompleteMock;
19
+ const unitAutocompleteResponse = {
20
+ "key": "llx",
21
+ "value": "llx",
22
+ "payload": {
23
+ "unit": {
24
+ "shortHandText": "llx",
25
+ "identifications": [
26
+ {
27
+ "taxon": "Luscinia luscinia"
28
+ }
29
+ ],
30
+ "informalTaxonGroups": [
31
+ "MVL.1"
32
+ ],
33
+ "unitFact": {
34
+ "autocompleteSelectedTaxonID": "MX.32819",
35
+ "lineTransectObsType": "MY.lineTransectObsTypeSong",
36
+ "lineTransectRouteFieldType": "MY.lineTransectRouteFieldTypeOuter"
37
+ },
38
+ "pairCount": 1,
39
+ "individualCount": 1
40
+ },
41
+ "interpretedFrom": {
42
+ "taxon": "LL",
43
+ "type": "X"
44
+ }
45
+ }
46
+ };
47
+ const taxonAutocompleteResponse = [
48
+ {
49
+ "key": "MX.32819",
50
+ "value": "Luscinia luscinia",
51
+ "payload": {
52
+ "matchingName": "Luscinia luscinia",
53
+ "informalTaxonGroups": [
54
+ {
55
+ "id": "MVL.1",
56
+ "name": "Linnut"
57
+ }
58
+ ],
59
+ "scientificName": "Luscinia luscinia",
60
+ "scientificNameAuthorship": "(Linnaeus, 1758)",
61
+ "taxonRankId": "MX.species",
62
+ "matchType": "exactMatches",
63
+ "cursiveName": true,
64
+ "finnish": true,
65
+ "species": true,
66
+ "nameType": "MX.scientificName",
67
+ "vernacularName": "satakieli"
68
+ }
69
+ }
70
+ ];
71
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
72
+ form = yield test_utils_1.createForm({ id: "MHL.1", localFormData: true });
73
+ $taxon = form.$locate("gatherings.0.units.0.identifications.0.taxon");
74
+ unitAutocompleteMock = yield form.setMockResponse("/autocomplete/unit", false);
75
+ taxonAutocompleteMock = yield form.setMockResponse("/autocomplete/taxon", false);
76
+ }));
77
+ const $shortHandForIdx = (idx, _idx) => protractor_1.$(`#root_gatherings_${idx}_units_${_idx}_shortHandText`);
78
+ const $shorthand = $shortHandForIdx(0, 0);
79
+ it("shorthand unit is shown", () => __awaiter(void 0, void 0, void 0, function* () {
80
+ expect(yield $shorthand.isDisplayed()).toBe(true);
81
+ }));
82
+ it("shorthand unit expands code after typing code", () => __awaiter(void 0, void 0, void 0, function* () {
83
+ function waitUntilShorthandShowsSchema() {
84
+ return protractor_1.browser.wait(protractor_1.protractor.ExpectedConditions.presenceOf($taxon), 5000, "Code reading timeout");
85
+ }
86
+ yield $shorthand.sendKeys("llx");
87
+ yield $shorthand.sendKeys(protractor_1.protractor.Key.ENTER);
88
+ yield unitAutocompleteMock.resolve(unitAutocompleteResponse);
89
+ yield waitUntilShorthandShowsSchema();
90
+ expect(yield $taxon.isDisplayed()).toBe(true);
91
+ }));
92
+ it("next unit is automatically added", () => __awaiter(void 0, void 0, void 0, function* () {
93
+ expect(yield $shortHandForIdx(0, 1).isDisplayed()).toBe(true);
94
+ }));
95
+ it("unit formData matches response", () => __awaiter(void 0, void 0, void 0, function* () {
96
+ const formData = yield form.getChangedData();
97
+ expect(test_utils_1.filterUUIDs(formData.gatherings[0].units[0])).toEqual(unitAutocompleteResponse.payload.unit);
98
+ expect(formData.gatherings[0].units[0].identifications_0_taxon).toBe(undefined);
99
+ expect(formData.gatherings[0].units[0].unitFact_autocompleteSelectedTaxonID).toBe(undefined);
100
+ expect(formData.gatherings[0].units[0].unitFact_lineTransectObsType).toBe(undefined);
101
+ expect(formData.gatherings[0].units[0].unitFact_lineTransectRouteFieldType).toBe(undefined);
102
+ }));
103
+ it("next unit is focused", () => __awaiter(void 0, void 0, void 0, function* () {
104
+ expect(yield test_utils_1.getFocusedId()).toBe(yield $shortHandForIdx(0, 1).getAttribute("id"));
105
+ }));
106
+ it("prev unit is focused after keyboard navigation", () => __awaiter(void 0, void 0, void 0, function* () {
107
+ yield protractor_1.browser.driver.switchTo().activeElement().sendKeys(protractor_1.protractor.Key.chord(protractor_1.protractor.Key.ALT, protractor_1.protractor.Key.UP));
108
+ expect(yield test_utils_1.getFocusedId()).toBe(yield form.$getInputWidget("gatherings.0.units.0.identifications.0.taxon").getAttribute("id"));
109
+ }));
110
+ it("next gathering is focused after keyboard navigation", () => __awaiter(void 0, void 0, void 0, function* () {
111
+ yield protractor_1.browser.driver.switchTo().activeElement().sendKeys(protractor_1.protractor.Key.chord(protractor_1.protractor.Key.ALT, protractor_1.protractor.Key.RIGHT));
112
+ yield protractor_1.browser.sleep(200);
113
+ expect(yield test_utils_1.getFocusedId()).toBe(yield $shortHandForIdx(1, 0).getAttribute("id"));
114
+ }));
115
+ it("when prev focused taxon autocomplete finishes, data isn't in FlatField format", () => __awaiter(void 0, void 0, void 0, function* () {
116
+ yield taxonAutocompleteMock.resolve(taxonAutocompleteResponse);
117
+ const formData = yield form.getChangedData();
118
+ expect(test_utils_1.filterUUIDs(formData.gatherings[0].units[0])).toEqual(unitAutocompleteResponse.payload.unit);
119
+ expect(formData.gatherings[0].units[0].identifications_0_taxon).toBe(undefined);
120
+ }));
121
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const test_utils_1 = require("./test-utils");
13
+ const protractor_1 = require("protractor");
14
+ const $blocker = test_utils_1.lajiFormLocate("gatherings.0.geometry").$(".blocker");
15
+ const $imageAddModal = protractor_1.$(".media-add-modal");
16
+ const $mobileEditorMap = protractor_1.$(".laji-form.fullscreen .laji-form-map");
17
+ describe("Mobile form (MHL.51)", () => {
18
+ describe("without formData", () => {
19
+ let form;
20
+ it("navigate to form", () => __awaiter(void 0, void 0, void 0, function* () {
21
+ form = yield test_utils_1.createForm({ id: "MHL.51" });
22
+ }));
23
+ it("is displayed", () => __awaiter(void 0, void 0, void 0, function* () {
24
+ expect(yield form.$form.isPresent()).toBe(true);
25
+ }));
26
+ it("image add modal is displayed", () => __awaiter(void 0, void 0, void 0, function* () {
27
+ expect(yield $imageAddModal.isPresent()).toBe(true);
28
+ }));
29
+ it("clicking cancel on image add modal hides it", () => __awaiter(void 0, void 0, void 0, function* () {
30
+ yield $imageAddModal.$(".cancel").click();
31
+ expect(yield $imageAddModal.isPresent()).toBe(false);
32
+ }));
33
+ });
34
+ describe("with formData with geometry", () => {
35
+ let form;
36
+ it("navigate to form", () => __awaiter(void 0, void 0, void 0, function* () {
37
+ form = yield test_utils_1.createForm({ id: "MHL.51", localFormData: "MHL.51-geometry" });
38
+ }));
39
+ it("is displayed", () => __awaiter(void 0, void 0, void 0, function* () {
40
+ expect(yield form.$form.isPresent()).toBe(true);
41
+ }));
42
+ it("image add modal is displayed", () => __awaiter(void 0, void 0, void 0, function* () {
43
+ expect(yield $imageAddModal.isPresent()).toBe(true);
44
+ }));
45
+ it("map doesn't geolocating blocker since it has geometry", () => __awaiter(void 0, void 0, void 0, function* () {
46
+ expect(yield $blocker.isPresent()).toBe(false);
47
+ }));
48
+ it("map doesn't show mobile editor", () => __awaiter(void 0, void 0, void 0, function* () {
49
+ yield protractor_1.browser.sleep(100);
50
+ expect(yield $mobileEditorMap.isPresent()).toBe(false);
51
+ }));
52
+ });
53
+ describe("with formData with image", () => {
54
+ let form;
55
+ it("navigate to form", () => __awaiter(void 0, void 0, void 0, function* () {
56
+ form = yield test_utils_1.createForm({ id: "MHL.51", localFormData: "MHL.51-image-geometry" });
57
+ }));
58
+ it("is displayed", () => __awaiter(void 0, void 0, void 0, function* () {
59
+ expect(yield form.$form.isPresent()).toBe(true);
60
+ }));
61
+ it("image add modal isn't displayed", () => __awaiter(void 0, void 0, void 0, function* () {
62
+ expect(yield $imageAddModal.isPresent()).toBe(false);
63
+ }));
64
+ it("map doesn't geolocating blocker since it has geometry", () => __awaiter(void 0, void 0, void 0, function* () {
65
+ expect(yield $blocker.isPresent()).toBe(false);
66
+ }));
67
+ it("map doesn't show mobile editor", () => __awaiter(void 0, void 0, void 0, function* () {
68
+ yield protractor_1.browser.sleep(100);
69
+ expect(yield $mobileEditorMap.isPresent()).toBe(false);
70
+ }));
71
+ });
72
+ describe("with formData without image and edit mode", () => {
73
+ let form;
74
+ it("navigate to form", () => __awaiter(void 0, void 0, void 0, function* () {
75
+ form = yield test_utils_1.createForm({ id: "MHL.51", localFormData: "MHL.51-geometry", isEdit: true });
76
+ }));
77
+ it("is displayed", () => __awaiter(void 0, void 0, void 0, function* () {
78
+ expect(yield form.$form.isPresent()).toBe(true);
79
+ }));
80
+ it("image add modal isn't displayed", () => __awaiter(void 0, void 0, void 0, function* () {
81
+ expect(yield $imageAddModal.isPresent()).toBe(false);
82
+ }));
83
+ });
84
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const test_utils_1 = require("./test-utils");
13
+ const protractor_1 = require("protractor");
14
+ const taxonAutocompleteResponse = [{
15
+ "key": "MX.46587",
16
+ "value": "kettu",
17
+ "payload": {
18
+ "matchingName": "kettu",
19
+ "informalTaxonGroups": [
20
+ {
21
+ "id": "MVL.2",
22
+ "name": "Nisäkkäät"
23
+ }
24
+ ],
25
+ "scientificName": "Vulpes vulpes",
26
+ "scientificNameAuthorship": "(Linnaeus, 1758)",
27
+ "taxonRankId": "MX.species",
28
+ "matchType": "exactMatches",
29
+ "cursiveName": true,
30
+ "finnish": true,
31
+ "species": true,
32
+ "nameType": "MX.vernacularName",
33
+ "vernacularName": "kettu"
34
+ }
35
+ }];
36
+ describe("NAFI (MHL.6)", () => {
37
+ let form;
38
+ let taxonAutosuggest;
39
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
40
+ form = yield test_utils_1.createForm({ id: "MHL.6" });
41
+ }));
42
+ it("can add unit", () => __awaiter(void 0, void 0, void 0, function* () {
43
+ yield form.$locateButton("gatherings.0.units", "add").click();
44
+ expect(yield form.$locate("gatherings.0.units.121").isDisplayed()).toBe(true);
45
+ }));
46
+ describe("selecting species name with mouse", () => {
47
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
48
+ taxonAutosuggest = form.getTaxonAutosuggestWidget("gatherings.0.units.121.identifications.0.taxon");
49
+ }));
50
+ it("selects suggestion value", () => __awaiter(void 0, void 0, void 0, function* () {
51
+ const autocompleteMock = yield form.setMockResponse("/autocomplete/taxon", false);
52
+ yield taxonAutosuggest.$input.sendKeys("kettu");
53
+ yield autocompleteMock.resolve(taxonAutocompleteResponse);
54
+ yield taxonAutosuggest.waitForSuggestionsToLoad();
55
+ yield taxonAutosuggest.$$suggestions.first().click();
56
+ expect(yield taxonAutosuggest.$input.getAttribute("value")).toBe("kettu");
57
+ yield autocompleteMock.remove();
58
+ }));
59
+ it("and is marked as suggested", () => __awaiter(void 0, void 0, void 0, function* () {
60
+ expect(yield taxonAutosuggest.isSuggested()).toBe(true);
61
+ }));
62
+ it("and closes suggestion list", () => __awaiter(void 0, void 0, void 0, function* () {
63
+ expect(yield taxonAutosuggest.$suggestionsContainer.isPresent()).toBe(false);
64
+ }));
65
+ });
66
+ describe("selecting species name with keyboard navigation", () => {
67
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
68
+ taxonAutosuggest = form.getTaxonAutosuggestWidget("gatherings.0.units.122.identifications.0.taxon");
69
+ }));
70
+ it("works", () => __awaiter(void 0, void 0, void 0, function* () {
71
+ yield form.$locateButton("gatherings.0.units", "add").click();
72
+ yield taxonAutosuggest.$input.sendKeys("kettu");
73
+ yield taxonAutosuggest.waitForSuggestionsToLoad();
74
+ yield taxonAutosuggest.$input.sendKeys(protractor_1.protractor.Key.DOWN);
75
+ yield taxonAutosuggest.$input.sendKeys(protractor_1.protractor.Key.ENTER);
76
+ expect(yield taxonAutosuggest.$input.getAttribute("value")).toBe("kettu");
77
+ }));
78
+ it("and is marked as suggested", () => __awaiter(void 0, void 0, void 0, function* () {
79
+ expect(yield taxonAutosuggest.isSuggested()).toBe(true);
80
+ }));
81
+ it("and closes suggestion list", () => __awaiter(void 0, void 0, void 0, function* () {
82
+ expect(yield taxonAutosuggest.$suggestionsContainer.isPresent()).toBe(false);
83
+ }));
84
+ });
85
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const test_utils_1 = require("./test-utils");
13
+ const protractor_1 = require("protractor");
14
+ describe("SelectWidget", () => {
15
+ let form;
16
+ const enums = {
17
+ "": "",
18
+ a: "aLabel",
19
+ b: "bLabel",
20
+ c: "cLabel",
21
+ };
22
+ const schema = {
23
+ type: "string",
24
+ enum: Object.keys(enums),
25
+ enumNames: Object.keys(enums).map(e => enums[e])
26
+ };
27
+ const initialFormData = "b";
28
+ let enumWidget;
29
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
30
+ form = yield test_utils_1.createForm({ schema, formData: initialFormData });
31
+ enumWidget = form.$getEnumWidget("");
32
+ }));
33
+ it("renders initial value", () => __awaiter(void 0, void 0, void 0, function* () {
34
+ expect(yield enumWidget.$input.getAttribute("value")).toBe(enums[initialFormData]);
35
+ }));
36
+ it("empty value is selectable", () => __awaiter(void 0, void 0, void 0, function* () {
37
+ yield enumWidget.openEnums();
38
+ yield enumWidget.$$enums.first().click();
39
+ expect(yield form.getChangedData()).toBe(null);
40
+ }));
41
+ it("nonempty value is selectable after empty was selected", () => __awaiter(void 0, void 0, void 0, function* () {
42
+ yield enumWidget.openEnums();
43
+ yield enumWidget.$$enums.last().click();
44
+ expect(yield enumWidget.$input.getAttribute("value")).toBe(enums.c);
45
+ expect(yield form.getChangedData()).toBe("c");
46
+ }));
47
+ it("selecting value and then empty value without blurring in between keeps empty value", () => __awaiter(void 0, void 0, void 0, function* () {
48
+ yield enumWidget.openEnums();
49
+ yield enumWidget.$$enums.last().click();
50
+ yield enumWidget.openEnums();
51
+ yield enumWidget.$$enums.first().click();
52
+ expect(yield form.getChangedData()).toBe(null);
53
+ }));
54
+ it("value can be selected with enter", () => __awaiter(void 0, void 0, void 0, function* () {
55
+ yield enumWidget.openEnums();
56
+ yield enumWidget.$input.sendKeys(protractor_1.protractor.Key.DOWN);
57
+ yield enumWidget.$input.sendKeys(protractor_1.protractor.Key.ENTER);
58
+ expect(yield enumWidget.$input.getAttribute("value")).toBe(enums.a);
59
+ expect(yield form.getChangedData()).toBe("a");
60
+ }));
61
+ it("value can be selected with tab", () => __awaiter(void 0, void 0, void 0, function* () {
62
+ yield enumWidget.openEnums();
63
+ yield enumWidget.$input.sendKeys(protractor_1.protractor.Key.DOWN);
64
+ yield enumWidget.$input.sendKeys(protractor_1.protractor.Key.TAB);
65
+ expect(yield enumWidget.$input.getAttribute("value")).toBe(enums.b);
66
+ expect(yield form.getChangedData()).toBe("b");
67
+ }));
68
+ });
@@ -0,0 +1 @@
1
+ export {};