Skip to content

Commit 8f17668

Browse files
committed
chore update unit test
1 parent 7e82089 commit 8f17668

File tree

7 files changed

+35
-26
lines changed

7 files changed

+35
-26
lines changed

Sources/SwiftThemoviedbWrap/NetworkManager/NetworkWrapProvider.swift

+4-6
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,15 @@ import SwiftNetworkWrap
1111

1212
protocol TmdbNetworkWrapProvider {
1313
var session: URLSession { get }
14-
var baseURL: String { get }
15-
var bgQueue: DispatchQueue { get }
14+
var baseURL: URL { get }
1615

1716
func request<Response: Decodable>(_ target: TmdbApiTarget, httpCodes: HTTPCodes) -> AnyPublisher<Response, Error>
1817
}
1918
extension TmdbNetworkWrapProvider {
2019
func request<Response>(_ target: any TmdbApiTarget,
2120
httpCodes: HTTPCodes = .success) -> AnyPublisher<Response, any Error> where Response: Decodable {
2221
do {
23-
let urlRequest = try target.buildURLRequest(baseURL: baseURL)
22+
let urlRequest = try target.buildURLRequest()
2423
return session.dataTaskPublisher(for: urlRequest)
2524
.requestJSON(httpCodes: .success)
2625
.eraseToAnyPublisher()
@@ -33,11 +32,10 @@ extension TmdbNetworkWrapProvider {
3332

3433
class DefaultTmdbNetworkWrapProvider: TmdbNetworkWrapProvider {
3534
var session: URLSession
36-
var baseURL: String
37-
var bgQueue: DispatchQueue = DispatchQueue(label: "themoviedb_queue")
35+
var baseURL: URL
3836

3937
init(session: URLSession = .configuredURLSession(),
40-
baseURL: String = "https://api.themoviedb.org/3") {
38+
baseURL: URL = URL(string: "https://api.themoviedb.org/3")!) {
4139
self.session = session
4240
self.baseURL = baseURL
4341
}

Sources/SwiftThemoviedbWrap/Targets/MoviesTarget.swift

+8-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ public struct NetworkWrapConfigurationTmdb {
1717
}
1818

1919
protocol TmdbApiTarget: ApiTarget {
20-
func buildURLRequest(baseURL: String) throws -> URLRequest
20+
var baseURL: URL { get }
21+
22+
func buildURLRequest() throws -> URLRequest
2123
}
2224

2325
extension TmdbApiTarget {
@@ -32,8 +34,8 @@ extension TmdbApiTarget {
3234
return nil
3335
}
3436

35-
func buildURLRequest(baseURL: String = "https://api.themoviedb.org/3") throws -> URLRequest {
36-
guard var urlComponents = URLComponents(string: baseURL) else {
37+
func buildURLRequest() throws -> URLRequest {
38+
guard var urlComponents = URLComponents(url: baseURL, resolvingAgainstBaseURL: false) else {
3739
throw ApiError.invalidUrl
3840
}
3941
urlComponents.path = path
@@ -60,6 +62,9 @@ struct MoviesTarget: TmdbApiTarget {
6062
return _queryParameters?.merging(queryDefault, uniquingKeysWith: { _,new in new })
6163
}
6264

65+
var baseURL: URL {
66+
URL(string: "https://api.themoviedb.org/3")!
67+
}
6368
var path: String
6469
var method: String = "GET"
6570
var _queryParameters: [String: Any]?

Sources/SwiftThemoviedbWrap/Targets/SearchTarget.swift

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ struct SearchTarget: TmdbApiTarget {
1313
_queryParameters
1414
}
1515

16+
var baseURL: URL {
17+
URL(string: "https://api.themoviedb.org/3")!
18+
}
1619
var path: String
1720
let method: String
1821
var _queryParameters: [String: Any]?

Tests/SwiftThemoviedbWrapTests/NetworkMocking/MockedResponse.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ extension RequestMocking.MockedResponse {
3232
headers: [String: String] = ["Content-Type": "application/json"],
3333
loadingTime: TimeInterval = 0.1
3434
) throws where T: Encodable {
35-
guard let url = try target.buildURLRequest(baseURL: baseURL).url else {
35+
guard let url = try target.buildURLRequest().url else {
3636
throw Error.failedMockCreation
3737
}
3838
self.url = url
@@ -51,7 +51,7 @@ extension RequestMocking.MockedResponse {
5151
init(target: TmdbApiTarget,
5252
baseURL: String,
5353
customResponse: URLResponse) throws {
54-
guard let url = try target.buildURLRequest(baseURL: baseURL).url else {
54+
guard let url = try target.buildURLRequest().url else {
5555
throw Error.failedMockCreation
5656
}
5757
self.url = url

Tests/SwiftThemoviedbWrapTests/Providers/Mocks/Mocks.swift

+5-6
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,13 @@ import SwiftNetworkWrap
1111
@testable import SwiftThemoviedbWrap
1212

1313
final class MockTmdbNetworkWrapProvider: TmdbNetworkWrapProvider {
14-
var baseURL: String
15-
var session: URLSession
16-
var bgQueue: DispatchQueue = DispatchQueue(label: "themoviedb_testing")
14+
let session: URLSession
15+
let baseURL: URL
1716

18-
init(baseURL: String = "https://testing.com",
19-
session: URLSession = .mockedResponseOnly) {
20-
self.baseURL = baseURL
17+
init(session: URLSession = .mockedResponseOnly,
18+
baseURL: URL = URL(string: "https://testing.com")!) {
2119
self.session = session
20+
self.baseURL = baseURL
2221
}
2322
}
2423

Tests/SwiftThemoviedbWrapTests/Providers/MoviesDataProvider.swift

+5-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ final class MoviesDataProviderTests: XCTestCase {
4242
XCTAssertEqual(moviesDTO.results.first!.title, "Mock Movie 1")
4343
expectation.fulfill()
4444
case .failure(let error):
45+
if let error = error as? TmdbApiError {
46+
print("xxxxx")
47+
}
4548
XCTFail("should not reach here, Error: \(error.localizedDescription)")
4649
}
4750
}
@@ -96,10 +99,11 @@ final class MoviesDataProviderTests: XCTestCase {
9699
}
97100

98101
private func mock<T>(_ target: TmdbApiTarget,
102+
baseURL: String = "https://testing.com",
99103
result: Result<T, Swift.Error>,
100104
httpCode: HTTPCode = 200) throws where T: Encodable {
101105
let mock = try Mock(target: target,
102-
baseURL: "https://testing.com",
106+
baseURL: baseURL,
103107
result: result,
104108
httpCode: httpCode)
105109
RequestMocking.add(mock: mock)

Tests/SwiftThemoviedbWrapTests/Target/MoviesTargetTests.swift

+8-8
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,19 @@ final class MoviesTargetTests: XCTestCase {
2020
additionalResponse: ["videos", "credits"])
2121
let sut = MoviesTarget.detail(request: request)
2222

23-
let urlRequest = try sut.buildURLRequest(baseURL: "https://test.com")
23+
let urlRequest = try sut.buildURLRequest()
2424
let actualURL: URL = urlRequest.url!.absoluteURL
25-
let expectedURL = URL(string: "https://test.com/movie/1234?append_to_response=videos,credits&api_key=key&language=en-US")!
25+
let expectedURL = URL(string: "https://api.themoviedb.org/movie/1234?append_to_response=videos,credits&api_key=key&language=en-US")!
2626
assertEqualURLs(actualURL, expectedURL)
2727
}
2828

2929
func test_getTodayTrendingList() throws {
3030
let request = DefaultMoviesRequest(page: 2)
3131
let sut = MoviesTarget.todayTrending(request: request)
3232

33-
let urlRequest = try sut.urlRequest(baseURL: "https://test.com")
33+
let urlRequest = try sut.buildURLRequest()
3434
let actualURL: URL = urlRequest.url!.absoluteURL
35-
let expectedURL: URL = URL(string: "https://test.com/trending/movie/day?page=2&api_key=key&language=en-US")!
35+
let expectedURL: URL = URL(string: "https://api.themoviedb.org/trending/movie/day?page=2&api_key=key&language=en-US")!
3636

3737
assertEqualURLs(actualURL, expectedURL)
3838
}
@@ -41,9 +41,9 @@ final class MoviesTargetTests: XCTestCase {
4141
let request = DefaultMoviesRequest(page: 2)
4242
let sut = MoviesTarget.weekTrending(request: request)
4343

44-
let urlRequest = try sut.urlRequest(baseURL: "https://test.com")
44+
let urlRequest = try sut.buildURLRequest()
4545
let actualURL: URL = urlRequest.url!.absoluteURL
46-
let expectedURL: URL = URL(string: "https://test.com/trending/movie/week?page=2&api_key=key&language=en-US")!
46+
let expectedURL: URL = URL(string: "https://api.themoviedb.org/trending/movie/week?page=2&api_key=key&language=en-US")!
4747

4848
assertEqualURLs(actualURL, expectedURL)
4949
}
@@ -52,12 +52,12 @@ final class MoviesTargetTests: XCTestCase {
5252
let request = MovieReviewsRequest(movieId: 111, page: 2)
5353
let sut = MoviesTarget.reviews(request: request)
5454

55-
let urlRequest = try sut.urlRequest(baseURL: "https://test.com")
55+
let urlRequest = try sut.buildURLRequest()
5656
guard let actualURL = urlRequest.url?.absoluteURL else {
5757
XCTFail("URL request is nil")
5858
return
5959
}
60-
let expectedURL = URL(string: "https://test.com/movie/111/reviews?page=2&api_key=key&language=en-US")!
60+
let expectedURL = URL(string: "https://api.themoviedb.org/movie/111/reviews?page=2&api_key=key&language=en-US")!
6161

6262
assertEqualURLs(actualURL, expectedURL)
6363
}

0 commit comments

Comments
 (0)