@@ -312,9 +312,7 @@ describe('/tables', async () => {
312
312
type : 'int2' ,
313
313
default_value : 42 ,
314
314
is_nullable : false ,
315
- comment : 'foo' ,
316
- // Currently no way to test these:
317
- // is_unique: true
315
+ comment : 'foo'
318
316
} )
319
317
320
318
const { data : columns } = await axios . get ( `${ URL } /columns` )
@@ -356,6 +354,33 @@ describe('/tables', async () => {
356
354
await axios . delete ( `${ URL } /columns/${ newTable . id } .1` )
357
355
await axios . delete ( `${ URL } /tables/${ newTable . id } ` )
358
356
} )
357
+ it ( 'POST /columns with unique constraint' , async ( ) => {
358
+ const { data : newTable } = await axios . post ( `${ URL } /tables` , { name : 'foo' } )
359
+ await axios . post ( `${ URL } /columns` , {
360
+ table_id : newTable . id ,
361
+ name : 'bar' ,
362
+ type : 'int2' ,
363
+ is_unique : true ,
364
+ } )
365
+
366
+ const { data : uniqueColumns } = await axios . post (
367
+ `${ URL } /query` ,
368
+ { query : `
369
+ SELECT a.attname
370
+ FROM pg_index i
371
+ JOIN pg_constraint c ON c.conindid = i.indexrelid
372
+ JOIN pg_attribute a ON a.attrelid = i.indrelid
373
+ AND a.attnum = ANY(i.indkey)
374
+ WHERE i.indrelid = '${ newTable . name } '::regclass
375
+ AND i.indisunique;
376
+ ` }
377
+ )
378
+ assert . equal ( uniqueColumns . length , 1 )
379
+ assert . equal ( uniqueColumns [ 0 ] . attname , 'bar' )
380
+
381
+ await axios . delete ( `${ URL } /columns/${ newTable . id } .1` )
382
+ await axios . delete ( `${ URL } /tables/${ newTable . id } ` )
383
+ } )
359
384
it ( 'POST /columns array type' , async ( ) => {
360
385
const { data : newTable } = await axios . post ( `${ URL } /tables` , { name : 'a' } )
361
386
await axios . post ( `${ URL } /columns` , {
0 commit comments