git.iko.soy/typeable/servant
on master help sign in
Test whole list in CaptureAll client tests
d945c99Jonathan Lange
servant-client/test/Servant/ClientSpec.hs+5−4
@@ -105,7 +105,7 @@ type Api =
105 "get" :> Get '[JSON] Person
105 "get" :> Get '[JSON] Person
106 :<|> "deleteEmpty" :> DeleteNoContent '[JSON] NoContent
106 :<|> "deleteEmpty" :> DeleteNoContent '[JSON] NoContent
107 :<|> "capture" :> Capture "name" String :> Get '[JSON,FormUrlEncoded] Person
107 :<|> "capture" :> Capture "name" String :> Get '[JSON,FormUrlEncoded] Person
108− :<|> "captureAll" :> CaptureAll "names" String :> Get '[JSON] Person
108+ :<|> "captureAll" :> CaptureAll "names" String :> Get '[JSON] [Person]
109 :<|> "body" :> ReqBody '[FormUrlEncoded,JSON] Person :> Post '[JSON] Person
109 :<|> "body" :> ReqBody '[FormUrlEncoded,JSON] Person :> Post '[JSON] Person
110 :<|> "param" :> QueryParam "name" String :> Get '[FormUrlEncoded,JSON] Person
110 :<|> "param" :> QueryParam "name" String :> Get '[FormUrlEncoded,JSON] Person
111 :<|> "params" :> QueryParams "names" String :> Get '[JSON] [Person]
111 :<|> "params" :> QueryParams "names" String :> Get '[JSON] [Person]
@@ -126,7 +126,7 @@ api = Proxy
126getGet :: C.Manager -> BaseUrl -> SCR.ClientM Person
126getGet :: C.Manager -> BaseUrl -> SCR.ClientM Person
127getDeleteEmpty :: C.Manager -> BaseUrl -> SCR.ClientM NoContent
127getDeleteEmpty :: C.Manager -> BaseUrl -> SCR.ClientM NoContent
128getCapture :: String -> C.Manager -> BaseUrl -> SCR.ClientM Person
128getCapture :: String -> C.Manager -> BaseUrl -> SCR.ClientM Person
129−getCaptureAll :: [String] -> C.Manager -> BaseUrl -> SCR.ClientM Person
129+getCaptureAll :: [String] -> C.Manager -> BaseUrl -> SCR.ClientM [Person]
130getBody :: Person -> C.Manager -> BaseUrl -> SCR.ClientM Person
130getBody :: Person -> C.Manager -> BaseUrl -> SCR.ClientM Person
131getQueryParam :: Maybe String -> C.Manager -> BaseUrl -> SCR.ClientM Person
131getQueryParam :: Maybe String -> C.Manager -> BaseUrl -> SCR.ClientM Person
132getQueryParams :: [String] -> C.Manager -> BaseUrl -> SCR.ClientM [Person]
132getQueryParams :: [String] -> C.Manager -> BaseUrl -> SCR.ClientM [Person]
@@ -158,7 +158,7 @@ server = serve api (
158 return alice
158 return alice
159 :<|> return NoContent
159 :<|> return NoContent
160 :<|> (\ name -> return $ Person name 0)
160 :<|> (\ name -> return $ Person name 0)
161− :<|> (\ (name : _) -> return $ Person name 0)
161+ :<|> (\ names -> return (zipWith Person names [0..]))
162 :<|> return
162 :<|> return
163 :<|> (\ name -> case name of
163 :<|> (\ name -> case name of
164 Just "alice" -> return alice
164 Just "alice" -> return alice
@@ -255,7 +255,8 @@ sucessSpec = beforeAll (startWaiApp server) $ afterAll endWaiApp $ do
255 (left show <$> runExceptT (getCapture "Paula" manager baseUrl)) `shouldReturn` Right (Person "Paula" 0)
255 (left show <$> runExceptT (getCapture "Paula" manager baseUrl)) `shouldReturn` Right (Person "Paula" 0)
256
256
257 it "Servant.API.CaptureAll" $ \(_, baseUrl) -> do
257 it "Servant.API.CaptureAll" $ \(_, baseUrl) -> do
258+ let expected = [(Person "Paula" 0), (Person "Peta" 1)]
258− (left show <$> runExceptT (getCaptureAll ["Paula", "Peta"] manager baseUrl)) `shouldReturn` Right (Person "Paula" 0)
259+ (left show <$> runExceptT (getCaptureAll ["Paula", "Peta"] manager baseUrl)) `shouldReturn` Right expected
259
260
260 it "Servant.API.ReqBody" $ \(_, baseUrl) -> do
261 it "Servant.API.ReqBody" $ \(_, baseUrl) -> do
261 let p = Person "Clara" 42
262 let p = Person "Clara" 42