Skip to content

Commit 97b5081

Browse files
committed
fix: return defined default value for enums
1 parent 82d1a3e commit 97b5081

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

src/draft2019-09/methods/getData.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,15 @@ describe("getData (2019)", () => {
174174
const data = compileSchema({ $schema: "draft-2019-09", enum: ["first", "second"] }).getData();
175175
assert.deepEqual(data, "first");
176176
});
177+
178+
it("should use default value in any case", () => {
179+
const data = compileSchema({
180+
$schema: "draft-2019-09",
181+
enum: ["first", "second"],
182+
default: ""
183+
}).getData();
184+
assert.deepEqual(data, "");
185+
});
177186
});
178187

179188
describe("file", () => {

src/draft2019-09/methods/getData.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export function getData(node: SchemaNode, data?: unknown, opts?: TemplateOptions
106106

107107
if (Array.isArray(node.schema.enum) && node.schema.enum.length > 0) {
108108
if (data === undefined) {
109-
return node.schema.enum[0];
109+
return node.schema.default ?? node.schema.enum[0];
110110
}
111111
}
112112

src/methods/getData.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,11 @@ describe("getData", () => {
168168
const data = compileSchema({ enum: ["first", "second"] }).getData();
169169
assert.deepEqual(data, "first");
170170
});
171+
172+
it("should use default value in any case", () => {
173+
const data = compileSchema({ enum: ["first", "second"], default: "" }).getData();
174+
assert.deepEqual(data, "");
175+
});
171176
});
172177

173178
describe("file", () => {

src/methods/getData.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import { mergeNode } from "../mergeNode";
1010
import { reduceOneOfFuzzy } from "../keywords/oneOf";
1111
import { isFile } from "../utils/isFile";
1212

13-
14-
1513
export type TemplateOptions = {
1614
/** Add all properties (required and optional) to the generated data */
1715
addOptionalProps?: boolean;
@@ -108,7 +106,7 @@ export function getData(node: SchemaNode, data?: unknown, opts?: TemplateOptions
108106

109107
if (Array.isArray(node.schema.enum) && node.schema.enum.length > 0) {
110108
if (data === undefined) {
111-
return node.schema.enum[0];
109+
return node.schema.default ?? node.schema.enum[0];
112110
}
113111
}
114112

0 commit comments

Comments
 (0)