72 lines
2.0 KiB
Haskell
72 lines
2.0 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":"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" $
|
|
-- {{{ big json object
|
|
request methodOptions "/auto_incrementing_pk" "" `shouldRespondWith` [json|
|
|
{
|
|
"pkey":["id"],
|
|
"columns":{
|
|
"inserted_at":{
|
|
"precision":null,
|
|
"updatable":true,
|
|
"schema":"1",
|
|
"name":"inserted_at",
|
|
"type":"timestamp with time zone",
|
|
"maxLen":null,
|
|
"nullable":true,
|
|
"position":4},
|
|
"id":{
|
|
"precision":32,
|
|
"updatable":true,
|
|
"schema":"1",
|
|
"name":"id",
|
|
"type":"integer",
|
|
"maxLen":null,
|
|
"nullable":false,
|
|
"position":1},
|
|
"non_nullable_string":{
|
|
"precision":null,
|
|
"updatable":true,
|
|
"schema":"1",
|
|
"name":"non_nullable_string",
|
|
"type":"character varying",
|
|
"maxLen":null,
|
|
"nullable":false,
|
|
"position":3},
|
|
"nullable_string":{
|
|
"precision":null,
|
|
"updatable":true,
|
|
"schema":"1",
|
|
"name":"nullable_string",
|
|
"type":"character varying",
|
|
"maxLen":null,
|
|
"nullable":true,
|
|
"position":2}}
|
|
}
|
|
|]
|
|
-- }}}
|