@dmptool/types 1.1.3 → 1.2.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 (76) hide show
  1. package/README.md +119 -47
  2. package/dist/answers/__tests__/answers.spec.js +27 -28
  3. package/dist/answers/__tests__/usage.spec.d.ts +1 -0
  4. package/dist/answers/__tests__/usage.spec.js +178 -0
  5. package/dist/answers/answer.d.ts +12 -15
  6. package/dist/answers/answer.js +3 -4
  7. package/dist/answers/dateAnswers.d.ts +30 -30
  8. package/dist/answers/dateAnswers.js +6 -5
  9. package/dist/answers/graphQLAnswers.d.ts +41 -26
  10. package/dist/answers/graphQLAnswers.js +7 -4
  11. package/dist/answers/index.d.ts +887 -1088
  12. package/dist/answers/index.js +2 -2
  13. package/dist/answers/numberAnswers.d.ts +41 -41
  14. package/dist/answers/numberAnswers.js +8 -8
  15. package/dist/answers/optionBasedAnswers.d.ts +55 -55
  16. package/dist/answers/optionBasedAnswers.js +10 -10
  17. package/dist/answers/tableAnswers.d.ts +880 -1778
  18. package/dist/answers/tableAnswers.js +12 -8
  19. package/dist/answers/textAnswers.d.ts +44 -44
  20. package/dist/answers/textAnswers.js +8 -8
  21. package/dist/questions/__tests__/graphQLQuestions.spec.js +1 -1
  22. package/dist/questions/__tests__/usage.spec.d.ts +8 -0
  23. package/dist/questions/__tests__/usage.spec.js +312 -0
  24. package/dist/questions/dateQuestions.d.ts +81 -82
  25. package/dist/questions/dateQuestions.js +12 -16
  26. package/dist/questions/graphQLQuestions.d.ts +142 -142
  27. package/dist/questions/graphQLQuestions.js +35 -30
  28. package/dist/questions/index.d.ts +1492 -1672
  29. package/dist/questions/index.js +2 -2
  30. package/dist/questions/numberQuestions.d.ts +97 -98
  31. package/dist/questions/numberQuestions.js +7 -19
  32. package/dist/questions/optionBasedQuestions.d.ts +163 -166
  33. package/dist/questions/optionBasedQuestions.js +20 -36
  34. package/dist/questions/question.d.ts +24 -48
  35. package/dist/questions/question.js +78 -17
  36. package/dist/questions/tableQuestions.d.ts +2215 -2227
  37. package/dist/questions/tableQuestions.js +6 -11
  38. package/dist/questions/textQuestions.d.ts +104 -104
  39. package/dist/questions/textQuestions.js +6 -23
  40. package/dist/schemas/affiliationSearchAnswer.schema.json +20 -12
  41. package/dist/schemas/affiliationSearchQuestion.schema.json +30 -36
  42. package/dist/schemas/anyAnswer.schema.json +235 -233
  43. package/dist/schemas/anyQuestion.schema.json +292 -493
  44. package/dist/schemas/anyTableColumnAnswer.schema.json +104 -106
  45. package/dist/schemas/anyTableColumnQuestion.schema.json +164 -325
  46. package/dist/schemas/booleanAnswer.schema.json +8 -11
  47. package/dist/schemas/booleanQuestion.schema.json +7 -10
  48. package/dist/schemas/checkboxesAnswer.schema.json +13 -14
  49. package/dist/schemas/checkboxesQuestion.schema.json +12 -13
  50. package/dist/schemas/currencyAnswer.schema.json +8 -11
  51. package/dist/schemas/currencyQuestion.schema.json +7 -10
  52. package/dist/schemas/dateAnswer.schema.json +8 -11
  53. package/dist/schemas/dateQuestion.schema.json +7 -10
  54. package/dist/schemas/dateRangeAnswer.schema.json +16 -21
  55. package/dist/schemas/dateRangeQuestion.schema.json +38 -20
  56. package/dist/schemas/emailAnswer.schema.json +8 -11
  57. package/dist/schemas/emailQuestion.schema.json +7 -10
  58. package/dist/schemas/multiselectBoxAnswer.schema.json +13 -14
  59. package/dist/schemas/multiselectBoxQuestion.schema.json +14 -14
  60. package/dist/schemas/numberAnswer.schema.json +8 -11
  61. package/dist/schemas/numberQuestion.schema.json +7 -10
  62. package/dist/schemas/numberRangeAnswer.schema.json +17 -22
  63. package/dist/schemas/numberRangeQuestion.schema.json +18 -19
  64. package/dist/schemas/radioButtonsAnswer.schema.json +8 -11
  65. package/dist/schemas/radioButtonsQuestion.schema.json +12 -13
  66. package/dist/schemas/selectBoxAnswer.schema.json +8 -11
  67. package/dist/schemas/selectBoxQuestion.schema.json +18 -15
  68. package/dist/schemas/tableAnswer.schema.json +343 -338
  69. package/dist/schemas/tableQuestion.schema.json +178 -352
  70. package/dist/schemas/textAnswer.schema.json +8 -11
  71. package/dist/schemas/textAreaAnswer.schema.json +8 -11
  72. package/dist/schemas/textAreaQuestion.schema.json +7 -10
  73. package/dist/schemas/textQuestion.schema.json +7 -10
  74. package/dist/schemas/urlAnswer.schema.json +8 -11
  75. package/dist/schemas/urlQuestion.schema.json +7 -10
  76. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TableAnswerSchema = exports.TableRowAnswerSchema = exports.TableColumnAnswerSchema = exports.AnyTableColumnAnswerSchema = void 0;
3
+ exports.TableAnswerSchema = exports.TableRowAnswerSchema = exports.AnyTableColumnAnswerSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const answer_1 = require("./answer");
6
6
  const optionBasedAnswers_1 = require("./optionBasedAnswers");
@@ -8,6 +8,7 @@ const dateAnswers_1 = require("./dateAnswers");
8
8
  const graphQLAnswers_1 = require("./graphQLAnswers");
9
9
  const numberAnswers_1 = require("./numberAnswers");
10
10
  const textAnswers_1 = require("./textAnswers");
11
+ const questions_1 = require("../questions");
11
12
  // Answers to Table Column Question Types (note that TableAnswer is not included here because we don't allow nested tables)
12
13
  exports.AnyTableColumnAnswerSchema = zod_1.z.discriminatedUnion('type', [
13
14
  graphQLAnswers_1.AffiliationSearchAnswerSchema,
@@ -26,15 +27,18 @@ exports.AnyTableColumnAnswerSchema = zod_1.z.discriminatedUnion('type', [
26
27
  textAnswers_1.TextAreaAnswerSchema,
27
28
  textAnswers_1.URLAnswerSchema
28
29
  ]);
29
- exports.TableColumnAnswerSchema = zod_1.z.object({
30
- heading: zod_1.z.string(), // The heading of the column
31
- content: exports.AnyTableColumnAnswerSchema // The answer to the column (based on the type)
32
- });
33
30
  exports.TableRowAnswerSchema = zod_1.z.object({
34
- columns: zod_1.z.array(exports.TableColumnAnswerSchema) // The answers for each column in the row
31
+ columns: zod_1.z.array(exports.AnyTableColumnAnswerSchema) // The answers for each column in the row
35
32
  });
36
33
  // Answers to Table Question Types
37
34
  exports.TableAnswerSchema = answer_1.AnswerSchema.merge(zod_1.z.object({
38
- type: zod_1.z.literal('table'), // The type of answer
39
- answer: zod_1.z.array(exports.TableRowAnswerSchema) // The answers to the question (array of rows containing an array of columns)
35
+ type: zod_1.z.literal('table'),
36
+ columnHeadings: zod_1.z.array(zod_1.z.string()).default(['Column A']),
37
+ answer: zod_1.z.array(exports.TableRowAnswerSchema).default([{
38
+ columns: [{
39
+ type: 'textArea',
40
+ answer: '',
41
+ meta: { schemaVersion: questions_1.CURRENT_SCHEMA_VERSION }
42
+ }]
43
+ }])
40
44
  }));
@@ -1,99 +1,99 @@
1
1
  import { z } from 'zod';
2
2
  export declare const EmailAnswerSchema: z.ZodObject<{
3
- meta: z.ZodObject<{
4
- schemaVersion: z.ZodLiteral<"1.0">;
3
+ meta: z.ZodDefault<z.ZodObject<{
4
+ schemaVersion: z.ZodDefault<z.ZodString>;
5
5
  }, "strip", z.ZodTypeAny, {
6
- schemaVersion: "1.0";
6
+ schemaVersion: string;
7
7
  }, {
8
- schemaVersion: "1.0";
9
- }>;
8
+ schemaVersion?: string | undefined;
9
+ }>>;
10
10
  } & {
11
11
  type: z.ZodLiteral<"email">;
12
- answer: z.ZodString;
12
+ answer: z.ZodDefault<z.ZodString>;
13
13
  }, "strip", z.ZodTypeAny, {
14
14
  type: "email";
15
15
  meta: {
16
- schemaVersion: "1.0";
16
+ schemaVersion: string;
17
17
  };
18
18
  answer: string;
19
19
  }, {
20
20
  type: "email";
21
- meta: {
22
- schemaVersion: "1.0";
23
- };
24
- answer: string;
21
+ meta?: {
22
+ schemaVersion?: string | undefined;
23
+ } | undefined;
24
+ answer?: string | undefined;
25
25
  }>;
26
26
  export declare const TextAnswerSchema: z.ZodObject<{
27
- meta: z.ZodObject<{
28
- schemaVersion: z.ZodLiteral<"1.0">;
27
+ meta: z.ZodDefault<z.ZodObject<{
28
+ schemaVersion: z.ZodDefault<z.ZodString>;
29
29
  }, "strip", z.ZodTypeAny, {
30
- schemaVersion: "1.0";
30
+ schemaVersion: string;
31
31
  }, {
32
- schemaVersion: "1.0";
33
- }>;
32
+ schemaVersion?: string | undefined;
33
+ }>>;
34
34
  } & {
35
35
  type: z.ZodLiteral<"text">;
36
- answer: z.ZodString;
36
+ answer: z.ZodDefault<z.ZodString>;
37
37
  }, "strip", z.ZodTypeAny, {
38
38
  type: "text";
39
39
  meta: {
40
- schemaVersion: "1.0";
40
+ schemaVersion: string;
41
41
  };
42
42
  answer: string;
43
43
  }, {
44
44
  type: "text";
45
- meta: {
46
- schemaVersion: "1.0";
47
- };
48
- answer: string;
45
+ meta?: {
46
+ schemaVersion?: string | undefined;
47
+ } | undefined;
48
+ answer?: string | undefined;
49
49
  }>;
50
50
  export declare const TextAreaAnswerSchema: z.ZodObject<{
51
- meta: z.ZodObject<{
52
- schemaVersion: z.ZodLiteral<"1.0">;
51
+ meta: z.ZodDefault<z.ZodObject<{
52
+ schemaVersion: z.ZodDefault<z.ZodString>;
53
53
  }, "strip", z.ZodTypeAny, {
54
- schemaVersion: "1.0";
54
+ schemaVersion: string;
55
55
  }, {
56
- schemaVersion: "1.0";
57
- }>;
56
+ schemaVersion?: string | undefined;
57
+ }>>;
58
58
  } & {
59
59
  type: z.ZodLiteral<"textArea">;
60
- answer: z.ZodString;
60
+ answer: z.ZodDefault<z.ZodString>;
61
61
  }, "strip", z.ZodTypeAny, {
62
62
  type: "textArea";
63
63
  meta: {
64
- schemaVersion: "1.0";
64
+ schemaVersion: string;
65
65
  };
66
66
  answer: string;
67
67
  }, {
68
68
  type: "textArea";
69
- meta: {
70
- schemaVersion: "1.0";
71
- };
72
- answer: string;
69
+ meta?: {
70
+ schemaVersion?: string | undefined;
71
+ } | undefined;
72
+ answer?: string | undefined;
73
73
  }>;
74
74
  export declare const URLAnswerSchema: z.ZodObject<{
75
- meta: z.ZodObject<{
76
- schemaVersion: z.ZodLiteral<"1.0">;
75
+ meta: z.ZodDefault<z.ZodObject<{
76
+ schemaVersion: z.ZodDefault<z.ZodString>;
77
77
  }, "strip", z.ZodTypeAny, {
78
- schemaVersion: "1.0";
78
+ schemaVersion: string;
79
79
  }, {
80
- schemaVersion: "1.0";
81
- }>;
80
+ schemaVersion?: string | undefined;
81
+ }>>;
82
82
  } & {
83
83
  type: z.ZodLiteral<"url">;
84
- answer: z.ZodString;
84
+ answer: z.ZodDefault<z.ZodString>;
85
85
  }, "strip", z.ZodTypeAny, {
86
86
  type: "url";
87
87
  meta: {
88
- schemaVersion: "1.0";
88
+ schemaVersion: string;
89
89
  };
90
90
  answer: string;
91
91
  }, {
92
92
  type: "url";
93
- meta: {
94
- schemaVersion: "1.0";
95
- };
96
- answer: string;
93
+ meta?: {
94
+ schemaVersion?: string | undefined;
95
+ } | undefined;
96
+ answer?: string | undefined;
97
97
  }>;
98
98
  export type EmailAnswerType = z.infer<typeof EmailAnswerSchema>;
99
99
  export type TextAnswerType = z.infer<typeof TextAnswerSchema>;
@@ -5,18 +5,18 @@ const zod_1 = require("zod");
5
5
  const answer_1 = require("./answer");
6
6
  // Answers to Text Based Question Types
7
7
  exports.EmailAnswerSchema = answer_1.AnswerSchema.merge(zod_1.z.object({
8
- type: zod_1.z.literal('email'), // The type of question
9
- answer: zod_1.z.string() // The answer to the question (string)
8
+ type: zod_1.z.literal('email'),
9
+ answer: zod_1.z.string().default('')
10
10
  }));
11
11
  exports.TextAnswerSchema = answer_1.AnswerSchema.merge(zod_1.z.object({
12
- type: zod_1.z.literal('text'), // The type of answer
13
- answer: zod_1.z.string() // The answer to the question (string)
12
+ type: zod_1.z.literal('text'),
13
+ answer: zod_1.z.string().default('')
14
14
  }));
15
15
  exports.TextAreaAnswerSchema = answer_1.AnswerSchema.merge(zod_1.z.object({
16
- type: zod_1.z.literal('textArea'), // The type of answer
17
- answer: zod_1.z.string() // The answer to the question (string)
16
+ type: zod_1.z.literal('textArea'),
17
+ answer: zod_1.z.string().default('')
18
18
  }));
19
19
  exports.URLAnswerSchema = answer_1.AnswerSchema.merge(zod_1.z.object({
20
- type: zod_1.z.literal('url'), // The type of answer
21
- answer: zod_1.z.string() // The answer to the question (string)
20
+ type: zod_1.z.literal('url'),
21
+ answer: zod_1.z.string().default('')
22
22
  }));
@@ -60,7 +60,7 @@ const graphQLQuestions_1 = require("../graphQLQuestions");
60
60
  help: "Search for a institution",
61
61
  },
62
62
  graphQL: {
63
- query: "query Affiliations($name: String!){affiliations(name: $name) { totalCount nextCursor items {id displayName uri}}}",
63
+ query: graphQLQuestions_1.affiliationQuery,
64
64
  displayFields: [
65
65
  { propertyName: "displayName", label: "Name" },
66
66
  ],
@@ -0,0 +1,8 @@
1
+ import { AnyQuestionType } from "../index";
2
+ export interface QuestionFormatInterface {
3
+ type?: string;
4
+ title?: string;
5
+ usageDescription?: string;
6
+ defaultJSON?: AnyQuestionType;
7
+ schemaVersion?: string;
8
+ }
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const question_1 = require("../question");
4
+ const index_1 = require("../index");
5
+ // Parse the Zod schema with no input to generate the default JSON schemas
6
+ function questionFormatInfo(name) {
7
+ if (name in index_1.QuestionSchemaMap) {
8
+ const usage = question_1.QuestionFormatsUsage[name];
9
+ const schema = index_1.QuestionSchemaMap[name];
10
+ const parsedSchema = schema.parse({ type: name });
11
+ return {
12
+ type: name,
13
+ title: usage === null || usage === void 0 ? void 0 : usage.title,
14
+ usageDescription: usage === null || usage === void 0 ? void 0 : usage.usageDescription,
15
+ defaultJSON: parsedSchema
16
+ };
17
+ }
18
+ else {
19
+ return null;
20
+ }
21
+ }
22
+ describe('Get question format information', () => {
23
+ it('for affiliationSearch question format', () => {
24
+ const format = questionFormatInfo('affiliationSearch');
25
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('affiliationSearch');
26
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Affiliation Search');
27
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
28
+ const expectedJSON = {
29
+ type: 'affiliationSearch',
30
+ attributes: {},
31
+ meta: { schemaVersion: '1.0' },
32
+ graphQL: {
33
+ displayFields: [{
34
+ label: "Institution",
35
+ propertyName: "displayName",
36
+ }],
37
+ query: index_1.affiliationQuery,
38
+ responseField: 'affiliations.items',
39
+ variables: [{
40
+ label: "Search for your institution",
41
+ minLength: 3,
42
+ name: "name",
43
+ type: "string",
44
+ }],
45
+ answerField: 'uri'
46
+ }
47
+ };
48
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
49
+ });
50
+ it('for boolean question format', () => {
51
+ const format = questionFormatInfo('boolean');
52
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('boolean');
53
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Yes/No Field');
54
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
55
+ const expectedJSON = {
56
+ type: 'boolean',
57
+ attributes: { checked: false },
58
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
59
+ };
60
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
61
+ });
62
+ it('for checkBoxes question format', () => {
63
+ const format = questionFormatInfo('checkBoxes');
64
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('checkBoxes');
65
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Check Boxes');
66
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
67
+ const expectedJSON = {
68
+ type: 'checkBoxes',
69
+ attributes: {},
70
+ options: [{
71
+ label: 'Option A',
72
+ value: 'a',
73
+ checked: false
74
+ }],
75
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
76
+ };
77
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
78
+ });
79
+ it('for currency question format', () => {
80
+ const format = questionFormatInfo('currency');
81
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('currency');
82
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Currency Field');
83
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
84
+ const expectedJSON = {
85
+ type: 'currency',
86
+ attributes: {
87
+ denomination: 'USD',
88
+ min: 0,
89
+ step: 1
90
+ },
91
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
92
+ };
93
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
94
+ });
95
+ });
96
+ it('for date question format', () => {
97
+ const format = questionFormatInfo('date');
98
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('date');
99
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Date Field');
100
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
101
+ const expectedJSON = {
102
+ type: 'date',
103
+ attributes: {
104
+ step: 1
105
+ },
106
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
107
+ };
108
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
109
+ });
110
+ it('for dateRange question format', () => {
111
+ const format = questionFormatInfo('dateRange');
112
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('dateRange');
113
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Date Range');
114
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
115
+ const expectedJSON = {
116
+ type: 'dateRange',
117
+ attributes: {},
118
+ columns: {
119
+ start: {
120
+ label: 'From',
121
+ step: 1
122
+ },
123
+ end: {
124
+ label: 'To',
125
+ step: 1
126
+ }
127
+ },
128
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
129
+ };
130
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
131
+ });
132
+ it('for email question format', () => {
133
+ const format = questionFormatInfo('email');
134
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('email');
135
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Email Field');
136
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
137
+ const expectedJSON = {
138
+ type: 'email',
139
+ attributes: {
140
+ maxLength: 255,
141
+ multiple: false,
142
+ },
143
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
144
+ };
145
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
146
+ });
147
+ it('for multiselectBox question format', () => {
148
+ const format = questionFormatInfo('multiselectBox');
149
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('multiselectBox');
150
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Multi-select Box');
151
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
152
+ const expectedJSON = {
153
+ type: 'multiselectBox',
154
+ attributes: {
155
+ multiple: true,
156
+ },
157
+ options: [{
158
+ label: 'Option A',
159
+ value: 'a',
160
+ selected: false
161
+ }],
162
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
163
+ };
164
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
165
+ });
166
+ it('for number question format', () => {
167
+ const format = questionFormatInfo('number');
168
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('number');
169
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Number Field');
170
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
171
+ const expectedJSON = {
172
+ type: 'number',
173
+ attributes: {
174
+ min: 0,
175
+ step: 1,
176
+ },
177
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
178
+ };
179
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
180
+ });
181
+ it('for numberRange format', () => {
182
+ const format = questionFormatInfo('numberRange');
183
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('numberRange');
184
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Number Range');
185
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
186
+ const expectedJSON = {
187
+ type: 'numberRange',
188
+ attributes: {},
189
+ columns: {
190
+ start: {
191
+ label: 'From',
192
+ min: 0,
193
+ step: 1,
194
+ },
195
+ end: {
196
+ label: 'To',
197
+ min: 0,
198
+ step: 1,
199
+ }
200
+ },
201
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
202
+ };
203
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
204
+ });
205
+ it('for radioButtons question format', () => {
206
+ const format = questionFormatInfo('radioButtons');
207
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('radioButtons');
208
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Radio Buttons');
209
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
210
+ const expectedJSON = {
211
+ type: 'radioButtons',
212
+ attributes: {},
213
+ options: [{
214
+ label: 'Option A',
215
+ value: 'a',
216
+ selected: false
217
+ }],
218
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
219
+ };
220
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
221
+ });
222
+ it('for selectBox question format', () => {
223
+ const format = questionFormatInfo('selectBox');
224
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('selectBox');
225
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Select Box');
226
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
227
+ const expectedJSON = {
228
+ type: 'selectBox',
229
+ attributes: {
230
+ multiple: false,
231
+ },
232
+ options: [{
233
+ label: 'Option A',
234
+ value: 'a',
235
+ selected: false
236
+ }],
237
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
238
+ };
239
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
240
+ });
241
+ it('for table question format', () => {
242
+ const format = questionFormatInfo('table');
243
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('table');
244
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Table');
245
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
246
+ const expectedJSON = {
247
+ type: 'table',
248
+ attributes: {
249
+ canAddRows: true,
250
+ canRemoveRows: true,
251
+ initialRows: 1
252
+ },
253
+ columns: [{
254
+ heading: 'Column A',
255
+ content: {
256
+ type: 'textArea',
257
+ attributes: {
258
+ asRichText: true,
259
+ cols: 20,
260
+ rows: 2,
261
+ },
262
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION }
263
+ }
264
+ }],
265
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
266
+ };
267
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
268
+ });
269
+ it('for text question format', () => {
270
+ const format = questionFormatInfo('text');
271
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('text');
272
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Text Field');
273
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
274
+ const expectedJSON = {
275
+ type: 'text',
276
+ attributes: {
277
+ maxLength: 255,
278
+ },
279
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
280
+ };
281
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
282
+ });
283
+ it('for textArea question format', () => {
284
+ const format = questionFormatInfo('textArea');
285
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('textArea');
286
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('Text Area');
287
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
288
+ const expectedJSON = {
289
+ type: 'textArea',
290
+ attributes: {
291
+ asRichText: true,
292
+ cols: 20,
293
+ rows: 2,
294
+ },
295
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
296
+ };
297
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
298
+ });
299
+ it('for url question format', () => {
300
+ const format = questionFormatInfo('url');
301
+ expect(format === null || format === void 0 ? void 0 : format.type).toEqual('url');
302
+ expect(format === null || format === void 0 ? void 0 : format.title).toEqual('URL Field');
303
+ expect(format === null || format === void 0 ? void 0 : format.usageDescription).toBeDefined();
304
+ const expectedJSON = {
305
+ type: 'url',
306
+ attributes: {
307
+ maxLength: 255,
308
+ },
309
+ meta: { schemaVersion: question_1.CURRENT_SCHEMA_VERSION },
310
+ };
311
+ expect(format === null || format === void 0 ? void 0 : format.defaultJSON).toEqual(expectedJSON);
312
+ });