From a1de3b085897262d40c1dfec37c30162b31e3418 Mon Sep 17 00:00:00 2001 From: Alex Deem Date: Sat, 8 Jun 2024 23:06:02 +1000 Subject: [PATCH] Sort variables provided as a dictionary for stability --- Sources/ScreamURITemplate/VariableValue.swift | 2 +- Tests/ScreamURITemplateTests/TestModels.swift | 13 +------------ Tests/ScreamURITemplateTests/Tests.swift | 2 +- 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/Sources/ScreamURITemplate/VariableValue.swift b/Sources/ScreamURITemplate/VariableValue.swift index dd94079..a2f05b6 100644 --- a/Sources/ScreamURITemplate/VariableValue.swift +++ b/Sources/ScreamURITemplate/VariableValue.swift @@ -50,7 +50,7 @@ extension KeyValuePairs: VariableValue { extension [String: StringVariableValue]: VariableValue { public func asTypedVariableValue() -> TypedVariableValue? { - .associativeArray(map { ($0, $1.asStringVariableValue()) }) + .associativeArray(map { ($0, $1.asStringVariableValue()) }.sorted { $0.0 < $1.0 }) } } diff --git a/Tests/ScreamURITemplateTests/TestModels.swift b/Tests/ScreamURITemplateTests/TestModels.swift index 7b7feab..b3ac1d2 100644 --- a/Tests/ScreamURITemplateTests/TestModels.swift +++ b/Tests/ScreamURITemplateTests/TestModels.swift @@ -84,18 +84,7 @@ extension TestCase { let expansionsData = data[1] switch expansionsData { case let .string(string): - // HACK: ensure the tests support alternate ordering for dictionary explode tests - // A PR has been raised to add support for the alternate ordering https://github.com/uri-templates/uritemplate-test/pull/58 - switch string { - case "key1,val1%2F,key2,val2%2F": - acceptableExpansions = [string, "key2,val2%2F,key1,val1%2F"] - case "#key1,val1%2F,key2,val2%2F": - acceptableExpansions = [string, "#key2,val2%2F,key1,val1%2F"] - case "key1,val1%252F,key2,val2%252F": - acceptableExpansions = [string, "key2,val2%252F,key1,val1%252F"] - default: - acceptableExpansions = [string] - } + acceptableExpansions = [string] shouldFail = false case let .array(array): acceptableExpansions = array.compactMap { value in diff --git a/Tests/ScreamURITemplateTests/Tests.swift b/Tests/ScreamURITemplateTests/Tests.swift index 0bf88bb..c84c6e4 100644 --- a/Tests/ScreamURITemplateTests/Tests.swift +++ b/Tests/ScreamURITemplateTests/Tests.swift @@ -50,7 +50,7 @@ class Tests: XCTestCase { ] as KeyValuePairs, ] let urlString = try template.process(variables: variables) - XCTAssertTrue(["https://api.example.com/a,42/SwiftScream?a=A&b=42&b2=42&a2=A", "https://api.example.com/a,42/SwiftScream?b=42&a=A&b2=42&a2=A"].contains(urlString)) + XCTAssertEqual("https://api.example.com/a,42/SwiftScream?a=A&b=42&b2=42&a2=A", urlString) } func testSendable() {