Skip to content

Commit 4eb66ff

Browse files
committed
Add test coverage
1 parent 8b71067 commit 4eb66ff

File tree

7 files changed

+267
-9
lines changed

7 files changed

+267
-9
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/node_modules/
22
/dist/
3+
/coverage/
34
/playground/main.ts

package-lock.json

Lines changed: 212 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"@types/toastr": "^2.1.43",
2626
"@typescript-eslint/eslint-plugin": "~8.50",
2727
"@typescript-eslint/parser": "~8.50",
28+
"@vitest/coverage-v8": "^4.0.16",
2829
"eslint": "~9.39",
2930
"jsdom": "~27.3",
3031
"notyf": "^3.10.0",
@@ -42,6 +43,7 @@
4243
"build": "npm run clean && npm run build:js && npm run build:types",
4344
"test": "vitest run",
4445
"test:watch": "vitest",
46+
"test:coverage": "vitest run --coverage",
4547
"lint": "eslint src",
4648
"dev": "vite",
4749
"prepublishOnly": "npm run clean && npm run lint && npm run test && npm run build"

tests/behaviors/copy.test.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,17 @@ const event = new MouseEvent('click', {
1616
bubbles: true
1717
});
1818

19+
event.preventDefault = vi.fn();
20+
1921
describe('copy behavior', () => {
2022
let writeText: Mock;
2123

2224
beforeEach(() => {
2325
writeText = mockClipboard();
2426

2527
document.body.innerHTML = '<a data-copy="value for copy" id="single-copy">Copy single</a>' +
26-
'<a data-copy="value for copy 2" data-copy-message="SUCCESS COPY" id="copy-with-message">Copy with message</a>';
28+
'<a data-copy="value for copy 2" data-copy-message="SUCCESS COPY" id="copy-with-message">Copy with message</a>' +
29+
'<a href="#" data-copy="abra" id="with-hash"></a>';
2730
});
2831

2932
afterEach(() => {
@@ -36,6 +39,14 @@ describe('copy behavior', () => {
3639

3740
expect(writeText).toHaveBeenCalledOnce();
3841
expect(writeText).toHaveBeenCalledWith('value for copy');
42+
expect(event.preventDefault).not.toBeCalled();
43+
});
44+
45+
it('should prevent default for #', async () => {
46+
await copyBehavior(document.getElementById('with-hash')!, event);
47+
48+
expect(writeText).toHaveBeenCalledOnce();
49+
expect(event.preventDefault).toBeCalled();
3950
});
4051

4152
it('success copy with message', async () => {

tests/browser/notifications/toastr.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ describe('create toastr adapter', () => {
3939
});
4040

4141
it('warning', async () => {
42-
await adapter.info('warning message');
42+
await adapter.warning('warning message');
4343

44-
expect(toastrMock.info).toHaveBeenCalledOnce();
45-
expect(toastrMock.info).toHaveBeenCalledWith('warning message');
44+
expect(toastrMock.warning).toHaveBeenCalledOnce();
45+
expect(toastrMock.warning).toHaveBeenCalledWith('warning message');
4646
});
4747

4848
it('error', async () => {
49-
await adapter.info('error message');
49+
await adapter.error('error message');
5050

51-
expect(toastrMock.info).toHaveBeenCalledOnce();
52-
expect(toastrMock.info).toHaveBeenCalledWith('error message');
51+
expect(toastrMock.error).toHaveBeenCalledOnce();
52+
expect(toastrMock.error).toHaveBeenCalledWith('error message');
5353
});
5454

5555
it('call to configurator', async () => {

tests/dom/embedded-data.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,27 @@ describe('read embedded data', () => {
3333
expect(result).toStrictEqual(expected);
3434
});
3535

36+
it('read from script element', () => {
37+
const el = <HTMLScriptElement>document.getElementById('my-data');
38+
const result = readEmbeddedData(el);
39+
40+
expect(result).toStrictEqual({foo: 'bar'});
41+
});
42+
43+
it('error read from another element', () => {
44+
const el = document.createElement('span');
45+
46+
expect(() => {
47+
readEmbeddedData(<HTMLScriptElement>el);
48+
}).toThrowError(new Error('Can\'t read embedded data from "SPAN" node.'));
49+
});
50+
51+
it('throw error for unknown element', () => {
52+
expect(() => {
53+
readEmbeddedData(<HTMLScriptElement>{});
54+
}).toThrowError(new TypeError('Unknown input script.'));
55+
})
56+
3657
it('error for not existence script', () => {
3758
expect(() => {
3859
readEmbeddedData('blabla');

0 commit comments

Comments
 (0)