Skip to content

Commit d245ac3

Browse files
authored
Make sure file extension mocks are matching correctly (#95)
* Make sure file extension mocks are matching correctly * Remove whitespace
1 parent 05b097b commit d245ac3

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

MockerTests/MockTests.swift

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//
2+
// MockTests.swift
3+
//
4+
//
5+
// Created by Antoine van der Lee on 21/04/2021.
6+
//
7+
8+
import Foundation
9+
import XCTest
10+
@testable import Mocker
11+
12+
final class MockTests: XCTestCase {
13+
override func setUp() {
14+
super.setUp()
15+
Mocker.mode = .optout
16+
}
17+
18+
override func tearDown() {
19+
Mocker.removeAll()
20+
Mocker.mode = .optout
21+
super.tearDown()
22+
}
23+
24+
/// It should match two file extension mocks correctly.
25+
func testFileExtensionMocksComparing() {
26+
let mock200 = Mock(fileExtensions: "png", dataType: .imagePNG, statusCode: 200, data: [.put: Data()])
27+
let secondMock200 = Mock(fileExtensions: "png", dataType: .imagePNG, statusCode: 200, data: [.put: Data()])
28+
let mock400 = Mock(fileExtensions: "png", dataType: .imagePNG, statusCode: 400, data: [.put: Data()])
29+
let mockJPEG = Mock(fileExtensions: "jpeg", dataType: .imagePNG, statusCode: 200, data: [.put: Data()])
30+
31+
XCTAssertEqual(mock200, secondMock200)
32+
XCTAssertEqual(mock200, mock400)
33+
XCTAssertNotEqual(mock200, mockJPEG)
34+
}
35+
}

Package.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ let package = Package(name: "Mocker",
2020
],
2121
targets: [
2222
// dev .target(name: "DangerDependencies", dependencies: ["Danger", "WeTransferPRLinter"], path: "Submodules/WeTransfer-iOS-CI/Danger-Swift", sources: ["DangerFakeSource.swift"]),
23-
.target(name: "Mocker", path: "Sources")
23+
.target(name: "Mocker", path: "Sources"),
24+
.testTarget(name: "MockerTests", dependencies: ["Mocker"], path: "MockerTests")
2425
],
2526
swiftLanguageVersions: [.v5])

Sources/Mock.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,12 @@ public struct Mock: Equatable {
205205
public static func == (lhs: Mock, rhs: Mock) -> Bool {
206206
let lhsHTTPMethods: [String] = lhs.data.keys.compactMap { $0.rawValue }
207207
let rhsHTTPMethods: [String] = rhs.data.keys.compactMap { $0.rawValue }
208+
209+
if let lhsFileExtensions = lhs.fileExtensions, let rhsFileExtensions = rhs.fileExtensions, (!lhsFileExtensions.isEmpty || !rhsFileExtensions.isEmpty) {
210+
/// The mocks are targeting file extensions specifically, check on those.
211+
return lhsFileExtensions == rhsFileExtensions && lhsHTTPMethods == rhsHTTPMethods
212+
}
213+
208214
return lhs.request.url!.absoluteString == rhs.request.url!.absoluteString && lhsHTTPMethods == rhsHTTPMethods
209215
}
210216
}

0 commit comments

Comments
 (0)