Skip to content

Commit

Permalink
add some basic tests
Browse files Browse the repository at this point in the history
  • Loading branch information
zth committed Dec 15, 2023
1 parent 5a2fed8 commit 134d77b
Show file tree
Hide file tree
Showing 21 changed files with 378 additions and 29 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,6 @@ jobs:
- name: Build Playground
working-directory: ./demo
run: bun run build

- name: Run tests
run: bun run test
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# master

- Create target directory if it doesn't already exist.
- Remove unused `server` in `renderConfig`.

# 0.1.0-alpha.7

Expand Down
2 changes: 1 addition & 1 deletion demo/src/UserPage.res
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ let make = (~innerContent, ~userId) => {
</div>
<ResX.ErrorBoundary
renderError={err => {
<div> {H.string("Oops, failed! " ++ err->Exn.message->Option.getWithDefault("-"))} </div>
<div> {H.string("Oops, failed! " ++ err->Exn.message->Option.getOr("-"))} </div>
}}>
<FailingComponent />
</ResX.ErrorBoundary>
Expand Down
20 changes: 10 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"scripts": {
"res:build": "rescript",
"res:clean": "rescript clean",
"res:dev": "rescript build -w"
"res:dev": "rescript build -w",
"test": "bun test test/*.test.js"
},
"keywords": [
"rescript"
Expand All @@ -19,15 +20,15 @@
"author": "Gabriel Nordeborn",
"license": "MIT",
"peerDependencies": {
"rescript": ">=11.0.0-rc.5",
"@rescript/core": ">=0.5.0",
"rescript": ">=11.0.0-rc.7",
"@rescript/core": ">=0.6.0",
"vite": ">=4.4.11",
"rescript-bun": ">=0.1.0"
},
"devDependencies": {
"@rescript/core": "^0.5.0",
"@rescript/core": "^0.6.0",
"fast-glob": "^3.3.1",
"rescript": "11.0.0-rc.5",
"rescript": "11.0.0-rc.7",
"rescript-bun": "0.1.0"
},
"dependencies": {
Expand Down
12 changes: 9 additions & 3 deletions rescript.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@
"namespace": "res-x",
"uncurried": true,
"name": "rescript-x",
"sources": {
"dir": "src"
},
"sources": [
{
"dir": "src"
},
{
"dir": "test",
"type": "dev"
}
],
"package-specs": {
"module": "commonjs",
"in-source": true
Expand Down
2 changes: 0 additions & 2 deletions src/FormUtils.js

This file was deleted.

Empty file removed src/FormUtils.res
Empty file.
2 changes: 1 addition & 1 deletion src/Handlers.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions src/Handlers.res
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,14 @@ let defaultHeaders = [("Content-Type", "text/html")]

type handleRequestConfig<'ctx> = {
request: Request.t,
server: Bun.Server.t,
render: renderConfig<'ctx> => promise<Jsx.element>,
setupHeaders?: unit => Headers.t,
renderTitle?: array<string> => string,
experimental_stream?: bool,
}

let handleRequest = async (t, {request, render, ?experimental_stream} as config) => {
let stream = experimental_stream->Option.getWithDefault(false)
let stream = experimental_stream->Option.getOr(false)

let url = request->Request.url->URL.make
let pathname = url->URL.pathname
Expand Down
1 change: 0 additions & 1 deletion src/Handlers.resi
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ let useContext: t<'ctx> => renderConfig<'ctx>

type handleRequestConfig<'ctx> = {
request: Request.t,
server: Bun.Server.t,
render: renderConfig<'ctx> => promise<Jsx.element>,
setupHeaders?: unit => Headers.t,
renderTitle?: array<string> => string,
Expand Down
2 changes: 1 addition & 1 deletion src/Htmx.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/Htmx.res
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ module Headers: {
let make: Dict.t<string> => t
} = {
type t = string
let make = (dict: Dict.t<string>) => dict->JSON.stringifyAny->Option.getWithDefault("{}")
let make = (dict: Dict.t<string>) => dict->JSON.stringifyAny->Option.getOr("{}")
}

type hxSyncStrategyQueueModifier =
Expand Down
14 changes: 14 additions & 0 deletions src/RenderInHead.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/RenderInHead.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@react.component
let make = (~children, ~requestController) => {
requestController->RequestController.appendToHead(children)
H.null
}
2 changes: 1 addition & 1 deletion src/RequestController.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/RequestController.res
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ let redirect = (t, url, ~status=?) => {
let getCurrentStatus = t => t.status
let getCurrentRedirect = t => t.redirect
let getTitleSegments = t => t.titleSegments->Array.copy
let getDocHeader = t => t.docHeader->Option.getWithDefault("")
let getDocHeader = t => t.docHeader->Option.getOr("")
let setDocHeader = (t, docHeader) => t.docHeader = docHeader
let appendToHead = (t, content) => t.headContent->Array.push(content)
let appendTitleSegment = (t, segment) => t.titleSegments->Array.push(segment)
Expand Down
46 changes: 46 additions & 0 deletions test/Rendering.test.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 54 additions & 0 deletions test/Rendering.test.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
open Test
open TestUtils

describe("rendering", () => {
testAsync("render in head", async () => {
let text = await getContentInBody(
renderConfig => {
<Html>
<RenderInHead requestController=renderConfig.requestController>
<meta name="test" content="test" />
</RenderInHead>
</Html>
},
)

expect(
text,
)->Expect.toBe(`<!DOCTYPE html><html><head><meta content="test" name="test"/></head><body></body></html>`)
})

describe("DOCTYPE", () => {
testAsync(
"change DOCTYPE",
async () => {
let text = await getContentInBody(
renderConfig => {
renderConfig.requestController->RequestController.setDocHeader(
Some(`<?xml version="1.0" encoding="UTF-8"?>`),
)
H.null
},
)

expect(text)->Expect.toBe(`<?xml version="1.0" encoding="UTF-8"?>`)
},
)

testAsync(
"remove DOCTYPE",
async () => {
let text = await getContentInBody(
renderConfig => {
renderConfig.requestController->RequestController.setDocHeader(None)
<Html>
<div />
</Html>
},
)

expect(text)->Expect.toBe(`<html><head></head><body><div></div></body></html>`)
},
)
})
})
Loading

0 comments on commit 134d77b

Please sign in to comment.