Skip to content

Commit 70b4b02

Browse files
crazyairafc163
andauthored
fix: tarnsform type value (#2)
* fix: tarnsform type value * fix: all typeof * feat: add string test * feat: add type test * feat: 删除无用代码 --------- Co-authored-by: afc163 <[email protected]>
1 parent 89f27d5 commit 70b4b02

File tree

4 files changed

+57
-2
lines changed

4 files changed

+57
-2
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,5 @@ coverage
3838
.dumi/tmp
3939
.dumi/tmp-production
4040
dist
41-
.docs-dist
41+
.docs-dist
42+
.vscode

src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type {
33
InternalValidateMessages,
44
Rule,
55
RuleItem,
6+
RuleType,
67
RuleValuePackage,
78
Rules,
89
SyncErrorType,
@@ -145,6 +146,7 @@ class Schema {
145146
source = { ...source };
146147
}
147148
value = source[z] = rule.transform(value);
149+
rule.type ??= (Array.isArray(value) ? 'array' : typeof value) as RuleType;
148150
}
149151
if (typeof rule === 'function') {
150152
rule = {

tests/deep.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ describe('deep', () => {
222222
testArray: [],
223223
};
224224
const validator = new Schema(descriptor);
225-
validator.validate(record, (errors, fields) => {
225+
validator.validate(record, () => {
226226
done();
227227
});
228228
});

tests/number.spec.ts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,4 +109,56 @@ describe('number', () => {
109109
done();
110110
});
111111
});
112+
it('transform type', done => {
113+
const value = { v: 'a' };
114+
new Schema({
115+
v: { required: true, type: 'number', transform: () => 0 },
116+
})
117+
.validate(value, errors => {
118+
expect(errors).toBeFalsy();
119+
})
120+
.then(source => {
121+
expect(source).toEqual({ v: 0 });
122+
done();
123+
});
124+
});
125+
it('transform string', done => {
126+
const value = { v: 'a' };
127+
new Schema({
128+
v: { required: true, transform: v => v },
129+
})
130+
.validate(value, errors => {
131+
expect(errors).toBeFalsy();
132+
})
133+
.then(source => {
134+
expect(source).toEqual({ v: 'a' });
135+
done();
136+
});
137+
});
138+
it('transform number', done => {
139+
const value = { v: 0 };
140+
new Schema({
141+
v: { required: true, transform: v => v },
142+
})
143+
.validate(value, errors => {
144+
expect(errors).toBeFalsy();
145+
})
146+
.then(source => {
147+
expect(source).toEqual({ v: 0 });
148+
done();
149+
});
150+
});
151+
it('transform array', done => {
152+
const value = { v: [0, 1] };
153+
new Schema({
154+
v: { required: true, transform: v => v },
155+
})
156+
.validate(value, errors => {
157+
expect(errors).toBeFalsy();
158+
})
159+
.then(source => {
160+
expect(source).toEqual({ v: [0, 1] });
161+
done();
162+
});
163+
});
112164
});

0 commit comments

Comments
 (0)