Skip to content
This repository was archived by the owner on Jun 27, 2025. It is now read-only.

Commit 0732e5f

Browse files
committed
add test suite
1 parent faba6a9 commit 0732e5f

File tree

3 files changed

+78
-3
lines changed

3 files changed

+78
-3
lines changed

index.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,16 @@ const handler = async (req, res, redis) => {
2222
'All keys should be 0x addresses'
2323
)
2424
httpAssert(
25-
Object.values(participants).every(Number.isInteger),
25+
Object.values(participants).every(score => {
26+
try {
27+
BigInt(score)
28+
return true
29+
} catch {
30+
return false
31+
}
32+
}),
2633
400,
27-
'All values should be integers'
34+
'All values should be numbers encoded as string'
2835
)
2936

3037
for (const [address, score] of Object.entries(participants)) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"type": "module",
55
"scripts": {
66
"start": "node bin/spark-rewards.js",
7-
"test": "standard"
7+
"test": "standard && node --test"
88
},
99
"dependencies": {
1010
"@sentry/node": "^8.26.0",

test.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import test from 'node:test'
2+
import http from 'node:http'
3+
import { createHandler } from './index.js'
4+
import Redis from 'ioredis'
5+
import { once } from 'node:events'
6+
import assert from 'node:assert/strict'
7+
8+
let server
9+
let redis
10+
let api
11+
12+
test.before(async () => {
13+
const logger = {
14+
error: console.error,
15+
info: console.info,
16+
request: () => {}
17+
}
18+
19+
redis = new Redis()
20+
await redis.flushall()
21+
const handler = await createHandler({ logger, redis })
22+
server = http.createServer(handler)
23+
server.listen()
24+
await once(server, 'listening')
25+
api = `http://127.0.0.1:${server.address().port}`
26+
})
27+
28+
test.after(() => {
29+
server.close()
30+
redis.disconnect()
31+
})
32+
33+
test('scores', async t => {
34+
{
35+
const res = await fetch(`${api}/scores`)
36+
assert.deepEqual(await res.json(), {})
37+
}
38+
{
39+
const res = await fetch(`${api}/scores`, {
40+
method: 'POST',
41+
body: JSON.stringify({
42+
'0x000000000000000000000000000000000000dEaD': '1'
43+
})
44+
})
45+
assert(res.ok)
46+
}
47+
{
48+
const res = await fetch(`${api}/scores`)
49+
assert.deepEqual(await res.json(), {
50+
'0x000000000000000000000000000000000000dEaD': '1'
51+
})
52+
}
53+
{
54+
const res = await fetch(`${api}/scores`, {
55+
method: 'POST',
56+
body: JSON.stringify({
57+
'0x000000000000000000000000000000000000dEaD': '1'
58+
})
59+
})
60+
assert(res.ok)
61+
}
62+
{
63+
const res = await fetch(`${api}/scores`)
64+
assert.deepEqual(await res.json(), {
65+
'0x000000000000000000000000000000000000dEaD': '2'
66+
})
67+
}
68+
})

0 commit comments

Comments
 (0)