Skip to content

Commit aa6772f

Browse files
committed
Add tests and configure CI
1 parent 7204e72 commit aa6772f

11 files changed

Lines changed: 4978 additions & 28 deletions

File tree

.github/workflows/test.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Tests
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
test:
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- name: Checkout code
13+
uses: actions/checkout@v7
14+
15+
- name: Setup Node.js
16+
uses: actions/setup-node@v6
17+
with:
18+
node-version: '20'
19+
cache: 'npm'
20+
21+
- name: Install dependencies
22+
run: npm ci
23+
24+
- name: Run tests
25+
run: npm test

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules/

content_scripts/pola.js

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,4 @@
11
{
2-
let validateEAN = function (elem) {
3-
if (isNaN(elem)) {
4-
return false;
5-
}
6-
let sum = 0;
7-
if (elem.length === 8) {
8-
sum = (parseInt(elem[0], 10) + parseInt(elem[2], 10)
9-
+ parseInt(elem[4], 10) + parseInt(elem[6], 10))
10-
* 3
11-
+ parseInt(elem[1], 10)
12-
+ parseInt(elem[3], 10)
13-
+ parseInt(elem[5], 10);
14-
} else {
15-
sum = (parseInt(elem[1], 10) + parseInt(elem[3], 10)
16-
+ parseInt(elem[5], 10) + parseInt(elem[7], 10)
17-
+ parseInt(elem[9], 10) + parseInt(elem[11], 10))
18-
* 3
19-
+ parseInt(elem[0], 10)
20-
+ parseInt(elem[2], 10)
21-
+ parseInt(elem[4], 10)
22-
+ parseInt(elem[6], 10)
23-
+ parseInt(elem[8], 10) + parseInt(elem[10], 10);
24-
}
25-
let num = (10 - (sum % 10)) % 10;
26-
return num === parseInt(elem[elem.length - 1], 10);
27-
};
282
let domain = document.location.hostname || '';
293
let result = null;
304
let exceptions = {

jest.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = {
2+
testEnvironment: 'jsdom',
3+
testMatch: ['**/test/**/*.test.js'],
4+
};

lib/validateEAN.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* Validates an EAN-8 or EAN-13 barcode using the check digit algorithm.
3+
*/
4+
function validateEAN(elem) {
5+
if (isNaN(elem)) {
6+
return false;
7+
}
8+
let sum = 0;
9+
if (elem.length === 8) {
10+
sum = (parseInt(elem[0], 10) + parseInt(elem[2], 10)
11+
+ parseInt(elem[4], 10) + parseInt(elem[6], 10))
12+
* 3
13+
+ parseInt(elem[1], 10)
14+
+ parseInt(elem[3], 10)
15+
+ parseInt(elem[5], 10);
16+
} else {
17+
sum = (parseInt(elem[1], 10) + parseInt(elem[3], 10)
18+
+ parseInt(elem[5], 10) + parseInt(elem[7], 10)
19+
+ parseInt(elem[9], 10) + parseInt(elem[11], 10))
20+
* 3
21+
+ parseInt(elem[0], 10)
22+
+ parseInt(elem[2], 10)
23+
+ parseInt(elem[4], 10)
24+
+ parseInt(elem[6], 10)
25+
+ parseInt(elem[8], 10) + parseInt(elem[10], 10);
26+
}
27+
let num = (10 - (sum % 10)) % 10;
28+
return num === parseInt(elem[elem.length - 1], 10);
29+
}
30+
31+
if (typeof module !== 'undefined') module.exports = { validateEAN };

0 commit comments

Comments
 (0)