Files
postgrest/test/Feature/StructureSpec.hs
T
2014-10-07 11:56:54 -07:00

77 lines
2.2 KiB
Haskell

{-# LANGUAGE OverloadedStrings, QuasiQuotes #-}
module Feature.StructureSpec where
import Test.Hspec
import Test.Hspec.Wai
import Test.Hspec.Wai.JSON
import SpecHelper
import Network.HTTP.Types
spec :: Spec
spec = around appWithFixture $ do
describe "GET /" $
it "lists views in schema" $
get "/" `shouldRespondWith`
[json| [
{"schema":"1","name":"auto_incrementing_pk","insertable":true}
, {"schema":"1","name":"compound_pk","insertable":true}
, {"schema":"1","name":"items","insertable":true}
, {"schema":"1","name":"menagerie","insertable":true}
, {"schema":"1","name":"no_pk","insertable":true}
, {"schema":"1","name":"simple_pk","insertable":true}
] |]
{matchStatus = 200}
describe "Table info" $
it "is available with OPTIONS verb" $
request methodOptions "/auto_incrementing_pk" [] "" `shouldRespondWith` [json|
{
"pkey":["id"],
"columns":[
{
"precision": 32,
"updatable": true,
"schema": "1",
"name": "id",
"type": "integer",
"maxLen": null,
"nullable": false,
"position": 1,
"default": "nextval('\"1\".auto_incrementing_pk_id_seq'::regclass)"
}, {
"precision": null,
"updatable": true,
"schema": "1",
"name": "nullable_string",
"type": "character varying",
"maxLen": null,
"nullable": true,
"position": 2,
"default": null
}, {
"precision": null,
"updatable": true,
"schema": "1",
"name": "non_nullable_string",
"type": "character varying",
"maxLen": null,
"nullable": false,
"position": 3,
"default": null
}, {
"precision": null,
"updatable": true,
"schema": "1",
"name": "inserted_at",
"type": "timestamp with time zone",
"maxLen": null,
"nullable": true,
"position": 4,
"default": "now()"
}
]
}
|]