Skip to content

Commit 0340035

Browse files
committed
chore(@stenodb/utils): add tests
1 parent 96d92aa commit 0340035

File tree

4 files changed

+55
-7
lines changed

4 files changed

+55
-7
lines changed

examples/with-fastify/src/index.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@ const usersInitialData = new Users(
1616
new User(2, 'alice', 23)
1717
)
1818

19-
const usersAdapter = new AsyncAdapter(
20-
'users',
21-
Users,
22-
usersInitialData
23-
)
19+
const usersAdapter = new AsyncAdapter('users', Users, usersInitialData)
2420

2521
fastify.register(FastifySteno, {
2622
path: resolve(dirname(fileURLToPath(import.meta.url)), '..', 'db'),

packages/stenodb/src/index.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { test } from 'uvu'
22
import * as assert from 'uvu/assert'
33
import * as packages from './index.js'
44

5-
test(`base API`, async () => {
5+
test('stenodb exports', async () => {
66
const allExports = [packages]
77
.reduce((acc, v) => [...acc, ...Object.keys(v)], new Array<string>())
88
.filter((name) => name !== 'default')

packages/utils/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
],
1818
"scripts": {
1919
"dev": "pnpm build --watch src",
20-
"build": "tsup src/index.ts --format esm,cjs --dts --clean"
20+
"build": "tsup src/index.ts --format esm,cjs --dts --clean",
21+
"test": "tsx src/index.test.ts",
22+
"test:watch": "tsx watch src/index.test.ts"
2123
},
2224
"dependencies": {
2325
"class-transformer": "0.5.1",

packages/utils/src/index.test.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { test } from 'uvu'
2+
import * as assert from 'uvu/assert'
3+
import {
4+
dataTransformer,
5+
entityTransformer,
6+
getDifferenceData
7+
} from './utils.js'
8+
9+
class User {
10+
id: number
11+
name: string
12+
13+
constructor(id: number, name: string) {
14+
this.id = id
15+
this.name = name
16+
}
17+
18+
changeName(name: string): void {
19+
this.name = name
20+
}
21+
}
22+
23+
const userData = { id: 1, name: 'John' }
24+
const userJsonData = JSON.stringify(userData)
25+
const userEntityTransformer = entityTransformer(User)
26+
27+
test('entityTransformer', () => {
28+
assert.equal(userEntityTransformer(userJsonData), userJsonData)
29+
assert.not(userEntityTransformer(null))
30+
})
31+
32+
test('dataTransformer', () => {
33+
const transformer = dataTransformer(userEntityTransformer)
34+
const user = transformer.toJSON(userJsonData)!
35+
user.changeName('Alice')
36+
assert.is(user.id, 1)
37+
assert.is(user.name, 'Alice')
38+
})
39+
40+
test('getDifferenceData', () => {
41+
const newUser = { name: 'Allice', role: 'user' }
42+
const diffData = getDifferenceData<unknown>(userData, newUser)
43+
assert.ok(diffData)
44+
assert.snapshot(
45+
JSON.stringify(diffData),
46+
'{"added":[["role","user"]],"removed":[["id",1]],"edited":[["name","John","Allice"]]}'
47+
)
48+
})
49+
50+
test.run()

0 commit comments

Comments
 (0)