@jskit-ai/kernel 0.1.146 → 0.1.148
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.
package/package.json
CHANGED
|
@@ -238,7 +238,7 @@ const GENERATED_UI_SOURCE_CONTRACT_PROFILES = Object.freeze({
|
|
|
238
238
|
}),
|
|
239
239
|
Object.freeze({
|
|
240
240
|
id: "medium-viewport",
|
|
241
|
-
pattern: /\
|
|
241
|
+
pattern: /\b(?:768|1024)\b/,
|
|
242
242
|
message: "Generated UI smoke tests must include tablet-ish medium width."
|
|
243
243
|
}),
|
|
244
244
|
Object.freeze({
|
|
@@ -206,3 +206,13 @@ test("generated UI responsive smoke profile requires compact medium expanded che
|
|
|
206
206
|
/missing:medium-viewport/
|
|
207
207
|
);
|
|
208
208
|
});
|
|
209
|
+
|
|
210
|
+
test("generated UI responsive smoke profile accepts a Vuetify md viewport", () => {
|
|
211
|
+
assert.doesNotThrow(() => assertGeneratedUiSourceContract(
|
|
212
|
+
"390 1024 1280 scrollWidth toBeGreaterThanOrEqual(48) generated-ui-screen",
|
|
213
|
+
{
|
|
214
|
+
profile: "responsive-smoke",
|
|
215
|
+
sourceName: "tests/e2e/example.spec.ts"
|
|
216
|
+
}
|
|
217
|
+
));
|
|
218
|
+
});
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
normalizeSingleSchemaDefinition,
|
|
6
6
|
resolveSchemaTransportSchemaDefinition
|
|
7
7
|
} from "./schemaDefinitions.js";
|
|
8
|
+
import { validateSchemaPayload } from "./schemaPayloadValidation.js";
|
|
8
9
|
|
|
9
10
|
test("normalizeSingleSchemaDefinition validates mode eagerly", () => {
|
|
10
11
|
const definition = {
|
|
@@ -49,3 +50,41 @@ test("resolveSchemaTransportSchemaDefinition still resolves valid definitions",
|
|
|
49
50
|
assert.equal(transportSchema.additionalProperties, false);
|
|
50
51
|
assert.equal(transportSchema.properties.name.type, "string");
|
|
51
52
|
});
|
|
53
|
+
|
|
54
|
+
test("temporal schemas preserve strict JSON strings", () => {
|
|
55
|
+
const definition = {
|
|
56
|
+
schema: createSchema({
|
|
57
|
+
serviceDate: { type: "date", required: true },
|
|
58
|
+
openingTime: { type: "time", required: true },
|
|
59
|
+
scheduledAt: { type: "dateTime", required: true }
|
|
60
|
+
}),
|
|
61
|
+
mode: "replace"
|
|
62
|
+
};
|
|
63
|
+
const payload = {
|
|
64
|
+
serviceDate: "2026-08-13",
|
|
65
|
+
openingTime: "07:08:09.123",
|
|
66
|
+
scheduledAt: "2026-08-13T07:08:09.123+08:00"
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
assert.deepEqual(validateSchemaPayload(definition, payload), payload);
|
|
70
|
+
assert.throws(
|
|
71
|
+
() => validateSchemaPayload(definition, {
|
|
72
|
+
serviceDate: new Date("2026-08-13T00:00:00.000Z"),
|
|
73
|
+
openingTime: new Date("2026-08-13T07:08:09.123Z"),
|
|
74
|
+
scheduledAt: new Date("2026-08-13T07:08:09.123Z")
|
|
75
|
+
}),
|
|
76
|
+
/Schema validation failed\./
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test("removed timestamp schemas fail instead of silently changing meaning", () => {
|
|
81
|
+
const definition = {
|
|
82
|
+
schema: createSchema({ occurredAt: { type: "timestamp" } }),
|
|
83
|
+
mode: "replace"
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
assert.throws(
|
|
87
|
+
() => validateSchemaPayload(definition, { occurredAt: 1 }),
|
|
88
|
+
/No casting function for type: timestamp/
|
|
89
|
+
);
|
|
90
|
+
});
|