Skip to content

Commit 2b5653e

Browse files
committed
Added test helpers
1 parent 4565e95 commit 2b5653e

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

src/Bucketchain/Test.purs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
module Bucketchain.Test where
2+
3+
import Prelude
4+
5+
import Data.Either (Either(..))
6+
import Data.Options (Options)
7+
import Effect.Aff (Aff, makeAff, nonCanceler)
8+
import Node.Encoding (Encoding(..))
9+
import Node.HTTP.Client as C
10+
import Node.Stream (end, writeString)
11+
12+
-- | A request test helper.
13+
request :: Options C.RequestOptions -> Aff C.Response
14+
request opts = makeAff \cb -> do
15+
let cb' res = cb $ Right res
16+
req <- C.request opts cb'
17+
end (C.requestAsStream req) $ pure unit
18+
pure nonCanceler
19+
20+
-- | A request test helper with request body.
21+
requestWithBody :: Options C.RequestOptions -> String -> Aff C.Response
22+
requestWithBody opts body = makeAff \cb -> do
23+
let cb' res = cb $ Right res
24+
req <- C.request opts cb'
25+
let writable = C.requestAsStream req
26+
void $ writeString writable UTF8 body $ pure unit
27+
end writable $ pure unit
28+
pure nonCanceler

test/Main.purs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module Test.Main where
33
import Prelude
44

55
import Bucketchain.Stream (convertToString)
6+
import Bucketchain.Test (request, requestWithBody)
67
import Data.Either (Either(..))
78
import Data.Maybe (Maybe(..))
89
import Data.Options ((:=))
@@ -17,7 +18,6 @@ import Node.FS.Stream (createReadStream)
1718
import Node.HTTP (Server, listen, close)
1819
import Node.HTTP.Client as C
1920
import Test.Assert (assert)
20-
import Test.Util as Util
2121

2222
main :: Effect Unit
2323
main = do
@@ -43,7 +43,7 @@ handleAff s _ = close s $ pure unit
4343

4444
testMiddleware1 :: Aff Unit
4545
testMiddleware1 = do
46-
res <- Util.request opts
46+
res <- request opts
4747
body <- convertToString $ C.responseAsStream res
4848
liftEffect do
4949
assert $ body == "Hello world :)"
@@ -58,7 +58,7 @@ testMiddleware1 = do
5858

5959
testMiddleware2 :: Aff Unit
6060
testMiddleware2 = do
61-
res <- Util.requestWithBody opts "TEST BODY"
61+
res <- requestWithBody opts "TEST BODY"
6262
body <- convertToString $ C.responseAsStream res
6363
liftEffect do
6464
assert $ body == "TEST BODY"
@@ -73,7 +73,7 @@ testMiddleware2 = do
7373

7474
testMiddleware3 :: Aff Unit
7575
testMiddleware3 = do
76-
res <- Util.request opts
76+
res <- request opts
7777
imgStream <- liftEffect $ createReadStream "example/300x300.png"
7878
expected <- convertToString imgStream
7979
body <- convertToString $ C.responseAsStream res
@@ -90,7 +90,7 @@ testMiddleware3 = do
9090

9191
testMiddleware4 :: Aff Unit
9292
testMiddleware4 = do
93-
res <- Util.request opts
93+
res <- request opts
9494
liftEffect $ assert $ C.statusCode res == 500
9595
where
9696
opts = C.port := 3000
@@ -99,7 +99,7 @@ testMiddleware4 = do
9999

100100
test404 :: Aff Unit
101101
test404 = do
102-
res <- Util.request opts
102+
res <- request opts
103103
liftEffect $ assert $ C.statusCode res == 404
104104
where
105105
opts = C.port := 3000

0 commit comments

Comments
 (0)