@luomus/laji-form 14.3.8 → 15.1.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 (77) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/cypress/fixtures/example.json +5 -0
  3. closes suggestion list (failed).png +0 -0
  4. is marked as suggested (failed).png +0 -0
  5. package/dist/laji-form.js +1 -1
  6. package/lib/components/LajiForm.js +0 -1
  7. package/lib/components/fields/ImageArrayField.js +2 -4
  8. package/lib/components/fields/NamedPlaceSaverField.js +1 -1
  9. package/lib/components/fields/SectionArrayField.js +5 -1
  10. package/lib/components/fields/SingleActiveArrayField.js +1 -1
  11. package/lib/components/fields/UnitShorthandField.js +2 -2
  12. package/lib/components/templates/ArrayFieldTemplate.js +3 -2
  13. package/lib/components/templates/FieldTemplate.js +2 -2
  14. package/lib/utils.d.ts +6 -2
  15. package/lib/utils.js +13 -13
  16. package/llol +10 -0
  17. package/llol.pdf +10 -0
  18. package/migrate.sh +33 -0
  19. package/package.json +14 -21
  20. package/playwright-report/index.html +62 -0
  21. package/playwright.config.ts +77 -0
  22. package/q +196 -0
  23. package/rename.sh +24 -0
  24. package/test-export/test-utils.d.ts +177 -150
  25. package/test-export/test-utils.js +214 -218
  26. package/trip-report.spec.ts +594 -0
  27. package/tsconfig.test.json +1 -1
  28. package/lib/components/fields/AsArrayField.d.ts +0 -292
  29. package/lib/components/fields/AsArrayField.js +0 -39
  30. package/test-export/array-spec.d.ts +0 -1
  31. package/test-export/array-spec.js +0 -204
  32. package/test-export/bird-point-count-spec.d.ts +0 -1
  33. package/test-export/bird-point-count-spec.js +0 -62
  34. package/test-export/collection-contest-form-spec.d.ts +0 -1
  35. package/test-export/collection-contest-form-spec.js +0 -38
  36. package/test-export/dataset-form-spec.d.ts +0 -1
  37. package/test-export/dataset-form-spec.js +0 -50
  38. package/test-export/date-time-widget-spec.d.ts +0 -1
  39. package/test-export/date-time-widget-spec.js +0 -188
  40. package/test-export/geocoder-spec.d.ts +0 -1
  41. package/test-export/geocoder-spec.js +0 -135
  42. package/test-export/image-array-spec.d.ts +0 -1
  43. package/test-export/image-array-spec.js +0 -94
  44. package/test-export/inject-field-spec.d.ts +0 -1
  45. package/test-export/inject-field-spec.js +0 -148
  46. package/test-export/internal-uuids-spec.d.ts +0 -1
  47. package/test-export/internal-uuids-spec.js +0 -157
  48. package/test-export/invasive-species-eradication-np-spec.d.ts +0 -1
  49. package/test-export/invasive-species-eradication-np-spec.js +0 -18
  50. package/test-export/invasive-species-eradication-spec.d.ts +0 -1
  51. package/test-export/invasive-species-eradication-spec.js +0 -25
  52. package/test-export/line-transect-spec.d.ts +0 -1
  53. package/test-export/line-transect-spec.js +0 -121
  54. package/test-export/mobile-form-spec.d.ts +0 -1
  55. package/test-export/mobile-form-spec.js +0 -84
  56. package/test-export/nafi-spec.d.ts +0 -1
  57. package/test-export/nafi-spec.js +0 -85
  58. package/test-export/select-widget-spec.d.ts +0 -1
  59. package/test-export/select-widget-spec.js +0 -68
  60. package/test-export/single-item-array-field-spec.d.ts +0 -1
  61. package/test-export/single-item-array-field-spec.js +0 -92
  62. package/test-export/syke-butterfly-spec.d.ts +0 -1
  63. package/test-export/syke-butterfly-spec.js +0 -163
  64. package/test-export/transaction-form-spec.d.ts +0 -1
  65. package/test-export/transaction-form-spec.js +0 -63
  66. package/test-export/trip-report-autosuggest-spec.d.ts +0 -1
  67. package/test-export/trip-report-autosuggest-spec.js +0 -272
  68. package/test-export/trip-report-spec.d.ts +0 -1
  69. package/test-export/trip-report-spec.js +0 -456
  70. package/test-export/unit-list-shorthand-array-field-spec.d.ts +0 -1
  71. package/test-export/unit-list-shorthand-array-field-spec.js +0 -71
  72. package/test-export/validation-spec.d.ts +0 -1
  73. package/test-export/validation-spec.js +0 -336
  74. package/test-export/water-bird-spec.d.ts +0 -1
  75. package/test-export/water-bird-spec.js +0 -30
  76. package/test-export/wbc-spec.d.ts +0 -1
  77. package/test-export/wbc-spec.js +0 -82
@@ -1,50 +0,0 @@
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("dataset form (MHL.731)", () => {
15
- let form;
16
- let nameInEnglishInput$;
17
- let nameInFinnishInput$;
18
- const uiSchemaContext = {
19
- defaultPersonsResponsible: "Test, User"
20
- };
21
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
22
- form = yield test_utils_1.createForm({ id: "MHL.731" });
23
- yield form.setState({ uiSchemaContext });
24
- nameInEnglishInput$ = form.$locate("datasetName_en").$("input");
25
- nameInFinnishInput$ = form.$locate("datasetName_fi").$("input");
26
- }));
27
- it("sets correct name to dataset when adding a name in one language", () => __awaiter(void 0, void 0, void 0, function* () {
28
- const name = "name";
29
- yield nameInEnglishInput$.sendKeys(name + protractor_1.protractor.Key.TAB);
30
- const formData = yield form.getChangedData();
31
- expect(formData.datasetName["en"]).toBe(name);
32
- }));
33
- it("sets correct name to dataset when adding a name in two languages", () => __awaiter(void 0, void 0, void 0, function* () {
34
- const name1 = "name in English";
35
- const name2 = "name in Finnish";
36
- yield nameInEnglishInput$.clear();
37
- yield nameInEnglishInput$.sendKeys(name1);
38
- yield nameInFinnishInput$.sendKeys(name2 + protractor_1.protractor.Key.TAB);
39
- const formData = yield form.getChangedData();
40
- expect(formData.datasetName["en"]).toBe(name1);
41
- expect(formData.datasetName["fi"]).toBe(name2);
42
- }));
43
- it("sets correct name to personsResponsible field when clicking a me button", () => __awaiter(void 0, void 0, void 0, function* () {
44
- yield form.$locate("personsResponsible").$("button").click();
45
- const $input = form.$locate("personsResponsible").$("input");
46
- expect(yield $input.getAttribute("value")).toBe("Test, User");
47
- const formData = yield form.getChangedData();
48
- expect(formData.personsResponsible).toBe("Test, User");
49
- }));
50
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,188 +0,0 @@
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 moment = require("moment");
14
- describe("Date & time widgets", () => {
15
- let form;
16
- let widget;
17
- const schema = {
18
- type: "string"
19
- };
20
- const formData = null;
21
- const today = moment();
22
- const today0100 = moment(`${moment().format("YYYY-MM-DD")}T01:00`);
23
- const yesterday = moment().add(-1, "days");
24
- const ISO8601DateFormat = "YYYY-MM-DD";
25
- const ISO8601TimeFormat = "HH:mm";
26
- const ISO8601FullFormat = `${ISO8601DateFormat}T${ISO8601TimeFormat}`;
27
- const displayDateFormat = "DD.MM.YYYY";
28
- const displayTimeFormat = "HH.mm";
29
- const displayFullFormat = `${displayDateFormat}, ${displayTimeFormat}`;
30
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
31
- form = yield test_utils_1.createForm();
32
- widget = form.getDateWidget("");
33
- }));
34
- describe("DateTimeWidget", () => {
35
- const uiSchema = {
36
- "ui:widget": "DateTimeWidget",
37
- };
38
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
39
- yield form.setState({ schema, uiSchema, formData });
40
- }));
41
- it("renders date button", () => __awaiter(void 0, void 0, void 0, function* () {
42
- expect(yield test_utils_1.isDisplayed(widget.buttons.$date)).toBe(true);
43
- }));
44
- it("renders time button", () => __awaiter(void 0, void 0, void 0, function* () {
45
- expect(yield test_utils_1.isDisplayed(widget.buttons.$time)).toBe(true);
46
- }));
47
- it("selecting date from calendar adds only date", () => __awaiter(void 0, void 0, void 0, function* () {
48
- yield widget.buttons.$date.click();
49
- yield widget.calendar.waitAnimation();
50
- yield widget.calendar.$today.click();
51
- expect(yield widget.$input.getAttribute("value")).toBe(today.format(displayDateFormat));
52
- expect(yield form.getChangedData()).toBe(today.format(ISO8601DateFormat));
53
- }));
54
- it("selecting time adds time", () => __awaiter(void 0, void 0, void 0, function* () {
55
- yield widget.buttons.$time.click();
56
- yield widget.clock.waitAnimation();
57
- yield widget.clock["$01:00"].click();
58
- expect(yield widget.$input.getAttribute("value")).toBe(today0100.format(displayFullFormat));
59
- expect(yield form.getChangedData()).toBe(today0100.format(ISO8601FullFormat));
60
- }));
61
- it("time can be typed", () => __awaiter(void 0, void 0, void 0, function* () {
62
- yield test_utils_1.updateValue(widget.$input, `${today.format(displayDateFormat)}, 10`);
63
- expect(yield widget.$input.getAttribute("value")).toBe(`${today.format(displayDateFormat)}, 10.00`);
64
- expect(yield form.getChangedData()).toBe(`${today.format(ISO8601DateFormat)}T10:00`);
65
- }));
66
- it("time can be removed by clearing it from input", () => __awaiter(void 0, void 0, void 0, function* () {
67
- yield test_utils_1.updateValue(widget.$input, today.format(displayDateFormat));
68
- expect(yield widget.$input.getAttribute("value")).toBe(today.format(displayDateFormat));
69
- expect(yield form.getChangedData()).toBe(today.format(ISO8601DateFormat));
70
- }));
71
- it("whole value can be cleared", () => __awaiter(void 0, void 0, void 0, function* () {
72
- yield test_utils_1.updateValue(widget.$input, "");
73
- expect(yield widget.$input.getAttribute("value")).toBe("");
74
- expect(yield form.getChangedData()).toBe(null);
75
- }));
76
- it("date can be typed", () => __awaiter(void 0, void 0, void 0, function* () {
77
- yield test_utils_1.updateValue(widget.$input, "2.4.2012");
78
- expect(yield widget.$input.getAttribute("value")).toBe("02.04.2012");
79
- expect(yield form.getChangedData()).toBe("2012-04-02");
80
- }));
81
- describe("today & yesterday buttons", () => {
82
- it("not displayed by default", () => __awaiter(void 0, void 0, void 0, function* () {
83
- expect(yield test_utils_1.isDisplayed(widget.buttons.$today)).toBe(false);
84
- expect(yield test_utils_1.isDisplayed(widget.buttons.$yesterday)).toBe(false);
85
- }));
86
- it("displayed if showButtons true", () => __awaiter(void 0, void 0, void 0, function* () {
87
- yield form.setState({ uiSchema: Object.assign(Object.assign({}, uiSchema), { "ui:options": { showButtons: true } }) });
88
- expect(yield test_utils_1.isDisplayed(widget.buttons.$today)).toBe(true);
89
- expect(yield test_utils_1.isDisplayed(widget.buttons.$yesterday)).toBe(true);
90
- }));
91
- it("yesterday works", () => __awaiter(void 0, void 0, void 0, function* () {
92
- yield widget.buttons.$yesterday.click();
93
- expect(yield widget.$input.getAttribute("value")).toBe(yesterday.format(displayDateFormat));
94
- expect(yield form.getChangedData()).toBe(yesterday.format(ISO8601DateFormat));
95
- }));
96
- it("today works", () => __awaiter(void 0, void 0, void 0, function* () {
97
- yield widget.buttons.$today.click();
98
- expect(yield widget.$input.getAttribute("value")).toBe(today.format(displayDateFormat));
99
- expect(yield form.getChangedData()).toBe(today.format(ISO8601DateFormat));
100
- }));
101
- });
102
- describe("typing only year when option allowOnlyYear", () => {
103
- const year = "" + moment().year();
104
- it("is off should enter full date", () => __awaiter(void 0, void 0, void 0, function* () {
105
- yield test_utils_1.updateValue(widget.$input, year);
106
- expect(yield widget.$input.getAttribute("value")).toBe(`01.01.${year}`);
107
- expect(yield form.getChangedData()).toBe(today.format(`${year}-01-01`));
108
- }));
109
- it("is on works", () => __awaiter(void 0, void 0, void 0, function* () {
110
- yield form.setState({ uiSchema: Object.assign(Object.assign({}, uiSchema), { "ui:options": { allowOnlyYear: true } }) });
111
- yield test_utils_1.updateValue(widget.$input, year);
112
- expect(yield widget.$input.getAttribute("value")).toBe(year);
113
- expect(yield form.getChangedData()).toBe(year);
114
- }));
115
- });
116
- describe("same button", () => {
117
- let startWidget;
118
- let endWidget;
119
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
120
- yield form.setState({
121
- schema: { type: "object", properties: { start: { type: "string" }, end: { type: "string" } } },
122
- uiSchema: {
123
- start: Object.assign(Object.assign({}, uiSchema), { "ui:options": { showButtons: true } }),
124
- end: Object.assign(Object.assign({}, uiSchema), { "ui:options": { showButtons: { same: { path: "/start" } } } })
125
- },
126
- formData: {}
127
- });
128
- startWidget = form.getDateWidget("start");
129
- endWidget = form.getDateWidget("end");
130
- }));
131
- it("not displayed by if showButtons true", () => __awaiter(void 0, void 0, void 0, function* () {
132
- expect(yield test_utils_1.isDisplayed(startWidget.buttons.$same)).toBe(false);
133
- }));
134
- it("displayed if showButtons has {same: true}", () => __awaiter(void 0, void 0, void 0, function* () {
135
- expect(yield test_utils_1.isDisplayed(endWidget.buttons.$same)).toBe(true);
136
- }));
137
- it("click works", () => __awaiter(void 0, void 0, void 0, function* () {
138
- yield test_utils_1.updateValue(startWidget.$input, "2.4.2012");
139
- yield endWidget.buttons.$same.click();
140
- expect(yield endWidget.$input.getAttribute("value")).toBe("02.04.2012");
141
- expect((yield form.getChangedData()).end).toBe("2012-04-02");
142
- }));
143
- });
144
- });
145
- describe("DateWidget", () => {
146
- const uiSchema = {
147
- "ui:widget": "DateWidget",
148
- };
149
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
150
- yield form.setState({ schema, uiSchema, formData });
151
- }));
152
- it("renders date button", () => __awaiter(void 0, void 0, void 0, function* () {
153
- expect(yield test_utils_1.isDisplayed(widget.buttons.$date)).toBe(true);
154
- }));
155
- it("doesn't render time button", () => __awaiter(void 0, void 0, void 0, function* () {
156
- expect(yield test_utils_1.isDisplayed(widget.buttons.$time)).not.toBe(true);
157
- }));
158
- it("clears time if typed", () => __awaiter(void 0, void 0, void 0, function* () {
159
- yield test_utils_1.updateValue(widget.$input, `${today.format(displayDateFormat)}, 10.00`);
160
- expect(yield widget.$input.getAttribute("value")).toBe(today.format(displayDateFormat));
161
- expect(yield form.getChangedData()).toBe(today.format(ISO8601DateFormat));
162
- }));
163
- });
164
- describe("TimeWidget", () => {
165
- const uiSchema = {
166
- "ui:widget": "TimeWidget",
167
- };
168
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
169
- yield test_utils_1.updateValue(widget.$input, "");
170
- yield form.setState({ schema, uiSchema });
171
- }));
172
- it("renders time button", () => __awaiter(void 0, void 0, void 0, function* () {
173
- expect(yield test_utils_1.isDisplayed(widget.buttons.$time)).toBe(true);
174
- }));
175
- it("doesn't render date button", () => __awaiter(void 0, void 0, void 0, function* () {
176
- expect(yield test_utils_1.isDisplayed(widget.buttons.$date)).not.toBe(true);
177
- }));
178
- it("time can be typed", () => __awaiter(void 0, void 0, void 0, function* () {
179
- yield test_utils_1.updateValue(widget.$input, "10.00");
180
- expect(yield widget.$input.getAttribute("value")).toBe("10.00");
181
- expect(yield form.getChangedData()).toBe("10:00");
182
- }));
183
- it("showTimeList hides time button", () => __awaiter(void 0, void 0, void 0, function* () {
184
- yield form.setState({ uiSchema: Object.assign(Object.assign({}, uiSchema), { "ui:options": { showTimeList: false } }) });
185
- expect(yield test_utils_1.isDisplayed(widget.buttons.$time)).toBe(false);
186
- }));
187
- });
188
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,135 +0,0 @@
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("Geocoder", () => {
15
- let form;
16
- const schema = {
17
- type: "object",
18
- properties: {
19
- country: {
20
- type: "string"
21
- },
22
- municipality: {
23
- type: "string"
24
- },
25
- biologicalProvince: {
26
- type: "string"
27
- },
28
- geometry: {
29
- type: "object",
30
- properties: {
31
- coordinates: {
32
- type: "array",
33
- items: {
34
- type: "number"
35
- }
36
- },
37
- type: {
38
- type: "string"
39
- }
40
- }
41
- }
42
- }
43
- };
44
- const uiSchema = {
45
- "ui:field": "GeocoderField"
46
- };
47
- const formData = { geometry: { type: "Point", coordinates: [25, 60] } };
48
- const response = {
49
- "status": "OK",
50
- "results": [
51
- {
52
- "address_components": [
53
- {
54
- "long_name": "Nylandia",
55
- "short_name": "N",
56
- "types": [
57
- "biogeographicalProvince"
58
- ]
59
- }
60
- ],
61
- "types": [
62
- "biogeographicalProvince"
63
- ]
64
- },
65
- {
66
- "address_components": [
67
- {
68
- "short_name": "Helsinki",
69
- "types": [
70
- "municipality"
71
- ]
72
- }
73
- ],
74
- "formatted_address": "Helsinki",
75
- "types": [
76
- "municipality"
77
- ]
78
- }
79
- ]
80
- };
81
- beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
82
- form = yield test_utils_1.createForm();
83
- }));
84
- it("parses location in Finland correctly", () => __awaiter(void 0, void 0, void 0, function* () {
85
- const { resolve, remove } = yield form.setMockResponse("/coordinates/location", false);
86
- yield form.setState({ schema, uiSchema, formData });
87
- expect(yield form.$locate("country").$("input").getAttribute("value")).toBe("");
88
- expect(yield form.$locate("municipality").$("input").getAttribute("value")).toBe("");
89
- expect(yield form.$locate("biologicalProvince").$("input").getAttribute("value")).toBe("");
90
- yield resolve(response);
91
- yield remove();
92
- expect(yield form.$locate("country").$("input").getAttribute("value")).toBe("Suomi");
93
- expect(yield form.$locate("municipality").$("input").getAttribute("value")).toBe("Helsinki");
94
- expect(yield form.$locate("biologicalProvince").$("input").getAttribute("value")).toBe("Nylandia");
95
- }));
96
- const $runningJobs = protractor_1.$(".running-jobs");
97
- it("blocks submit until done", () => __awaiter(void 0, void 0, void 0, function* () {
98
- const { resolve, remove } = yield form.setMockResponse("/coordinates/location", false);
99
- yield form.setState({ schema, uiSchema, formData });
100
- yield form.e("submit()");
101
- expect(yield $runningJobs.isDisplayed()).toBe(true);
102
- yield resolve(response);
103
- yield remove();
104
- expect(yield $runningJobs.isPresent()).toBe(false);
105
- expect(yield form.$locate("country").$("input").getAttribute("value")).toBe("Suomi");
106
- expect(yield form.getSubmittedData()).not.toBe(null);
107
- }));
108
- describe("rejecting", () => {
109
- it("blocks submit", () => __awaiter(void 0, void 0, void 0, function* () {
110
- const { reject, remove } = yield form.setMockResponse("/coordinates/location", false);
111
- yield form.setState({ schema, uiSchema, formData });
112
- yield form.setState({ formData: {} });
113
- yield form.setState({ formData });
114
- yield form.e("submit()");
115
- expect(yield form.getSubmittedData()).toBe(null);
116
- expect(yield $runningJobs.isDisplayed()).toBe(true);
117
- yield reject();
118
- yield remove();
119
- expect(yield protractor_1.$$(".laji-form-failed-jobs-list .list-group-item").count()).toBe(1);
120
- expect(yield $runningJobs.isPresent()).toBe(false);
121
- expect(yield form.getSubmittedData()).not.toBe(null);
122
- }));
123
- it("and then locating again removes old bg job", () => __awaiter(void 0, void 0, void 0, function* () {
124
- const { resolve, remove } = yield form.setMockResponse("/coordinates/location", false);
125
- yield form.setState({ schema, uiSchema, formData });
126
- yield form.e("submit()");
127
- expect(yield protractor_1.$$(".laji-form-failed-jobs-list .list-group-item").count()).toBe(0);
128
- expect(yield $runningJobs.isDisplayed()).toBe(true);
129
- yield resolve(response);
130
- yield remove();
131
- expect(yield protractor_1.$$(".laji-form-failed-jobs-list .list-group-item").count()).toBe(0);
132
- expect(yield $runningJobs.isPresent()).toBe(false);
133
- }));
134
- });
135
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,94 +0,0 @@
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 properties = require("../properties.json");
15
- describe("Image array", () => {
16
- let form;
17
- let imgArrayField;
18
- const schema = {
19
- type: "array",
20
- items: {
21
- type: "string"
22
- }
23
- };
24
- const uiSchema = {
25
- "ui:field": "ImageArrayField",
26
- "ui:options": {
27
- "deleteConfirmPlacement": "bottom"
28
- }
29
- };
30
- const uiSchemaContext = {
31
- creator: properties.userId
32
- };
33
- describe("", () => {
34
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
35
- form = yield test_utils_1.createForm();
36
- yield form.setState({ schema, uiSchema, uiSchemaContext });
37
- imgArrayField = form.getImageArrayField("");
38
- }));
39
- it("renders correctly", () => __awaiter(void 0, void 0, void 0, function* () {
40
- expect(yield imgArrayField.$container.isDisplayed()).toBe(true);
41
- expect(yield imgArrayField.$dropzone.isDisplayed()).toBe(true);
42
- }));
43
- it("adds image", () => __awaiter(void 0, void 0, void 0, function* () {
44
- const { resolve, remove } = yield form.mockImageUpload("");
45
- yield resolve();
46
- expect(yield imgArrayField.$$imgs.count()).toBe(1);
47
- yield remove();
48
- }));
49
- it("open metadata modal on click", () => __awaiter(void 0, void 0, void 0, function* () {
50
- const { resolve, remove } = yield form.setMockResponse("/images/mock", false);
51
- yield imgArrayField.$$imgInteractives.first().click();
52
- yield resolve(test_utils_1.mockImageMetadata);
53
- yield protractor_1.browser.wait(protractor_1.protractor.ExpectedConditions.visibilityOf(imgArrayField.$modal), 5000, "metadata modal didn't show up");
54
- expect(yield imgArrayField.$modal.isDisplayed()).toBe(true);
55
- yield remove();
56
- yield imgArrayField.$modalClose.click();
57
- }));
58
- it("deletes image", () => __awaiter(void 0, void 0, void 0, function* () {
59
- yield protractor_1.browser.sleep(1000);
60
- expect(yield imgArrayField.$$imgs.count()).toBe(1);
61
- expect(yield imgArrayField.$$imgRemoves.first().isDisplayed()).toBe(true);
62
- const { resolve, remove } = yield form.setMockResponse("/images/mock", false);
63
- yield imgArrayField.$$imgRemoves.first().click();
64
- yield imgArrayField.$imgRemoveConfirmButton("0").click();
65
- expect(yield imgArrayField.$$imgs.count()).toBe(0);
66
- yield resolve();
67
- yield remove();
68
- }));
69
- });
70
- it("Image saves even if the image component unmounts", () => __awaiter(void 0, void 0, void 0, function* () {
71
- const _schema = {
72
- type: "array",
73
- minItems: 1,
74
- items: {
75
- type: "object",
76
- properties: {
77
- images: schema
78
- }
79
- }
80
- };
81
- const _uiSchema = {
82
- items: {
83
- images: uiSchema
84
- }
85
- };
86
- yield form.setState({ schema: _schema, uiSchema: _uiSchema, formData: [{}] });
87
- const { resolve, remove } = yield form.mockImageUpload("0");
88
- yield form.setState({ uiSchema: Object.assign(Object.assign({}, _uiSchema), { "ui:field": "HiddenField" }) });
89
- yield resolve();
90
- yield form.setState({ uiSchema: _uiSchema });
91
- expect(yield protractor_1.$$(".media-container").count()).toBe(1);
92
- yield remove();
93
- }));
94
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,148 +0,0 @@
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 merge = require("deepmerge");
15
- describe("InjectField", () => {
16
- const schema = {
17
- type: "object",
18
- properties: {
19
- a: {
20
- type: "object",
21
- properties: {
22
- aa: {
23
- type: "object",
24
- properties: {
25
- aaa: { type: "string" }
26
- }
27
- },
28
- ab: { type: "string" }
29
- }
30
- },
31
- b: {
32
- type: "object",
33
- properties: {
34
- ba: { type: "string" }
35
- }
36
- }
37
- }
38
- };
39
- const uiSchemaBase = {
40
- a: {
41
- "classNames": "foobar",
42
- aa: {
43
- aaa: {
44
- "classNames": "foo"
45
- }
46
- }
47
- },
48
- b: {
49
- ba: {
50
- "classNames": "bar"
51
- }
52
- }
53
- };
54
- const test = (injections) => {
55
- let uiSchema = uiSchemaBase;
56
- for (let injection of injections) {
57
- const [target, field] = injection;
58
- uiSchema = merge(uiSchema, {
59
- "ui:field": "InjectField",
60
- "ui:options": {
61
- injections: [
62
- {
63
- fields: [field],
64
- target
65
- }
66
- ]
67
- }
68
- });
69
- }
70
- let form;
71
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
72
- form = yield test_utils_1.createForm({ schema, uiSchema });
73
- }));
74
- it("displays all fields and their ids are kept intact", () => __awaiter(void 0, void 0, void 0, function* () {
75
- for (let locator of ["a", "a.aa", "a.ab", "a.ab", "b", "b.ba"]) {
76
- expect(yield form.$locate(locator).isPresent()).toBe(true, `${locator} not displayed`);
77
- }
78
- }));
79
- it("displays injected field as child of target", () => __awaiter(void 0, void 0, void 0, function* () {
80
- for (let injection of injections) {
81
- const [target, field] = injection;
82
- expect(yield protractor_1.$(test_utils_1.lajiFormLocator(test_utils_1.maybeJSONPointerToLocator(target)))
83
- .$(test_utils_1.lajiFormLocator(test_utils_1.maybeJSONPointerToLocator(field)))
84
- .isDisplayed()).toBe(true);
85
- }
86
- }));
87
- it("uiSchema is kept for injected fields and target", () => __awaiter(void 0, void 0, void 0, function* () {
88
- expect(yield form.$locate("a").getAttribute("className")).toMatch(uiSchemaBase.a.classNames);
89
- expect(yield form.$locate("a.aa.aaa").getAttribute("className")).toMatch(uiSchemaBase.a.aa.aaa.classNames);
90
- expect(yield form.$locate("b.ba").getAttribute("className")).toMatch(uiSchemaBase.b.ba.classNames);
91
- }));
92
- it("modifying formData works and doesn't spill properties", () => __awaiter(void 0, void 0, void 0, function* () {
93
- yield test_utils_1.updateValue(form.$getInputWidget("a.aa.aaa"), "foo");
94
- yield test_utils_1.updateValue(form.$getInputWidget("a.ab"), "foofoo");
95
- yield test_utils_1.updateValue(form.$getInputWidget("b.ba"), "bar");
96
- expect(yield form.$getInputWidget("a.aa.aaa").getAttribute("value")).toBe("foo");
97
- expect(yield form.$getInputWidget("a.ab").getAttribute("value")).toBe("foofoo");
98
- expect(yield form.$getInputWidget("b.ba").getAttribute("value")).toBe("bar");
99
- expect(yield form.getChangedData()).toEqual({
100
- a: {
101
- aa: {
102
- aaa: "foo"
103
- },
104
- ab: "foofoo"
105
- },
106
- b: {
107
- ba: "bar"
108
- }
109
- });
110
- }));
111
- it("errors are rendered", () => __awaiter(void 0, void 0, void 0, function* () {
112
- yield form.setState({ formData: {
113
- a: {
114
- aa: {
115
- aaa: 1
116
- },
117
- ab: 1
118
- },
119
- b: {
120
- ba: 1
121
- }
122
- }
123
- });
124
- yield form.submit();
125
- expect(yield form.$$getFieldErrors("a.aa.aaa").count()).toBe(1);
126
- expect(yield form.$$getFieldErrors("a.ab").count()).toBe(1);
127
- expect(yield form.$$getFieldErrors("b.ba").count()).toBe(1);
128
- }));
129
- };
130
- describe("simple field, simple target", () => {
131
- test([["b", "a"]]);
132
- });
133
- describe("simple field, simple JSON pointer target", () => {
134
- test([["/b", "a"]]);
135
- });
136
- describe("simple target, JSON pointer field", () => {
137
- test([["b", "/a/aa/aaa"]]);
138
- });
139
- describe("JSON pointer target, JSON Pointer field", () => {
140
- test([["/a/aa", "/b/ba"]]);
141
- });
142
- describe("second injection depending on first injection", () => {
143
- test([
144
- ["/a/aa", "/a/ab"],
145
- ["/b", "/a/aa"]
146
- ]);
147
- });
148
- });
@@ -1 +0,0 @@
1
- export {};