git.iko.soy/rowtype-yoga/purescript-yoga-fetch-om
on main help sign in
67 lines 1.9 kB history raw
1module SplitParams.Spec where
3import Prelude
5import Test.Spec (Spec, describe, it)
6import Test.Spec.Assertions (shouldEqual)
7import Yoga.Fetch.Om.SplitParams (splitParams)
9spec :: Spec Unit
10spec = describe "splitParams" do
11 it "splits path and query params" do
12 let
13 allParams = { id: 42, limit: 10, offset: 20 }
14 result =
15 splitParams allParams
16 :: { path :: { id :: Int }
17 , query :: { limit :: Int, offset :: Int }
18 , body :: {}
19 }
20 result.path.id `shouldEqual` 42
21 result.query.limit `shouldEqual` 10
22 result.query.offset `shouldEqual` 20
23 result.body `shouldEqual` {}
25 it "splits path and body params" do
26 let
27 allParams = { id: 42, name: "Alice", email: "alice@example.com" }
28 result =
29 splitParams allParams
30 :: { path :: { id :: Int }
31 , query :: {}
32 , body :: { name :: String, email :: String }
33 }
34 result.path.id `shouldEqual` 42
35 result.query `shouldEqual` {}
36 result.body.name `shouldEqual` "Alice"
37 result.body.email `shouldEqual` "alice@example.com"
39 it "splits all three param types" do
40 let
41 allParams =
42 { id: 42
43 , limit: 10
44 , name: "Bob"
45 }
46 result =
47 splitParams allParams
48 :: { path :: { id :: Int }
49 , query :: { limit :: Int }
50 , body :: { name :: String }
51 }
52 result.path.id `shouldEqual` 42
53 result.query.limit `shouldEqual` 10
54 result.body.name `shouldEqual` "Bob"
56 it "handles empty splits" do
57 let
58 allParams = { id: 42 }
59 result =
60 splitParams allParams
61 :: { path :: { id :: Int }
62 , query :: {}
63 , body :: {}
64 }
65 result.path.id `shouldEqual` 42
66 result.query `shouldEqual` {}
67 result.body `shouldEqual` {}