Skip to content

Commit 0e517ab

Browse files
committed
refactor: update validation schema in dummy-form and tpk-form tests and enhance clearObjectValues utility
1 parent 521d5b1 commit 0e517ab

File tree

5 files changed

+25
-10
lines changed

5 files changed

+25
-10
lines changed

doc-app/app/components/dummy-form.gts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,16 @@ import Component from '@glimmer/component';
22
import { tracked } from '@glimmer/tracking';
33
import { action } from '@ember/object';
44
import { ImmerChangeset } from 'ember-immer-changeset';
5-
import { object, string, date, boolean, array, email } from 'zod';
5+
import {
6+
object,
7+
string,
8+
date,
9+
boolean,
10+
array,
11+
email,
12+
union,
13+
literal,
14+
} from 'zod';
615
import TpkForm from '@triptyk/ember-input-validation/components/tpk-form';
716

817
export default class DummyFormComponent extends Component {
@@ -19,9 +28,9 @@ export default class DummyFormComponent extends Component {
1928
});
2029

2130
validationSchema = object({
22-
firstName: string().min(2, 'At least 2 characters'),
31+
firstName: string(),
2332
lastName: string().min(2, 'At least 2 characters'),
24-
email: email('Invalid email'),
33+
email: union([literal(''), email()]), // allow empty string or email
2534
phone: string(),
2635
birthday: date().max(new Date(), 'Cannot be in the future'),
2736
languages: array(string()).min(1, 'Select at least one language'),

doc-app/app/styles/app.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
@import 'tailwindcss';
66
@plugin "daisyui" {
77
themes:
8-
cupcake --default,
8+
corporate --default,
99
dark;
1010
}
1111
@import '@triptyk/ember-input/dist/app.css';

doc-app/tests/integration/components/ember-input-validation/tpk-form-test.gts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ module('Integration | Component | tpk-form', function (hooks) {
127127
assert.dom('[data-test-tpk-validation-errors]').hasAnyText();
128128
});
129129

130-
// TODO: SHOULD BE FIXED AFTER WE FIND A WAY TO FIND REQUIRED FIELDS FROM ZOD SCHEMA
131-
test.skip('Should display an asterisk in the label upon initialization of the form and when adding an element', async function (assert) {
130+
test('Should display an asterisk in the label upon initialization of the form and when adding an element', async function (assert) {
132131
const changeset = new ImmerChangeset({
133132
email: '',
134133
address: {
@@ -148,12 +147,12 @@ module('Integration | Component | tpk-form', function (hooks) {
148147
const validationSchema = object({
149148
email: email(),
150149
address: object({
151-
street: string(),
150+
street: string().min(1),
152151
city: string(),
153152
}),
154153
levels: array(
155154
object({
156-
name: string(),
155+
name: string().min(1),
157156
grade: number(),
158157
})
159158
),

packages/ember-input-validation/src/components/prefabs/tpk-validation-select.gts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export default class TpkValidationSelectPrefabComponent extends BaseValidationCo
5454
}
5555

5656
get label() {
57+
console.log('label', this.args.label, this.mandatory);
5758
return this.mandatory ? `${this.args.label} *` : this.args.label;
5859
}
5960

@@ -76,7 +77,7 @@ export default class TpkValidationSelectPrefabComponent extends BaseValidationCo
7677
...attributes
7778
>
7879
<TpkSelectComponent
79-
@label={{@label}}
80+
@label={{this.label}}
8081
@multiple={{@multiple}}
8182
@disabled={{@disabled}}
8283
@placeholder={{@placeholder}}

packages/ember-input-validation/src/utils/clear-object.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,14 @@ export function clearObjectValues(
2121
}
2222
} else if (typeof obj[key] === 'boolean') {
2323
newObj[key] = false;
24-
} else {
24+
} else if (typeof obj[key] === 'number') {
25+
newObj[key] = 0;
26+
} else if (typeof obj[key] === 'string') {
2527
newObj[key] = '';
28+
} else if (typeof obj[key] === 'undefined') {
29+
newObj[key] = undefined;
30+
} else {
31+
newObj[key] = null;
2632
}
2733
}
2834
}

0 commit comments

Comments
 (0)