Project updates from Template (#1)
This PR contains the latest updates from the generic Website template, which have been added while working on #loud-amsterdam. Reviewed-on: #1 Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
This commit was merged in pull request #1.
This commit is contained in:
+43
@@ -25,6 +25,9 @@ struct LocalizationMiddlewareTests {
|
||||
router.get("language") { _, context in
|
||||
context.language
|
||||
}
|
||||
router.get("de/language") { _, context in
|
||||
context.language
|
||||
}
|
||||
|
||||
return router
|
||||
}())
|
||||
@@ -69,4 +72,44 @@ struct LocalizationMiddlewareTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
func `honours a supported lang query parameter over the header`() async throws {
|
||||
try await app.test(.router) { client in
|
||||
try await client.execute(
|
||||
uri: "/language?lang=de",
|
||||
method: .get,
|
||||
headers: [.acceptLanguage: "en"]
|
||||
) { response in
|
||||
#expect(String(buffer: response.body) == "de")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// A language's whole URL prefix answers in its language, so its not-found page does too.
|
||||
@Test
|
||||
func `pins the language a leading path segment names over the header`() async throws {
|
||||
try await app.test(.router) { client in
|
||||
try await client.execute(
|
||||
uri: "/de/language",
|
||||
method: .get,
|
||||
headers: [.acceptLanguage: "en"]
|
||||
) { response in
|
||||
#expect(String(buffer: response.body) == "de")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
func `negotiates the header when the lang query parameter is unsupported`() async throws {
|
||||
try await app.test(.router) { client in
|
||||
try await client.execute(
|
||||
uri: "/language?lang=fr",
|
||||
method: .get,
|
||||
headers: [.acceptLanguage: "de"]
|
||||
) { response in
|
||||
#expect(String(buffer: response.body) == "de")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user