Skip to content

Commit

Permalink
tests: add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
alephao committed Sep 14, 2024
1 parent a034207 commit dca139f
Show file tree
Hide file tree
Showing 5 changed files with 221 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
fmt:
swift-format format -i -r -p Sources Package.swift Examples/Sources Examples/Package.swift
swift-format format -i -r -p Sources Tests Package.swift Examples/Sources Examples/Package.swift

.PHONY: fmt
9 changes: 8 additions & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ let package = Package(
dependencies: [
.product(name: "HTTPTypes", package: "swift-http-types")
]
)
),
.testTarget(
name: "HTTPTypesHtmxTests",
dependencies: [
"HTTPTypesHtmx",
.product(name: "HTTPTypes", package: "swift-http-types"),
]
),
]
)
65 changes: 65 additions & 0 deletions Tests/HTTPTypesHtmxTests/HtmxRequestHeadersTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import HTTPTypes
import HTTPTypesHtmx
import XCTest

final class RequestHeadersTests: XCTestCase {

func test_HTTPFieldNames() {
XCTAssertEqual(HTTPField.Name.hxBoosted.description, "HX-Boosted")
XCTAssertEqual(HTTPField.Name.hxCurrentURL.description, "HX-Current-URL")
XCTAssertEqual(HTTPField.Name.hxHistoryRestoreRequest.description, "HX-History-Restore-Request")
XCTAssertEqual(HTTPField.Name.hxPrompt.description, "HX-Prompt")
XCTAssertEqual(HTTPField.Name.hxRequest.description, "HX-Request")
XCTAssertEqual(HTTPField.Name.hxTarget.description, "HX-Target")
XCTAssertEqual(HTTPField.Name.hxTriggerName.description, "HX-Trigger-Name")
}

func test_HTTPField_Initializers() {
XCTAssertEqual(HTTPField.hxBoosted().description, "HX-Boosted: true")
XCTAssertEqual(
HTTPField.hxCurrentURL("https://example.com").description,
"HX-Current-URL: https://example.com"
)
XCTAssertEqual(
HTTPField.hxHistoryRestoreRequest().description,
"HX-History-Restore-Request: true"
)
XCTAssertEqual(HTTPField.hxPrompt("yes").description, "HX-Prompt: yes")
XCTAssertEqual(HTTPField.hxRequest().description, "HX-Request: true")
XCTAssertEqual(HTTPField.hxTarget("myDiv").description, "HX-Target: myDiv")
XCTAssertEqual(
HTTPField.hxTriggerName("myTriggerName").description,
"HX-Trigger-Name: myTriggerName"
)
}

func test_HTTPFieldsGetters_EmptyValues() {
let headers = HTTPFields()
XCTAssertFalse(headers.hxBoosted)
XCTAssertNil(headers.hxCurrentURL)
XCTAssertFalse(headers.hxHistoryRestoreRequest)
XCTAssertNil(headers.hxPrompt)
XCTAssertFalse(headers.hxRequest)
XCTAssertNil(headers.hxTarget)
XCTAssertNil(headers.hxTriggerName)
}

func test_HTTPFieldsGetters_NonEmptyValues() {
let headers = HTTPFields([
.hxBoosted(),
.hxCurrentURL("https://example.com"),
.hxHistoryRestoreRequest(),
.hxPrompt("yes"),
.hxRequest(),
.hxTarget("myDiv"),
.hxTriggerName("myTriggerName"),
])
XCTAssertTrue(headers.hxBoosted)
XCTAssertEqual(headers.hxCurrentURL, "https://example.com")
XCTAssertTrue(headers.hxHistoryRestoreRequest)
XCTAssertEqual(headers.hxPrompt, "yes")
XCTAssertTrue(headers.hxRequest)
XCTAssertEqual(headers.hxTarget, "myDiv")
XCTAssertEqual(headers.hxTriggerName, "myTriggerName")
}
}
123 changes: 123 additions & 0 deletions Tests/HTTPTypesHtmxTests/HtmxResponseHeadersTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
import HTTPTypes
import HTTPTypesHtmx
import XCTest

final class ResponseHeadersTests: XCTestCase {
func test_HTTPFieldNames() {
XCTAssertEqual(HTTPField.Name.hxLocation.description, "HX-Location")
XCTAssertEqual(HTTPField.Name.hxPushUrl.description, "HX-Push-Url")
XCTAssertEqual(HTTPField.Name.hxRedirect.description, "HX-Redirect")
XCTAssertEqual(HTTPField.Name.hxRefresh.description, "HX-Refresh")
XCTAssertEqual(HTTPField.Name.hxReplaceUrl.description, "HX-Replace-Url")
XCTAssertEqual(HTTPField.Name.hxReswap.description, "HX-Reswap")
XCTAssertEqual(HTTPField.Name.hxRetarget.description, "HX-Retarget")
XCTAssertEqual(HTTPField.Name.hxReselect.description, "HX-Reselect")
XCTAssertEqual(HTTPField.Name.hxTriggerAfterSettle.description, "HX-Trigger-After-Settle")
XCTAssertEqual(HTTPField.Name.hxTriggerAfterSwap.description, "HX-Trigger-After-Swap")
}

func test_HTTPField_Initializers() {
XCTAssertEqual(HTTPField.hxLocation("/example").description, "HX-Location: /example")
XCTAssertEqual(HTTPField.hxPushUrl(.false).description, "HX-Push-Url: false")
XCTAssertEqual(HTTPField.hxPushUrl(.url("/example")).description, "HX-Push-Url: /example")
XCTAssertEqual(HTTPField.hxRedirect("/example").description, "HX-Redirect: /example")
XCTAssertEqual(HTTPField.hxRefresh().description, "HX-Refresh: true")
XCTAssertEqual(HTTPField.hxReplaceUrl(.false).description, "HX-Replace-Url: false")
XCTAssertEqual(
HTTPField.hxReplaceUrl(.url("https://example.com")).description,
"HX-Replace-Url: https://example.com"
)
XCTAssertEqual(HTTPField.hxReswap(.innerHTML).description, "HX-Reswap: innerHTML")
XCTAssertEqual(HTTPField.hxReswap(.outerHTML).description, "HX-Reswap: outerHTML")
XCTAssertEqual(HTTPField.hxReswap(.beforebegin).description, "HX-Reswap: beforebegin")
XCTAssertEqual(HTTPField.hxReswap(.afterbegin).description, "HX-Reswap: afterbegin")
XCTAssertEqual(HTTPField.hxReswap(.beforeend).description, "HX-Reswap: beforeend")
XCTAssertEqual(HTTPField.hxReswap(.afterend).description, "HX-Reswap: afterend")
XCTAssertEqual(HTTPField.hxReswap(.delete).description, "HX-Reswap: delete")
XCTAssertEqual(HTTPField.hxReswap(.none).description, "HX-Reswap: none")
XCTAssertEqual(
HTTPField.hxReswap(.raw("raw this can be anything")).description,
"HX-Reswap: raw this can be anything"
)
XCTAssertEqual(HTTPField.hxRetarget("cssSelector").description, "HX-Retarget: cssSelector")
XCTAssertEqual(HTTPField.hxReselect("cssSelector").description, "HX-Reselect: cssSelector")
XCTAssertEqual(
HTTPField.hxTriggerAfterSettle("any value").description,
"HX-Trigger-After-Settle: any value"
)
XCTAssertEqual(
HTTPField.hxTriggerAfterSwap("any value").description,
"HX-Trigger-After-Swap: any value"
)
}

func test_HTTPFieldsGetters_EmptyValues() {
let headers = HTTPFields()
XCTAssertNil(headers.hxLocation)
XCTAssertNil(headers.hxPushUrl)
XCTAssertNil(headers.hxRedirect)
XCTAssertFalse(headers.hxRefresh)
XCTAssertNil(headers.hxReplaceUrl)
XCTAssertNil(headers.hxReswap)
XCTAssertNil(headers.hxRetarget)
XCTAssertNil(headers.hxReselect)
XCTAssertNil(headers.hxTriggerAfterSettle)
XCTAssertNil(headers.hxTriggerAfterSwap)
}

func test_HTTPFieldsGetters_NonEmptyValues() {
let headers = HTTPFields([
.hxLocation("/example"),
.hxRedirect("/example"),
.hxRefresh(),
.hxRetarget("cssSelector"),
.hxReselect("cssSelector"),
.hxTriggerAfterSettle("any value"),
.hxTriggerAfterSwap("any value"),
])
XCTAssertEqual(headers.hxLocation, "/example")
XCTAssertEqual(headers.hxRedirect, "/example")
XCTAssertTrue(headers.hxRefresh)
XCTAssertEqual(headers.hxRetarget, "cssSelector")
XCTAssertEqual(headers.hxReselect, "cssSelector")
XCTAssertEqual(headers.hxTriggerAfterSettle, "any value")
XCTAssertEqual(headers.hxTriggerAfterSwap, "any value")
}

func test_HTTPFieldsGetters_NonEmptyValues_HxPushUrl() {
let headersHxPushUrl: [(HTTPField, HxPushUrl)] = [
(HTTPField.hxPushUrl(.false), .false),
(HTTPField.hxPushUrl(.url("/example")), .url("/example")),
]
for (header, value) in headersHxPushUrl {
XCTAssertEqual(HTTPFields([header]).hxPushUrl, value)
}
}

func test_HTTPFieldsGetters_NonEmptyValues_HxReplaceUrl() {
let headersHxReplaceUrl: [(HTTPField, HxReplaceUrl)] = [
(HTTPField.hxReplaceUrl(.false), .false),
(HTTPField.hxReplaceUrl(.url("https://example.com")), .url("https://example.com")),
]
for (header, value) in headersHxReplaceUrl {
XCTAssertEqual(HTTPFields([header]).hxReplaceUrl, value)
}
}

func test_HTTPFieldsGetters_NonEmptyValues_HxReswap() {
let headersHxReswap: [(HTTPField, HxSwap)] = [
(HTTPField.hxReswap(.innerHTML), .innerHTML),
(HTTPField.hxReswap(.outerHTML), .outerHTML),
(HTTPField.hxReswap(.beforebegin), .beforebegin),
(HTTPField.hxReswap(.afterbegin), .afterbegin),
(HTTPField.hxReswap(.beforeend), .beforeend),
(HTTPField.hxReswap(.afterend), .afterend),
(HTTPField.hxReswap(.delete), .delete),
(HTTPField.hxReswap(.none), .none),
(HTTPField.hxReswap(.raw("any value")), .raw("any value")),
]
for (header, value) in headersHxReswap {
XCTAssertEqual(HTTPFields([header]).hxReswap, value)
}
}
}
24 changes: 24 additions & 0 deletions Tests/HTTPTypesHtmxTests/HxTriggerHeaderTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import HTTPTypes
import HTTPTypesHtmx
import XCTest

final class HxTriggerHeadersTests: XCTestCase {
func test_HTTPFieldNames() {
XCTAssertEqual(HTTPField.Name.hxTrigger.description, "HX-Trigger")
}

func test_HTTPField_Initializers() {
XCTAssertEqual(HTTPField.hxTrigger(id: "myId").description, "HX-Trigger: myId")
XCTAssertEqual(HTTPField.hxTrigger(event: "myEvent").description, "HX-Trigger: myEvent")
}

func test_HTTPFieldsGetters_EmptyValues() {
let headers = HTTPFields()
XCTAssertNil(headers.hxTrigger)
}

func test_HTTPFieldsGetters_NonEmptyValues() {
XCTAssertEqual(HTTPFields([.hxTrigger(id: "myId")]).hxTrigger, "myId")
XCTAssertEqual(HTTPFields([.hxTrigger(event: "myEvent")]).hxTrigger, "myEvent")
}
}

0 comments on commit dca139f

Please sign in to comment.