@@ -27,22 +27,37 @@ final class MainVIewModelTests: XCTestCase {
2727
2828
2929 func testToViewModel( ) {
30- let mockData = [ ShoeData ( shoesId: 1 , brandName: " Nike " , productName: " Nike Air Force 1 '07 Low White " , transName: " 나이키 에어포스 1 '07 로우 화이트 " , image : " https://kream-phinf.pstatic.net/MjAyMjA2MTVfMjYw/MDAxNjU1MjgzNjk2Mzk3.gh8n5rs7p-pWVqzIhNh7yj_KdyjLFBeJr9QbsDumoFEg.KdvPfvgBYmjm7MKKhcbIEQIP6FGeuof_GnmcDUgrvyAg.PNG/a_baa1ccea3726495badba419dfede63f9.png?type=m " , price : " 128,000 " ) ]
30+ let mockData = [ ShoesDetailData ( shoesId: 1 , brandName: " Nike " , productName: " Nike Air Force 1 '07 Low White " , transName: " 나이키 에어포스 1 '07 로우 화이트 " , price : " 128,000 " , productImg : [ " https://kream-phinf.pstatic.net/MjAyMjA2MTVfMjYw/MDAxNjU1MjgzNjk2Mzk3.gh8n5rs7p-pWVqzIhNh7yj_KdyjLFBeJr9QbsDumoFEg.KdvPfvgBYmjm7MKKhcbIEQIP6FGeuof_GnmcDUgrvyAg.PNG/a_baa1ccea3726495badba419dfede63f9.png?type=m " ] ) ]
3131
3232 viewModel. toViewModel ( mockData)
3333
34- XCTAssertEqual ( viewModel. shoesData ? . count, mockData. count)
35- XCTAssertEqual ( viewModel. shoesData ? . count, mockData. count)
36- XCTAssertEqual ( viewModel. shoesData ? . first? . shoesId, mockData. first? . shoesId)
37- XCTAssertEqual ( viewModel. shoesData ? . first? . brandName , mockData. first? . brandName)
38- XCTAssertEqual ( viewModel. shoesData ? . first? . productName, mockData. first? . productName)
39- XCTAssertEqual ( viewModel. shoesData ? . first? . transName, mockData. first? . transName)
40- XCTAssertEqual ( viewModel. shoesData ? . first? . image , mockData. first? . image )
41- XCTAssertEqual ( viewModel. shoesData ? . first? . price, mockData. first? . price)
34+ XCTAssertEqual ( viewModel. shoesDetailData ? . count, mockData. count)
35+ XCTAssertEqual ( viewModel. shoesDetailData ? . count, mockData. count)
36+ XCTAssertEqual ( viewModel. shoesDetailData ? . first? . shoesId, mockData. first? . shoesId)
37+ XCTAssertEqual ( viewModel. shoesDetailData ? . first? . brandName , mockData. first? . brandName)
38+ XCTAssertEqual ( viewModel. shoesDetailData ? . first? . productName, mockData. first? . productName)
39+ XCTAssertEqual ( viewModel. shoesDetailData ? . first? . transName, mockData. first? . transName)
40+ XCTAssertEqual ( viewModel. shoesDetailData ? . first? . productImg , mockData. first? . productImg )
41+ XCTAssertEqual ( viewModel. shoesDetailData ? . first? . price, mockData. first? . price)
4242
4343 }
4444
4545
46+ func testToDetailViewModel( ) {
47+ let mockData = [ ShoesDetailData ( shoesId: 1 , brandName: " Nike " , productName: " Nike Air Force 1 '07 Low White " , transName: " 나이키 에어포스 1 '07 로우 화이트 " , price: " 128,000 " , productImg: [ " https://kream-phinf.pstatic.net/MjAyMTA5MDlfMTM2/MDAxNjMxMTY4NDgxNjYy.zbjY9wciksaYT7sUz-OdfVfMijT4zlN3ZrP1_FKTIkAg.q1tp-NTfS052i0hTqbYKf1mhtxZZBWEcEm9LUCfevhkg.PNG/a_bd87be02eddb460798690f5d082217c5.png?type=l " , " https://kream-phinf.pstatic.net/MjAyMTA5MDlfMTE5/MDAxNjMxMTY4NDg0Mzk1.h6CHbDt3cSsoyGumXlzNmhTa8iNJvWcIzhzimNzNF2Ig.Gh0liKYzQEZ-r3l3gFAX0DBPT9bt2FuywdbiPK1-LJ0g.PNG/a_32465a09d3214e2e8cba85d1bc62ee04.png?type=l " , " https://kream-phinf.pstatic.net/MjAyMTA5MDlfMTU5/MDAxNjMxMTY4NDg2Nzg3.Kf0RTLiVjQ2dxE8Z-ZgFPWDQGhJiQKt-LjVvrCo5NS4g.VPstVD7BiTciaEAwad02Z2i85fJvls4-zKUkaQHyElUg.PNG/a_dca56f9e768f4b028640d578f4703575.png?type=l " ] ) ]
48+
49+ viewModel. toViewModel ( mockData)
50+
51+ XCTAssertEqual ( viewModel. shoesDetailData? . count, mockData. count)
52+ XCTAssertEqual ( viewModel. shoesDetailData? . count, mockData. count)
53+ XCTAssertEqual ( viewModel. shoesDetailData? . first? . shoesId, mockData. first? . shoesId)
54+ XCTAssertEqual ( viewModel. shoesDetailData? . first? . brandName , mockData. first? . brandName)
55+ XCTAssertEqual ( viewModel. shoesDetailData? . first? . productName, mockData. first? . productName)
56+ XCTAssertEqual ( viewModel. shoesDetailData? . first? . transName, mockData. first? . transName)
57+ XCTAssertEqual ( viewModel. shoesDetailData? . first? . productImg, mockData. first? . productImg)
58+ XCTAssertEqual ( viewModel. shoesDetailData? . first? . price, mockData. first? . price)
59+ }
60+
4661
4762 func test_신발APIRequestTest( ) {
4863 let expectation = XCTestExpectation ( description: " api 통신 테스트 " )
@@ -56,9 +71,28 @@ final class MainVIewModelTests: XCTestCase {
5671 break
5772 }
5873 } , receiveValue: { model in
59- let data = try ? model. map ( ShoesModel . self)
74+ let data = try ? model. map ( ShoesDetailData . self)
75+ XCTAssertNotNil ( data, " shoesModel maping error " )
76+ self . viewModel. toViewModel ( [ data!] )
77+ expectation. fulfill ( )
78+ } )
79+ }
80+
81+ func test_신발상세APIRequestTest( ) {
82+ let expectation = XCTestExpectation ( description: " api 통신 테스트 " )
83+ viewModel. shoesCancellable = MoyaProvider < MainDetailService > ( ) . requestPublisher ( . mainShoesDetail( trans_name: " 나이키 에어포스 1 '07 로우 화이트 " ) )
84+ . compactMap { $0 }
85+ . sink ( receiveCompletion: { result in
86+ switch result {
87+ case . failure( let error) :
88+ XCTFail ( " api 통신 에러 : \( error. localizedDescription) " )
89+ case . finished:
90+ break
91+ }
92+ } , receiveValue: { model in
93+ let data = try ? model. map ( ShoesDetailData . self)
6094 XCTAssertNotNil ( data, " shoesModel maping error " )
61- self . viewModel. toViewModel ( data!)
95+ self . viewModel. toDetailViewModel ( [ data!] )
6296 expectation. fulfill ( )
6397 } )
6498 }
0 commit comments