Skip to content

Commit 776d146

Browse files
committed
update tests
1 parent 0529ee7 commit 776d146

File tree

6 files changed

+224
-65
lines changed

6 files changed

+224
-65
lines changed

packages/feedback/test/widget/Actor.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ describe('Actor', () => {
1414
const actorComponent = renderActor();
1515

1616
expect(actorComponent.el).toBeInstanceOf(HTMLButtonElement);
17-
expect(actorComponent.el.textContent).toBe(ACTOR_LABEL);
17+
expect(actorComponent.el?.textContent).toBe(ACTOR_LABEL);
1818
});
1919

2020
it('calls `onClick` callback when clicked on', () => {
@@ -24,19 +24,19 @@ describe('Actor', () => {
2424
});
2525

2626
const event = new Event('click');
27-
actorComponent.el.dispatchEvent(event);
27+
actorComponent.el?.dispatchEvent(event);
2828
expect(onClick).toHaveBeenCalledWith(event);
2929
});
3030

3131
it('can manually show and hide the actor', () => {
3232
const actorComponent = renderActor();
3333

34-
expect(actorComponent.el.getAttribute('ariaHidden')).toBe('false');
34+
expect(actorComponent.el?.getAttribute('aria-hidden')).toBe('false');
3535

3636
actorComponent.hide();
37-
expect(actorComponent.el.getAttribute('ariaHidden')).toBe('true');
37+
expect(actorComponent.el?.getAttribute('aria-hidden')).toBe('true');
3838

3939
actorComponent.show();
40-
expect(actorComponent.el.getAttribute('ariaHidden')).toBe('false');
40+
expect(actorComponent.el?.getAttribute('aria-hidden')).toBe('false');
4141
});
4242
});

packages/feedback/test/widget/Dialog.test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import type { DialogProps } from '../../src/widget/Dialog';
22
import { Dialog } from '../../src/widget/Dialog';
33

4+
type NonNullableFields<T> = {
5+
[P in keyof T]: NonNullable<T[P]>;
6+
};
7+
48
function renderDialog({
59
showName = true,
610
showEmail = true,
@@ -35,7 +39,7 @@ function renderDialog({
3539
cancelButtonLabel,
3640
submitButtonLabel,
3741
...rest,
38-
});
42+
}) as NonNullableFields<ReturnType<typeof Dialog>>;
3943
}
4044

4145
describe('Dialog', () => {
@@ -82,5 +86,6 @@ describe('Dialog', () => {
8286
dialogComponent.el.querySelector('.dialog__content')?.dispatchEvent(event);
8387

8488
expect(event.stopPropagation).toHaveBeenCalled();
89+
expect(onClosed).not.toHaveBeenCalled();
8590
});
8691
});

packages/feedback/test/widget/Form.test.ts

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import type { FormComponentProps } from '../../src/widget/Form';
22
import { Form } from '../../src/widget/Form';
33

4+
type NonNullableFields<T> = {
5+
[P in keyof T]: NonNullable<T[P]>;
6+
};
7+
48
function renderForm({
59
showName = true,
610
showEmail = true,
@@ -16,7 +20,7 @@ function renderForm({
1620
cancelButtonLabel = 'Cancel!',
1721
submitButtonLabel = 'Submit!',
1822
...rest
19-
}: Partial<FormComponentProps> = {}) {
23+
}: Partial<FormComponentProps> = {}){
2024
return Form({
2125
isAnonymous,
2226
showName,
@@ -32,7 +36,7 @@ function renderForm({
3236
cancelButtonLabel,
3337
submitButtonLabel,
3438
...rest,
35-
});
39+
}) as NonNullableFields<ReturnType<typeof Form>>;
3640
}
3741

3842
describe('Form', () => {
@@ -50,7 +54,6 @@ describe('Form', () => {
5054

5155
const button = formComponent.el.querySelector('button[type="submit"]') as HTMLButtonElement | null;
5256
expect(button?.textContent).toBe('Submit!');
53-
expect(button?.disabled).toBe(true);
5457
expect(formComponent.el.querySelector('button[type="button"]')?.textContent).toBe('Cancel!');
5558
});
5659

@@ -84,7 +87,7 @@ describe('Form', () => {
8487
const messageLabel = formComponent.el.querySelector('label[htmlFor="message"]') as HTMLLabelElement;
8588
expect(nameLabel.textContent).toBe('Name!');
8689
expect(emailLabel.textContent).toBe('Email!');
87-
expect(messageLabel.textContent).toBe('Description!');
90+
expect(messageLabel.textContent).toBe('Description! (required)');
8891

8992
const nameInput = formComponent.el.querySelector('[name="name"]') as HTMLInputElement;
9093
const emailInput = formComponent.el.querySelector('[name="email"]') as HTMLInputElement;
@@ -101,40 +104,24 @@ describe('Form', () => {
101104
const message = formComponent.el.querySelector('[name="message"]') as HTMLTextAreaElement;
102105
const submit = formComponent.el.querySelector('button[type="submit"]') as HTMLButtonElement;
103106

104-
expect(submit.disabled).toBe(true);
105-
106107
message.value = 'Foo (message)';
107108
message.dispatchEvent(new KeyboardEvent('keyup'));
108-
expect(submit.disabled).toBe(false);
109109

110110
message.value = '';
111111
message.dispatchEvent(new KeyboardEvent('keyup'));
112-
expect(submit.disabled).toBe(true);
113-
});
114-
115-
it('can manually enable/disable submit button', () => {
116-
const formComponent = renderForm();
117-
const submit = formComponent.el.querySelector('button[type="submit"]') as HTMLButtonElement;
118-
expect(submit.disabled).toBe(true);
119-
120-
formComponent.setSubmitEnabled();
121-
expect(submit.disabled).toBe(false);
122-
123-
formComponent.setSubmitDisabled();
124-
expect(submit.disabled).toBe(true);
125112
});
126113

127114
it('can show error', () => {
128115
const formComponent = renderForm();
129116
const errorEl = formComponent.el.querySelector('.form__error-container') as HTMLDivElement;
130-
expect(errorEl.getAttribute('ariaHidden')).toBe('true');
117+
expect(errorEl.getAttribute('aria-hidden')).toBe('true');
131118

132119
formComponent.showError('My Error');
133-
expect(errorEl.getAttribute('ariaHidden')).toBe('false');
120+
expect(errorEl.getAttribute('aria-hidden')).toBe('false');
134121
expect(errorEl.textContent).toBe('My Error');
135122

136123
formComponent.hideError();
137-
expect(errorEl.getAttribute('ariaHidden')).toBe('true');
124+
expect(errorEl.getAttribute('aria-hidden')).toBe('true');
138125
expect(errorEl.textContent).toBe('');
139126
});
140127

packages/feedback/test/widget/SubmitButton.test.ts

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,9 @@ describe('SubmitButton', () => {
1414
const submitButtonComponent = renderSubmitButton();
1515

1616
expect(submitButtonComponent.el).toBeInstanceOf(HTMLButtonElement);
17+
if (!submitButtonComponent.el) {
18+
throw new Error('Element does not exist');
19+
}
1720
expect(submitButtonComponent.el.textContent).toBe(SUBMIT_BUTTON_LABEL);
18-
expect(submitButtonComponent.el.disabled).toBe(true);
19-
expect(submitButtonComponent.el.getAttribute('ariaDisabled')).toBe('true');
20-
});
21-
22-
it('toggles between enabled and disabled', () => {
23-
const submitButtonComponent = renderSubmitButton();
24-
25-
submitButtonComponent.setEnabled();
26-
expect(submitButtonComponent.el.disabled).toBe(false);
27-
expect(submitButtonComponent.el.ariaDisabled).toBe('false');
28-
29-
submitButtonComponent.setDisabled();
30-
expect(submitButtonComponent.el.disabled).toBe(true);
31-
expect(submitButtonComponent.el.ariaDisabled).toBe('true');
3221
});
3322
});

packages/feedback/test/widget/SuccessMessage.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ describe('SuccessMessage', () => {
1414
const successMessageComponent = renderSuccessMessage();
1515

1616
expect(successMessageComponent.el).toBeInstanceOf(HTMLDivElement);
17-
expect(successMessageComponent.el.textContent).toBe(SUCCESS_MESSAGE_TEXT);
17+
expect(successMessageComponent.el?.textContent).toBe(SUCCESS_MESSAGE_TEXT);
1818
});
1919

2020
it('removes element and calls `onRemove` callback when clicked', () => {
@@ -23,9 +23,9 @@ describe('SuccessMessage', () => {
2323
onRemove,
2424
});
2525

26-
document.body.appendChild(successMessageComponent.el);
26+
successMessageComponent.el && document.body.appendChild(successMessageComponent.el);
2727
expect(document.querySelector('.success-message')).not.toBeNull();
28-
successMessageComponent.el.dispatchEvent(new Event('click'));
28+
successMessageComponent.el?.dispatchEvent(new Event('click'));
2929
expect(document.querySelector('.success-message')).toBeNull();
3030
expect(onRemove).toHaveBeenCalledWith();
3131
});

0 commit comments

Comments
 (0)