From deea5cb893c40cc468fcfc5ec3ff340d21f8275a 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 e54cedf..87447d5 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 b5f1ce0..f40ce83 100644 --- a/Tests/ScreamURITemplateTests/TestModels.swift +++ b/Tests/ScreamURITemplateTests/TestModels.swift @@ -89,18 +89,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 7ed25f4..e8be956 100644 --- a/Tests/ScreamURITemplateTests/Tests.swift +++ b/Tests/ScreamURITemplateTests/Tests.swift @@ -40,7 +40,7 @@ class Tests: XCTestCase { ] as KeyValuePairs, ] let urlString = try template.process(variables: variables) - XCTAssertTrue(["https://api.example.com/SwiftScream?a=A&b=42&b2=42&a2=A", "https://api.example.com/SwiftScream?b=42&a=A&b2=42&a2=A"].contains(urlString)) + XCTAssertEqual("https://api.example.com/SwiftScream?a=A&b=42&b2=42&a2=A", urlString) } func testSendable() {