9
9
10
10
import EATSSUKit
11
11
12
- import XCTest
13
-
14
12
import Moya
13
+ import RxBlocking
14
+ import RxSwift
15
+ import RxTest
16
+ import XCTest
15
17
16
18
final class PartnershipRouterTests : XCTestCase {
17
19
var provider : MoyaProvider < PartnershipRouter > !
20
+ var service : PartnershipService !
21
+ var disposeBag : DisposeBag !
18
22
19
23
override func setUp( ) {
20
24
super. setUp ( )
21
25
// 실제 서버에 요청을 보내기 위해 stub 기능을 제거합니다.
22
26
provider = MoyaProvider < PartnershipRouter > ( )
27
+ service = PartnershipService ( provider: provider)
28
+ disposeBag = DisposeBag ( )
29
+ }
30
+
31
+ override func tearDown( ) {
32
+ provider = nil
33
+ service = nil
34
+ disposeBag = nil
35
+ super. tearDown ( )
23
36
}
24
37
25
38
private func handleResponse( _ response: Response , for endpoint: String ) {
@@ -45,6 +58,8 @@ final class PartnershipRouterTests: XCTestCase {
45
58
print ( " \n " + String( repeating: " - " , count: 50 ) + " \n " )
46
59
}
47
60
61
+ // MARK: - Router Tests
62
+
48
63
/// 전체 제휴 목록 조회 API 테스트 (실제 서버 요청)
49
64
func testFetchAllPartnershipsResponse( ) {
50
65
let expectation = expectation ( description: " fetchAllPartnerships " )
@@ -100,22 +115,66 @@ final class PartnershipRouterTests: XCTestCase {
100
115
waitForExpectations ( timeout: 10.0 , handler: nil )
101
116
}
102
117
103
- /// 제휴 찜 등록/취소 API 테스트 (실제 서버 요청)
104
- func testTogglePartnershipFavoriteResponse( ) {
118
+ // MARK: - Service Tests
119
+
120
+ /// 전체 제휴 목록 조회 Service 테스트
121
+ func testFetchAllPartnershipsService( ) {
122
+ let expectation = expectation ( description: " 전체 제휴 목록 조회 Service " )
123
+
124
+ service. fetchAllPartnerships ( )
125
+ . subscribe (
126
+ onSuccess: { response in
127
+ // JSON 응답 출력
128
+ print ( " \n 🔍 [FetchAllPartnerships Service] Response Details: " )
129
+ if let jsonData = try ? JSONEncoder ( ) . encode ( response) ,
130
+ let prettyJSON = JSONPrettyPrinter . prettyPrintedJSONString ( from: jsonData)
131
+ {
132
+ print ( " \n 📦 Response Data Structure: " )
133
+ print ( prettyJSON)
134
+ } else {
135
+ print ( " ⚠️ JSON 변환 실패 " )
136
+ }
137
+ print ( " \n " + String( repeating: " - " , count: 50 ) + " \n " )
138
+
139
+ expectation. fulfill ( )
140
+ } ,
141
+ onFailure: { error in
142
+ XCTFail ( " Service 호출 실패: \( error. localizedDescription) " )
143
+ }
144
+ )
145
+ . disposed ( by: disposeBag)
146
+
147
+ wait ( for: [ expectation] , timeout: 10.0 )
148
+ }
149
+
150
+ /// 제휴 상세 정보 조회 Service 테스트
151
+ func testFetchPartnershipDetailService( ) {
152
+ let expectation = expectation ( description: " 제휴 상세 정보 조회 Service " )
105
153
let partnershipId = 2
106
- let expectation = expectation ( description: " togglePartnershipFavorite " )
107
154
108
- provider. request ( . togglePartnershipFavorite( partnershipId: partnershipId) ) { result in
109
- switch result {
110
- case let . success( response) :
111
- XCTAssertEqual ( response. statusCode, 200 )
112
- XCTAssertFalse ( response. data. isEmpty, " 응답 데이터가 비어있습니다. " )
113
- expectation. fulfill ( )
114
- case let . failure( error) :
115
- XCTFail ( " togglePartnershipFavorite 실패: \( error) " )
116
- }
117
- }
155
+ service. fetchPartnershipDetail ( partnershipId: partnershipId)
156
+ . subscribe (
157
+ onSuccess: { response in
158
+ // JSON 응답 출력
159
+ print ( " \n 🔍 [FetchPartnershipDetail Service] Response Details: " )
160
+ if let jsonData = try ? JSONEncoder ( ) . encode ( response) ,
161
+ let prettyJSON = JSONPrettyPrinter . prettyPrintedJSONString ( from: jsonData)
162
+ {
163
+ print ( " \n 📦 Response Data Structure: " )
164
+ print ( prettyJSON)
165
+ } else {
166
+ print ( " ⚠️ JSON 변환 실패 " )
167
+ }
168
+ print ( " \n " + String( repeating: " - " , count: 50 ) + " \n " )
169
+
170
+ expectation. fulfill ( )
171
+ } ,
172
+ onFailure: { error in
173
+ XCTFail ( " Service 호출 실패: \( error. localizedDescription) " )
174
+ }
175
+ )
176
+ . disposed ( by: disposeBag)
118
177
119
- waitForExpectations ( timeout : 10.0 , handler : nil )
178
+ wait ( for : [ expectation ] , timeout : 10.0 )
120
179
}
121
180
}
0 commit comments