From ebba2113c3a774302428354e166fd0a4a63f87f9 Mon Sep 17 00:00:00 2001 From: Chewie69006 <1726004+Chewie69006@users.noreply.github.com> Date: Mon, 4 Sep 2023 13:36:40 +0200 Subject: [PATCH 1/2] Sort HTTP methods to remove randomness from keys --- Sources/Mocker/Mock.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/Mocker/Mock.swift b/Sources/Mocker/Mock.swift index e84a9d5..46a1a4b 100644 --- a/Sources/Mocker/Mock.swift +++ b/Sources/Mocker/Mock.swift @@ -320,8 +320,8 @@ public struct Mock: Equatable { } public static func == (lhs: Mock, rhs: Mock) -> Bool { - let lhsHTTPMethods: [String] = lhs.data.keys.compactMap { $0.rawValue } - let rhsHTTPMethods: [String] = rhs.data.keys.compactMap { $0.rawValue } + let lhsHTTPMethods: [String] = lhs.data.keys.compactMap { $0.rawValue }.sorted() + let rhsHTTPMethods: [String] = rhs.data.keys.compactMap { $0.rawValue }.sorted() if let lhsFileExtensions = lhs.fileExtensions, let rhsFileExtensions = rhs.fileExtensions, (!lhsFileExtensions.isEmpty || !rhsFileExtensions.isEmpty) { /// The mocks are targeting file extensions specifically, check on those. From e08d07a249f1f582b617c74b0677d92edb8cef44 Mon Sep 17 00:00:00 2001 From: David Rodrigues Date: Tue, 5 Sep 2023 15:09:40 +0200 Subject: [PATCH 2/2] Add test to ensure comparison is valid for Mock --- Tests/MockerTests/MockTests.swift | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Tests/MockerTests/MockTests.swift b/Tests/MockerTests/MockTests.swift index 631540a..944ba55 100644 --- a/Tests/MockerTests/MockTests.swift +++ b/Tests/MockerTests/MockTests.swift @@ -32,4 +32,13 @@ final class MockTests: XCTestCase { XCTAssertEqual(mock200, mock400) XCTAssertNotEqual(mock200, mockJPEG) } + + func testMethodsComparing() { + let url = URL(string: "https://mocked.wetransfer.com")! + + let methods = [Mock.HTTPMethod.options, .get, .head, .post, .put, .patch, .delete, .trace, .connect] + let first = Mock(url: url, statusCode: 200, data: Dictionary(uniqueKeysWithValues: methods.shuffled().map { ($0, Data()) })) + let second = Mock(url: url, statusCode: 200, data: Dictionary(uniqueKeysWithValues: methods.shuffled().map { ($0, Data()) })) + XCTAssertEqual(first, second) + } }