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

Commit 3863ac5

Browse files
committed
Tests for #46
1 parent 42c93cd commit 3863ac5

File tree

3 files changed

+105
-0
lines changed

3 files changed

+105
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import assert from 'assert'
2+
import { PostgrestClient } from '../../lib'
3+
4+
const rootUrl = 'http://localhost:3000'
5+
6+
describe('Embedded Filters', () => {
7+
it('should be able to support filters', async () => {
8+
let client = new PostgrestClient(rootUrl)
9+
let { body } = await client
10+
.from('users')
11+
.select('*,messages(*)')
12+
.eq('username', 'supabot')
13+
.eq('messages.channel_id', 1)
14+
15+
assert.equal(body.length, 1)
16+
assert.equal(body[0].messages[0].message, 'Hello World 👋')
17+
})
18+
19+
it('should be able to support order()', async () => {
20+
let client = new PostgrestClient(rootUrl)
21+
let { body } = await client
22+
.from('users')
23+
.select('*,messages(*)')
24+
.eq('username', 'supabot')
25+
.order('messages.channel_id')
26+
27+
assert.equal(
28+
body[0].messages[0].message,
29+
'Perfection is attained, not when there is nothing more to add, but when there is nothing left to take away.'
30+
)
31+
assert.equal(body[0].messages[1].message, 'Hello World 👋')
32+
})
33+
34+
it('should be able to support limit()', async () => {
35+
let client = new PostgrestClient(rootUrl)
36+
let { body } = await client
37+
.from('users')
38+
.select('*,messages(*)')
39+
.eq('username', 'supabot')
40+
.limit(1, 'messages')
41+
42+
assert.equal(body.length, 1)
43+
assert.equal(body[0].messages[0].message, 'Hello World 👋')
44+
})
45+
46+
it('should be able to support offset()', async () => {
47+
let client = new PostgrestClient(rootUrl)
48+
let { body } = await client
49+
.from('users')
50+
.select('*,messages(*)')
51+
.eq('username', 'supabot')
52+
.offset(1, 'messages')
53+
54+
assert.equal(body.length, 1)
55+
assert.equal(
56+
body[0].messages[0].message,
57+
'Perfection is attained, not when there is nothing more to add, but when there is nothing left to take away.'
58+
)
59+
})
60+
})

test/integration/Filters.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,21 @@ describe('Filters', () => {
4444
arrayFilterList.forEach((filter) => arrayFilterCheck(filter))
4545
rangeFilterList.forEach((filter) => rangeFilterCheck(filter))
4646
dataTypeList.forEach((filter) => dataTypeCheck(filter))
47+
48+
it('should throw an error for limit() when criteria is not of type number', async () => {
49+
let client = new PostgrestClient(rootUrl)
50+
let res = await client.from('users').select('*').limit('test')
51+
52+
assert.equal(`.limit() cannot be invoked with criteria that is not a number.`, res.statusText)
53+
})
54+
55+
it('should throw an error for offset() when criteria is not of type number', async () => {
56+
let client = new PostgrestClient(rootUrl)
57+
let res = await client.from('users').select('*').offset('test')
58+
59+
assert.equal(`.offset() cannot be invoked with criteria that is not a number.`, res.statusText)
60+
})
61+
4762
const expectedQueryArray = [
4863
'name=eq.New Zealand',
4964
'id=gt.20',

test/unit/Rest.test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,36 @@ describe('Request', () => {
3737
assert.deepEqual(_query, ['key1=not.in.(value1,value2)'])
3838
})
3939

40+
it('will translate order() into a query', () => {
41+
const { _query } = new Request('GET', '/').order('columnName')
42+
assert.deepEqual(_query, ['order=columnName.desc.nullslast'])
43+
})
44+
45+
it('will translate order() of an embedded table into a query', () => {
46+
const { _query } = new Request('GET', '/').order('foreignTable.columnName')
47+
assert.deepEqual(_query, ['foreignTable.order=columnName.desc.nullslast'])
48+
})
49+
50+
it('will translate limit() into a query', () => {
51+
const { _query } = new Request('GET', '/').limit(1)
52+
assert.deepEqual(_query, ['limit=1'])
53+
})
54+
55+
it('will translate limit() of an embedded table into a query', () => {
56+
const { _query } = new Request('GET', '/').limit(1, 'foreignTable')
57+
assert.deepEqual(_query, ['foreignTable.limit=1'])
58+
})
59+
60+
it('will translate offset() into a query', () => {
61+
const { _query } = new Request('GET', '/').offset(1)
62+
assert.deepEqual(_query, ['offset=1'])
63+
})
64+
65+
it('will translate offset() of an embedded table into a query', () => {
66+
const { _query } = new Request('GET', '/').offset(1, 'foreignTable')
67+
assert.deepEqual(_query, ['foreignTable.offset=1'])
68+
})
69+
4070
it('will return a promise from end()', () => {
4171
const request = new Request('GET', '/')
4272
.end()

0 commit comments

Comments
 (0)