diff --git a/script.test.js b/script.test.js new file mode 100644 index 0000000..1b95c61 --- /dev/null +++ b/script.test.js @@ -0,0 +1,44 @@ +import { JSDOM } from 'jsdom'; +import { expect, it, describe } from 'jest'; + +describe('generateQR function', () => { + let dom; + + beforeEach(() => { + dom = new JSDOM(` + +
+ + + + + + + `); + global.document = dom.window.document; + }); + + afterEach(() => { + jest.resetModules(); + }); + + it('should display alert when input is empty', () => { + document.getElementById('text').value = ''; + document.getElementById('generateButton').click(); + expect(document.getElementById('text').value).toBe(''); + }); + + it('should throw error when input is not a string', () => { + document.getElementById('text').value = 123; + expect(() => document.getElementById('generateButton').click()).toThrowError('Input must be a string'); + }); + + it('should display error message when generating QR code fails', () => { + const consoleError = jest.spyOn(console, 'error'); + document.getElementById('text').value = 'test'; + document.getElementById('qrcode').innerHTML = ''; + document.getElementById('generateButton').click(); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(document.getElementById('qrcode').innerHTML).toBe(''); + }); +}); \ No newline at end of file