Skip to content

Commit 63dd861

Browse files
committed
Switched to node:test
1 parent ef19acd commit 63dd861

15 files changed

Lines changed: 167 additions & 146 deletions

File tree

package.json

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,20 +90,13 @@
9090
},
9191
"scripts": {
9292
"build": "tsc",
93-
"test": "NODE_OPTIONS=--experimental-vm-modules jest"
94-
},
95-
"jest": {
96-
"testMatch": [
97-
"**/*.test.mjs"
98-
],
99-
"transform": {}
93+
"test": "node --test"
10094
},
10195
"devDependencies": {
10296
"@mikro-orm/core": "^6.1.1",
10397
"@mikro-orm/postgresql": "^6.1.1",
10498
"@prisma/client": "^5.7.0",
10599
"drizzle-orm": "^0.31.0",
106-
"jest": "^29.5.0",
107100
"knex": "^3.1.0",
108101
"kysely": "^0.27.3",
109102
"objection": "^3.1.3",

tests/drizzle-orm/index.test.mjs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import assert from 'node:assert';
2+
import test from 'node:test';
13
import { sql, l2Distance, innerProduct, cosineDistance, l1Distance, hammingDistance, jaccardDistance } from 'drizzle-orm';
24
import { drizzle } from 'drizzle-orm/postgres-js';
35
import { pgTable, serial, vector, halfvec, bit, sparsevec } from 'drizzle-orm/pg-core';
@@ -33,59 +35,59 @@ test('example', async () => {
3335
.from(items)
3436
.orderBy(l2Distance(items.embedding, [1, 1, 1]))
3537
.limit(5);
36-
expect(allItems.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
37-
expect(allItems[0].embedding).toStrictEqual([1, 1, 1]);
38-
expect(allItems[1].embedding).toStrictEqual([1, 1, 2]);
39-
expect(allItems[2].embedding).toStrictEqual([2, 2, 2]);
38+
assert.deepEqual(allItems.map(v => v.id), [1, 3, 2, 4]);
39+
assert.deepEqual(allItems[0].embedding, [1, 1, 1]);
40+
assert.deepEqual(allItems[1].embedding, [1, 1, 2]);
41+
assert.deepEqual(allItems[2].embedding, [2, 2, 2]);
4042

4143
// L2 distance - halfvec
4244
allItems = await db.select()
4345
.from(items)
4446
.orderBy(l2Distance(items.halfEmbedding, [1, 1, 1]))
4547
.limit(5);
46-
expect(allItems.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
48+
assert.deepEqual(allItems.map(v => v.id), [1, 3, 2, 4]);
4749

4850
// L2 distance - sparsevec
4951
allItems = await db.select()
5052
.from(items)
5153
.orderBy(l2Distance(items.sparseEmbedding, new SparseVector([1, 1, 1])))
5254
.limit(5);
53-
expect(allItems.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
55+
assert.deepEqual(allItems.map(v => v.id), [1, 3, 2, 4]);
5456

5557
// max inner product
5658
allItems = await db.select()
5759
.from(items)
5860
.orderBy(innerProduct(items.embedding, [1, 1, 1]))
5961
.limit(5);
60-
expect(allItems.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
62+
assert.deepEqual(allItems.map(v => v.id), [2, 3, 1, 4]);
6163

6264
// cosine distance
6365
allItems = await db.select()
6466
.from(items)
6567
.orderBy(cosineDistance(items.embedding, [1, 1, 1]))
6668
.limit(5);
67-
expect(allItems.map(v => v.id).slice(2)).toStrictEqual([3, 4]);
69+
assert.deepEqual(allItems.map(v => v.id).slice(2), [3, 4]);
6870

6971
// L1 distance
7072
allItems = await db.select()
7173
.from(items)
7274
.orderBy(l1Distance(items.embedding, [1, 1, 1]))
7375
.limit(5);
74-
expect(allItems.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
76+
assert.deepEqual(allItems.map(v => v.id), [1, 3, 2, 4]);
7577

7678
// Hamming distance
7779
allItems = await db.select()
7880
.from(items)
7981
.orderBy(hammingDistance(items.binaryEmbedding, '101'))
8082
.limit(5);
81-
expect(allItems.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
83+
assert.deepEqual(allItems.map(v => v.id), [2, 3, 1, 4]);
8284

8385
// Jaccard distance
8486
allItems = await db.select()
8587
.from(items)
8688
.orderBy(jaccardDistance(items.binaryEmbedding, '101'))
8789
.limit(5);
88-
expect(allItems.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
90+
assert.deepEqual(allItems.map(v => v.id), [2, 3, 1, 4]);
8991

9092
await client.end();
9193
});

tests/knex/index.test.mjs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import assert from 'node:assert';
2+
import test from 'node:test';
13
import Knex from 'knex';
24
import pgvector from 'pgvector/knex';
35
import { SparseVector } from 'pgvector';
@@ -30,52 +32,52 @@ test('example', async () => {
3032
let items = await knex('knex_items')
3133
.orderBy(knex.l2Distance('embedding', [1, 1, 1]))
3234
.limit(5);
33-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
34-
expect(pgvector.fromSql(items[0].embedding)).toStrictEqual([1, 1, 1]);
35-
expect(pgvector.fromSql(items[1].embedding)).toStrictEqual([1, 1, 2]);
36-
expect(pgvector.fromSql(items[2].embedding)).toStrictEqual([2, 2, 2]);
35+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
36+
assert.deepEqual(pgvector.fromSql(items[0].embedding), [1, 1, 1]);
37+
assert.deepEqual(pgvector.fromSql(items[1].embedding), [1, 1, 2]);
38+
assert.deepEqual(pgvector.fromSql(items[2].embedding), [2, 2, 2]);
3739

3840
// L2 distance - halfvec
3941
items = await knex('knex_items')
4042
.orderBy(knex.l2Distance('half_embedding', [1, 1, 1]))
4143
.limit(5);
42-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
44+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
4345

4446
// L2 distance - sparsevec
4547
items = await knex('knex_items')
4648
.orderBy(knex.l2Distance('sparse_embedding', new SparseVector([1, 1, 1])))
4749
.limit(5);
48-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
50+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
4951

5052
// max inner product
5153
items = await knex('knex_items')
5254
.orderBy(knex.maxInnerProduct('embedding', [1, 1, 1]))
5355
.limit(5);
54-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
56+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
5557

5658
// cosine distance
5759
items = await knex('knex_items')
5860
.orderBy(knex.cosineDistance('embedding', [1, 1, 1]))
5961
.limit(5);
60-
expect(items.map(v => v.id).slice(2)).toStrictEqual([3, 4]);
62+
assert.deepEqual(items.map(v => v.id).slice(2), [3, 4]);
6163

6264
// L1 distance
6365
items = await knex('knex_items')
6466
.orderBy(knex.l1Distance('embedding', [1, 1, 1]))
6567
.limit(5);
66-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
68+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
6769

6870
// Hamming distance
6971
items = await knex('knex_items')
7072
.orderBy(knex.hammingDistance('binary_embedding', '101'))
7173
.limit(5);
72-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
74+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
7375

7476
// Jaccard distance
7577
items = await knex('knex_items')
7678
.orderBy(knex.jaccardDistance('binary_embedding', '101'))
7779
.limit(5);
78-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
80+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
7981

8082
await knex.schema.alterTable('knex_items', function (table) {
8183
table.index(knex.raw('embedding vector_l2_ops'), 'knex_items_embedding_idx', 'hnsw');

tests/kysely/index.test.mjs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import assert from 'node:assert';
2+
import test from 'node:test';
13
import pg from 'pg';
24
import { Kysely, PostgresDialect, sql } from 'kysely';
35
import pgvector from 'pgvector/kysely';
@@ -45,66 +47,66 @@ test('example', async () => {
4547
.orderBy(l2Distance('embedding', [1, 1, 1]))
4648
.limit(5)
4749
.execute();
48-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
49-
expect(pgvector.fromSql(items[0].embedding)).toStrictEqual([1, 1, 1]);
50-
expect(pgvector.fromSql(items[1].embedding)).toStrictEqual([1, 1, 2]);
51-
expect(pgvector.fromSql(items[2].embedding)).toStrictEqual([2, 2, 2]);
50+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
51+
assert.deepEqual(pgvector.fromSql(items[0].embedding), [1, 1, 1]);
52+
assert.deepEqual(pgvector.fromSql(items[1].embedding), [1, 1, 2]);
53+
assert.deepEqual(pgvector.fromSql(items[2].embedding), [2, 2, 2]);
5254

5355
// L2 distance - halfvec
5456
items = await db.selectFrom('kysely_items')
5557
.selectAll()
5658
.orderBy(l2Distance('half_embedding', [1, 1, 1]))
5759
.limit(5)
5860
.execute();
59-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
61+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
6062

6163
// L2 distance - sparsevec
6264
items = await db.selectFrom('kysely_items')
6365
.selectAll()
6466
.orderBy(l2Distance('sparse_embedding', new SparseVector([1, 1, 1])))
6567
.limit(5)
6668
.execute();
67-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
69+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
6870

6971
// max inner product
7072
items = await db.selectFrom('kysely_items')
7173
.selectAll()
7274
.orderBy(maxInnerProduct('embedding', [1, 1, 1]))
7375
.limit(5)
7476
.execute();
75-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
77+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
7678

7779
// cosine distance
7880
items = await db.selectFrom('kysely_items')
7981
.selectAll()
8082
.orderBy(cosineDistance('embedding', [1, 1, 1]))
8183
.limit(5)
8284
.execute();
83-
expect(items.map(v => v.id).slice(2)).toStrictEqual([3, 4]);
85+
assert.deepEqual(items.map(v => v.id).slice(2), [3, 4]);
8486

8587
// L1 distance
8688
items = await db.selectFrom('kysely_items')
8789
.selectAll()
8890
.orderBy(l1Distance('embedding', [1, 1, 1]))
8991
.limit(5)
9092
.execute();
91-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
93+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
9294

9395
// Hamming distance
9496
items = await db.selectFrom('kysely_items')
9597
.selectAll()
9698
.orderBy(hammingDistance('binary_embedding', '101'))
9799
.limit(5)
98100
.execute();
99-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
101+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
100102

101103
// Jaccard distance
102104
items = await db.selectFrom('kysely_items')
103105
.selectAll()
104106
.orderBy(jaccardDistance('binary_embedding', '101'))
105107
.limit(5)
106108
.execute();
107-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
109+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
108110

109111
await db.schema.createIndex('kysely_items_embedding_idx')
110112
.on('kysely_items')

tests/mikro-orm/index.test.mjs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import assert from 'node:assert';
2+
import test from 'node:test';
13
import { MikroORM, EntityManager, EntitySchema } from '@mikro-orm/postgresql';
24
import { VectorType, HalfvecType, BitType, SparsevecType, l2Distance, maxInnerProduct, cosineDistance, l1Distance, hammingDistance, jaccardDistance } from 'pgvector/mikro-orm';
35
import { SparseVector } from 'pgvector';
@@ -37,59 +39,59 @@ test('example', async () => {
3739
.orderBy({[l2Distance('embedding', [1, 1, 1])]: 'ASC'})
3840
.limit(5)
3941
.getResult();
40-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
41-
expect(items[0].embedding).toStrictEqual([1, 1, 1]);
42-
expect(items[1].embedding).toStrictEqual([1, 1, 2]);
43-
expect(items[2].embedding).toStrictEqual([2, 2, 2]);
42+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
43+
assert.deepEqual(items[0].embedding, [1, 1, 1]);
44+
assert.deepEqual(items[1].embedding, [1, 1, 2]);
45+
assert.deepEqual(items[2].embedding, [2, 2, 2]);
4446

4547
// L2 distance - halfvec
4648
items = await em.createQueryBuilder(Item)
4749
.orderBy({[l2Distance('half_embedding', [1, 1, 1])]: 'ASC'})
4850
.limit(5)
4951
.getResult();
50-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
52+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
5153

5254
// L2 distance - sparsevec
5355
items = await em.createQueryBuilder(Item)
5456
.orderBy({[l2Distance('sparse_embedding', new SparseVector([1, 1, 1]))]: 'ASC'})
5557
.limit(5)
5658
.getResult();
57-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
59+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
5860

5961
// max inner product
6062
items = await em.createQueryBuilder(Item)
6163
.orderBy({[maxInnerProduct('embedding', [1, 1, 1])]: 'ASC'})
6264
.limit(5)
6365
.getResult();
64-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
66+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
6567

6668
// cosine distance
6769
items = await em.createQueryBuilder(Item)
6870
.orderBy({[cosineDistance('embedding', [1, 1, 1])]: 'ASC'})
6971
.limit(5)
7072
.getResult();
71-
expect(items.map(v => v.id).slice(2)).toStrictEqual([3, 4]);
73+
assert.deepEqual(items.map(v => v.id).slice(2), [3, 4]);
7274

7375
// L1 distance
7476
items = await em.createQueryBuilder(Item)
7577
.orderBy({[l1Distance('embedding', [1, 1, 1])]: 'ASC'})
7678
.limit(5)
7779
.getResult();
78-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
80+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
7981

8082
// Hamming distance
8183
items = await em.createQueryBuilder(Item)
8284
.orderBy({[hammingDistance('binary_embedding', '101')]: 'ASC'})
8385
.limit(5)
8486
.getResult();
85-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
87+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
8688

8789
// Jaccard distance
8890
items = await em.createQueryBuilder(Item)
8991
.orderBy({[jaccardDistance('binary_embedding', '101')]: 'ASC'})
9092
.limit(5)
9193
.getResult();
92-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
94+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
9395

9496
orm.close();
9597
});

tests/objection/index.test.mjs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import assert from 'node:assert';
2+
import test from 'node:test';
13
import Knex from 'knex';
24
import { Model } from 'objection';
35
import pgvector from 'pgvector/objection';
@@ -40,52 +42,52 @@ test('example', async () => {
4042
let items = await Item.query()
4143
.orderBy(l2Distance('embedding', [1, 1, 1]))
4244
.limit(5);
43-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
44-
expect(pgvector.fromSql(items[0].embedding)).toStrictEqual([1, 1, 1]);
45-
expect(pgvector.fromSql(items[1].embedding)).toStrictEqual([1, 1, 2]);
46-
expect(pgvector.fromSql(items[2].embedding)).toStrictEqual([2, 2, 2]);
45+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
46+
assert.deepEqual(pgvector.fromSql(items[0].embedding), [1, 1, 1]);
47+
assert.deepEqual(pgvector.fromSql(items[1].embedding), [1, 1, 2]);
48+
assert.deepEqual(pgvector.fromSql(items[2].embedding), [2, 2, 2]);
4749

4850
// L2 distance - halfvec
4951
items = await Item.query()
5052
.orderBy(l2Distance('half_embedding', [1, 1, 1]))
5153
.limit(5);
52-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
54+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
5355

5456
// L2 distance - sparsevec
5557
items = await Item.query()
5658
.orderBy(l2Distance('sparse_embedding', new SparseVector([1, 1, 1])))
5759
.limit(5);
58-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
60+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
5961

6062
// max inner product
6163
items = await Item.query()
6264
.orderBy(maxInnerProduct('embedding', [1, 1, 1]))
6365
.limit(5);
64-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
66+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
6567

6668
// cosine distance
6769
items = await Item.query()
6870
.orderBy(cosineDistance('embedding', [1, 1, 1]))
6971
.limit(5);
70-
expect(items.map(v => v.id).slice(2)).toStrictEqual([3, 4]);
72+
assert.deepEqual(items.map(v => v.id).slice(2), [3, 4]);
7173

7274
// L1 distance
7375
items = await Item.query()
7476
.orderBy(l1Distance('embedding', [1, 1, 1]))
7577
.limit(5);
76-
expect(items.map(v => v.id)).toStrictEqual([1, 3, 2, 4]);
78+
assert.deepEqual(items.map(v => v.id), [1, 3, 2, 4]);
7779

7880
// Hamming distance
7981
items = await Item.query()
8082
.orderBy(hammingDistance('binary_embedding', '101'))
8183
.limit(5);
82-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
84+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
8385

8486
// Jaccard distance
8587
items = await Item.query()
8688
.orderBy(jaccardDistance('binary_embedding', '101'))
8789
.limit(5);
88-
expect(items.map(v => v.id)).toStrictEqual([2, 3, 1, 4]);
90+
assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]);
8991

9092
await knex.schema.alterTable('objection_items', function (table) {
9193
table.index(knex.raw('embedding vector_l2_ops'), 'objection_items_embedding_idx', 'hnsw');

0 commit comments

Comments
 (0)