diff options
Diffstat (limited to 'web_src/js/features/common-button.test.ts')
-rw-r--r-- | web_src/js/features/common-button.test.ts | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/web_src/js/features/common-button.test.ts b/web_src/js/features/common-button.test.ts new file mode 100644 index 0000000000..4ae1f74897 --- /dev/null +++ b/web_src/js/features/common-button.test.ts @@ -0,0 +1,25 @@ +import {assignElementProperty, type ElementWithAssignableProperties} from './common-button.ts'; + +test('assignElementProperty', () => { + const elForm = document.createElement('form'); + assignElementProperty(elForm, 'action', '/test-link'); + expect(elForm.action).contains('/test-link'); // the DOM always returns absolute URL + expect(elForm.getAttribute('action')).eq('/test-link'); + assignElementProperty(elForm, 'text-content', 'dummy'); + expect(elForm.textContent).toBe('dummy'); + + // mock a form with its property "action" overwritten by an input element + const elFormWithAction = new class implements ElementWithAssignableProperties { + action = document.createElement('input'); // now "form.action" is not string, but an input element + _attrs: Record<string, string> = {}; + setAttribute(name: string, value: string) { this._attrs[name] = value } + getAttribute(name: string): string | null { return this._attrs[name] } + }(); + assignElementProperty(elFormWithAction, 'action', '/bar'); + expect(elFormWithAction.getAttribute('action')).eq('/bar'); + + const elInput = document.createElement('input'); + expect(elInput.readOnly).toBe(false); + assignElementProperty(elInput, 'read-only', 'true'); + expect(elInput.readOnly).toBe(true); +}); |