Allow patch requests

Fixes #87
This commit is contained in:
Joe Nelson
2014-11-06 23:49:29 -08:00
parent 76ea92bfce
commit 58adb5e828
4 changed files with 52 additions and 11 deletions
+31 -3
View File
@@ -13,6 +13,7 @@ import qualified Data.Aeson as JSON
import Data.Maybe (fromJust)
import Network.HTTP.Types.Header
import Network.HTTP.Types
import Control.Monad (replicateM_)
import TestTypes(IncPK(..), CompoundPK(..))
@@ -152,7 +153,7 @@ spec = around appWithFixture $ do
matchHeaders = []
}
describe "Patching record" $
describe "Patching record" $ do
context "to unkonwn uri" $
it "gives a 404" $
@@ -160,5 +161,32 @@ spec = around appWithFixture $ do
[json| { "real": false } |]
`shouldRespondWith` 404
-- context "on an empty table" $
-- it "succeeds
context "on an empty table" $
it "succeeds with no effect" $
request methodPatch "/simple_pk" []
[json| { "extra":20 } |]
`shouldRespondWith` 204
context "in a nonempty table" $ do
it "can update a single item" $ do
g <- get "/items?id=eq.42"
liftIO $ simpleHeaders g
`shouldSatisfy` matchHeader "Content-Range" "\\*/0"
request methodPatch "/items?id=eq.1" []
[json| { "id":42 } |]
`shouldRespondWith` 204
g' <- get "/items?id=eq.42"
liftIO $ simpleHeaders g'
`shouldSatisfy` matchHeader "Content-Range" "0-0/1"
it "can update multiple items" $ do
replicateM_ 10 $ post "/auto_incrementing_pk"
[json| { non_nullable_string: "a" } |]
replicateM_ 10 $ post "/auto_incrementing_pk"
[json| { non_nullable_string: "b" } |]
_ <- request methodPatch
"/auto_incrementing_pk?non_nullable_string=eq.a" []
[json| { non_nullable_string: "c" } |]
g <- get "/auto_incrementing_pk?non_nullable_string=eq.c"
liftIO $ simpleHeaders g
`shouldSatisfy` matchHeader "Content-Range" "0-9/10"
-1
View File
@@ -15,7 +15,6 @@ import Network.HTTP.Types.Status (ok200)
spec :: Spec
spec = let
dbErrApp conn _ res = do
putStrLn "In fake app"
_ <- insert "1" "items" (SqlRow []) conn
runRaw conn "select 1/0"
_ <- insert "1" "items" (SqlRow []) conn