From 46f0b3b1b375d71cb03ceca1a77bd87c2de7752f Mon Sep 17 00:00:00 2001 From: ened Date: Fri, 14 Jul 2023 22:00:03 +0900 Subject: [PATCH] Working on DART result unit test --- .../DART/DomesticDartMajorReport.swift | 34 +- .../DART/DomesticDartSecuritiesReport.swift | 761 ++++++++++++++---- KissMe/Tests/JSON/DebtSecurityResult.json | 1 + KissMe/Tests/JSON/DivisionResult.json | 1 + .../Tests/JSON/EntrustedSecurityResult.json | 1 + KissMe/Tests/JSON/MergerResult.json | 1 + .../JSON/StockExchangeTransferResult.json | 1 + KissMe/Tests/KissMeTests.swift | 43 +- .../Tests/New Group/EquitySecurityResult.json | 1 + .../macos/KissMe.xcodeproj/project.pbxproj | 40 +- .../xcshareddata/xcschemes/KissMe.xcscheme | 79 ++ .../xcschemes/KissMeTests.xcscheme | 54 ++ 12 files changed, 838 insertions(+), 179 deletions(-) create mode 100644 KissMe/Tests/JSON/DebtSecurityResult.json create mode 100644 KissMe/Tests/JSON/DivisionResult.json create mode 100644 KissMe/Tests/JSON/EntrustedSecurityResult.json create mode 100644 KissMe/Tests/JSON/MergerResult.json create mode 100644 KissMe/Tests/JSON/StockExchangeTransferResult.json create mode 100644 KissMe/Tests/New Group/EquitySecurityResult.json create mode 100644 projects/macos/KissMe.xcodeproj/xcshareddata/xcschemes/KissMe.xcscheme create mode 100644 projects/macos/KissMe.xcodeproj/xcshareddata/xcschemes/KissMeTests.xcscheme diff --git a/KissMe/Sources/Domestic/DART/DomesticDartMajorReport.swift b/KissMe/Sources/Domestic/DART/DomesticDartMajorReport.swift index b0bc2f8..49e4225 100644 --- a/KissMe/Sources/Domestic/DART/DomesticDartMajorReport.swift +++ b/KissMe/Sources/Domestic/DART/DomesticDartMajorReport.swift @@ -1200,16 +1200,25 @@ extension DomesticDart { /// 회사명 public let corporationName: String /// 상장예정주식 종류ㆍ수(주)(보통주식) + public let listingCommonStockQuantity: String /// 상장예정주식 종류ㆍ수(주)(기타주식) + public let listingEtcStockQuantity: String /// 발행주식 총수(주)(보통주식) + public let issuedTotalCommonStock: String /// 발행주식 총수(주)(기타주식) + public let issuedTotalEtcStock: String /// 공모방법(신주발행 (주)) + public let publicOfferingMethod_IssuedNewStock: String /// 공모방법(구주매출 (주)) + public let publicOfferingMethod_OldStockSales: String /// 자금조달(신주발행) 목적 + public let financingPurpose_IssuedNewStock: String /// 상장증권(원주상장 (주)) + public let listingStock_OriginalListing: String /// 상장증권(DR상장 (주)) + public let listingStock_DRListing: String /// 상장거래소(소재국가) - + public let listingExchangeNation: String /// 해외상장목적 public let listingPurpose: String /// 상장예정일자 @@ -1227,18 +1236,17 @@ extension DomesticDart { case receiptNo = "rcept_no" case marketType = "corp_cls" case corporationCode = "corp_code" - case corporationName = "corp_name" - - case = "lstprstk_ostk_cnt" - case = "lstprstk_estk_cnt" - case = "tisstk_ostk" - case = "tisstk_estk" - case = "psmth_nstk_sl" - case = "psmth_ostk_sl" - case = "fdpp" - case = "lststk_orlst" - case = "lststk_drlst" - case = "lstex_nt" + case corporationName = "corp_name" + case listingCommonStockQuantity = "lstprstk_ostk_cnt" + case listingEtcStockQuantity = "lstprstk_estk_cnt" + case issuedTotalCommonStock = "tisstk_ostk" + case issuedTotalEtcStock = "tisstk_estk" + case publicOfferingMethod_IssuedNewStock = "psmth_nstk_sl" + case publicOfferingMethod_OldStockSales = "psmth_ostk_sl" + case financingPurpose_IssuedNewStock = "fdpp" + case listingStock_OriginalListing = "lststk_orlst" + case listingStock_DRListing = "lststk_drlst" + case listingExchangeNation = "lstex_nt" case listingPurpose = "lstpp" case listingScheduleDate = "lstprd" case directorateDecisionDate = "bddd" diff --git a/KissMe/Sources/Domestic/DART/DomesticDartSecuritiesReport.swift b/KissMe/Sources/Domestic/DART/DomesticDartSecuritiesReport.swift index 75e4e96..3c09f3f 100644 --- a/KissMe/Sources/Domestic/DART/DomesticDartSecuritiesReport.swift +++ b/KissMe/Sources/Domestic/DART/DomesticDartSecuritiesReport.swift @@ -12,22 +12,112 @@ extension DomesticDart { /// 증권신고서 주요정보 - 1 주식의포괄적교환·이전 /// - public struct A: DartRequest { + public struct StockExchangeTransferReqeust: DartRequest { + public typealias KResult = StockExchangeTransferResult + public var url: String { + "/api/extrRs.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } } /// 증권신고서 주요정보 - 2 합병 /// - public struct A: DartRequest { + public struct MergerRequest: DartRequest { + public typealias KResult = MergerResult + public var url: String { + "/api/mgRs.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } } /// 증권신고서 주요정보 - 3 증권예탁증권 /// - public struct A: DartRequest { + public struct EntrustedSecurityRequest: DartRequest { + public typealias KResult = EntrustedSecurityResult + public var url: String { + "/api/stkdpRs.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } } @@ -145,102 +235,177 @@ extension DomesticDart { extension DomesticDart { - public struct DebtSecurityResult: Codable { - public let result: Result + public struct StockExchangeTransferResult: Codable { + public let status: String + public let message: String + public let group: [Group] - public struct Result: Codable { - public let status: String - public let message: String - public let group: [Group] - - private enum CodingKeys: String, CodingKey { - case status - case message - case group - } + private enum CodingKeys: String, CodingKey { + case status + case message + case group } - + public struct Group: Codable { public let title: String - public let list: Item + public let list: SecuritiesReportItem public init(from decoder: Decoder) throws { let container: KeyedDecodingContainer = try decoder.container(keyedBy: CodingKeys.self) self.title = try container.decode(String.self, forKey: CodingKeys.title) switch title { - case "일반사항": () - case "인수인정보": () - case "자금의사용목적": () - case "매출인에관한사항": () + case "일반사항": + let items = try container.decode([General1Item].self, forKey: Group.CodingKeys.list) + self.list = .general1(items) + case "발행증권": + let items = try container.decode([StockItem].self, forKey: Group.CodingKeys.list) + self.list = .issuedStock(items) + case "당사회사에관한사항": + let items = try container.decode([OurCompanyItem].self, forKey: Group.CodingKeys.list) + self.list = .ourCompany(items) default: assertionFailure("Unknown title \(title)") + self.list = .general([]) } } } + } + + + public struct MergerResult: Codable { + public let status: String + public let message: String + public let group: [Group] - public enum Item: Codable { - /// 일반사항 - case general([GeneralItem]) - /// 인수인정보 - case surety([SuretyItem]) - /// 자금의사용목적 - case capitalUsePurpose([PurposeItem]) - /// 매출인에관한사항 - case salesperson([SalesPersonItem]) + private enum CodingKeys: String, CodingKey { + case status + case message + case group } - public struct GeneralItem: Codable { - /// 접수번호 - public let receiptNo: String - /// 법인구분 - public let marketType: MarketType - /// 고유번호 - public let corporationCode: String - /// 회사명 - public let corporationName: String - /// 청약기일 - /// 납입기일 - /// 청약공고일 - /// 배정공고일 - /// 배정기준일 - /// 신주인수권에 관한 사항(행사대상증권) - /// 신주인수권에 관한 사항(행사가격) - /// 신주인수권에 관한 사항(행사기간) - /// 주요사항보고서(접수번호) - } - - public struct SuretyItem: Codable { + public struct Group: Codable { + public let title: String + public let list: SecuritiesReportItem + public init(from decoder: Decoder) throws { + let container: KeyedDecodingContainer = try decoder.container(keyedBy: CodingKeys.self) + self.title = try container.decode(String.self, forKey: CodingKeys.title) + switch title { + case "일반사항": + let items = try container.decode([GeneralItem].self, forKey: Group.CodingKeys.list) + self.list = .general(items) + case "발행증권": + let items = try container.decode([StockItem].self, forKey: Group.CodingKeys.list) + self.list = .issuedStock(items) + case "당사회사에관한사항": + let items = try container.decode([OurCompanyItem].self, forKey: Group.CodingKeys.list) + self.list = .ourCompany(items) + default: + assertionFailure("Unknown title \(title)") + self.list = .general([]) + } + } } - - public struct PurposeItem: Codable { - + } + + + public struct EntrustedSecurityResult: Codable { + public let status: String + public let message: String + public let group: [Group] + + private enum CodingKeys: String, CodingKey { + case status + case message + case group } - public struct SalesPersonItem: Codable { + public struct Group: Codable { + public let title: String + public let list: SecuritiesReportItem + public init(from decoder: Decoder) throws { + let container: KeyedDecodingContainer = try decoder.container(keyedBy: CodingKeys.self) + self.title = try container.decode(String.self, forKey: CodingKeys.title) + switch title { + case "일반사항": + let items = try container.decode([GeneralItem].self, forKey: Group.CodingKeys.list) + self.list = .general(items) + case "증권의종류": + let items = try container.decode([StockKindItem].self, forKey: Group.CodingKeys.list) + self.list = .stockKind(items) + case "인수인정보": + let items = try container.decode([SuretyItem].self, forKey: Group.CodingKeys.list) + self.list = .surety(items) + case "자금의사용목적": + let items = try container.decode([PurposeItem].self, forKey: Group.CodingKeys.list) + self.list = .capitalUsePurpose(items) + case "매출인에관한사항": + let items = try container.decode([SalesPersonItem].self, forKey: Group.CodingKeys.list) + self.list = .salesperson(items) + default: + assertionFailure("Unknown title \(title)") + self.list = .general([]) + } + } + } + } + + + public struct DebtSecurityResult: Codable { + public let status: String + public let message: String + public let group: [Group] + + private enum CodingKeys: String, CodingKey { + case status + case message + case group + } + + public struct Group: Codable { + public let title: String + public let list: SecuritiesReportItem + + public init(from decoder: Decoder) throws { + let container: KeyedDecodingContainer = try decoder.container(keyedBy: CodingKeys.self) + self.title = try container.decode(String.self, forKey: CodingKeys.title) + switch title { + case "일반사항": + let items = try container.decode([GeneralItem].self, forKey: Group.CodingKeys.list) + self.list = .general(items) + case "인수인정보": + let items = try container.decode([SuretyItem].self, forKey: Group.CodingKeys.list) + self.list = .surety(items) + case "자금의사용목적": + let items = try container.decode([PurposeItem].self, forKey: Group.CodingKeys.list) + self.list = .capitalUsePurpose(items) + case "매출인에관한사항": + let items = try container.decode([SalesPersonItem].self, forKey: Group.CodingKeys.list) + self.list = .salesperson(items) + default: + assertionFailure("Unknown title \(title)") + self.list = .general([]) + } + } } } public struct EquitySecurityResult: Codable { - public let result: Result + public let status: String + public let message: String + public let group: [Group] - public struct Result: Codable { - public let status: String - public let message: String - public let group: [Group] - - private enum CodingKeys: String, CodingKey { - case status - case message - case group - } + private enum CodingKeys: String, CodingKey { + case status + case message + case group } public struct Group: Codable { public let title: String - public let list: Item + public let list: SecuritiesReportItem public init(from decoder: Decoder) throws { let container: KeyedDecodingContainer = try decoder.container(keyedBy: CodingKeys.self) @@ -266,99 +431,399 @@ extension DomesticDart { self.list = .redemptionClaim(items) default: assertionFailure("Unknown title \(title)") + self.list = .general([]) } } } - - public enum Item: Codable { - /// 일반사항 - case general([GeneralItem]) - /// 증권의종류 - case stockKind([StockKindItem]) - /// 인수인정보 - case surety([SuretyItem]) - /// 자금의사용목적 - case capitalUsePurpose([PurposeItem]) - /// 매출인에관한사항 - case salesperson([SalesPersonItem]) - /// 일반청약자환매청구권 - case redemptionClaim([ClaimItem]) - } - - public struct GeneralItem: Codable { - /// 접수번호 - public let receiptNo: String - /// 법인구분 - public let marketType: MarketType - /// 고유번호 - public let corporationCode: String - /// 회사명 - public let corporationName: String - /// 청약기일 - /// 납입기일 - /// 청약공고일 - /// 배정공고일 - /// 배정기준일 - /// 신주인수권에 관한 사항(행사대상증권) - /// 신주인수권에 관한 사항(행사가격) - /// 신주인수권에 관한 사항(행사기간) - /// 주요사항보고서(접수번호) - } - - public struct StockKindItem: Codable { - - } - - public struct SuretyItem: Codable { - - } - - public struct PurposeItem: Codable { - - } - - public struct SalesPersonItem: Codable { - - } - - public struct ClaimItem: Codable { - - } } public struct DivisionResult: Codable { - public let result: Result + public let status: String + public let message: String + public let list: [Group] - public struct Result: Codable { - public let status: String - public let message: String - public let list: [Item] - - private enum CodingKeys: String, CodingKey { - case status - case message - case list - } + private enum CodingKeys: String, CodingKey { + case status + case message + case list } - public struct Item: Codable { - /// 접수번호 - public let receiptNo: String - /// 법인구분 - public let marketType: MarketType - /// 고유번호 - public let corporationCode: String - /// 회사명 - public let corporationName: String + public struct Group: Codable { + public let title: String + public let list: SecuritiesReportItem - - private enum CodingKeys: String, CodingKey { - case receiptNo = "rcept_no" - case marketType = "corp_cls" - case corporationCode = "corp_code" - case corporationName = "corp_name" + public init(from decoder: Decoder) throws { + let container: KeyedDecodingContainer = try decoder.container(keyedBy: CodingKeys.self) + self.title = try container.decode(String.self, forKey: CodingKeys.title) + switch title { + case "일반사항": + let items = try container.decode([GeneralItem].self, forKey: Group.CodingKeys.list) + self.list = .general(items) + case "발행증권": + let items = try container.decode([StockItem].self, forKey: Group.CodingKeys.list) + self.list = .issuedStock(items) + case "당사회사에관한사항": + let items = try container.decode([OurCompanyItem].self, forKey: Group.CodingKeys.list) + self.list = .ourCompany(items) + default: + assertionFailure("Unknown title \(title)") + self.list = .general([]) + } } } } } + + +extension DomesticDart { + // MARK: Common items + + public enum SecuritiesReportItem: Codable { + /// 일반사항1 + case general1([General1Item]) + /// 일반사항2 + case general2 + /// 증권의종류 + case stockKind([StockKindItem]) + /// 인수인정보 + case surety([SuretyItem]) + /// 자금의사용목적 + case capitalUsePurpose([PurposeItem]) + /// 매출인에관한사항 + case salesperson([SalesPersonItem]) + /// 일반청약자환매청구권 + case redemptionClaim([ClaimItem]) + /// 발행증권 + case issuedStock([StockItem]) + /// 당사회사에관한사항 + case ourCompany([OurCompanyItem]) + } + + public struct General1Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 형태 + public let form: String + /// 이사회 결의일 + public let directorateDecisionDate: String + /// 계약일 + public let contractDate: String + /// 주주총회를 위한 주주확정일 + /// 승인을 위한 주주총회일 + /// 주식매수청구권 행사 기간 및 가격(시작일) + /// 주식매수청구권 행사 기간 및 가격(종료일) + /// 주식매수청구권 행사 기간 및 가격((주식매수청구가격-회사제시)) + /// 합병기일등 + /// 비율 또는 가액 + /// 외부평가기관 + /// 지급 교부금 등 + /// 주요사항보고서(접수번호) + public let reportReceiptNo: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case form = "stn" + case directorateDecisionDate = "bddd" + case contractDate = "ctrd" + case = "gmtsck_shddstd" + case = "ap_gmtsck" + case = "aprskh_pd_bgd" + case = "aprskh_pd_edd" + case = "aprskh_prc" + case = "mgdt_etc" + case = "rt_vl" + case = "exevl_int" + case = "grtmn_etc" + case reportReceiptNo = "rpt_rcpn" + } + } + + public struct GeneralItem: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 청약기일 + public let subscriptionDate: String + /// 납입기일 + public let paymentDate: String + /// 청약공고일 + public let subscriptionAnnouncementDate: String + /// 배정공고일 + public let assignmentAnnouncementDate: String + /// 배정기준일 + public let assignmentBaseDate: String + /// 신주인수권에 관한 사항(행사대상증권) + public let exerciseStock: String + /// 신주인수권에 관한 사항(행사가격) + public let exercisePrice: String + /// 신주인수권에 관한 사항(행사기간) + public let exercisePeriod: String + /// 주요사항보고서(접수번호) + public let reportReceiptNo: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case subscriptionDate = "sbd" + case paymentDate = "pymd" + case subscriptionAnnouncementDate = "sband" + case assignmentAnnouncementDate = "asand" + case assignmentBaseDate = "asstd" + case exerciseStock = "exstk" + case exercisePrice = "exprc" + case exercisePeriod = "expd" + case reportReceiptNo = "rpt_rcpn" + } + } + + public struct StockKindItem: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 증권의종류 + public let stockKind: String + /// 증권수량 + public let stockQuantity: String + /// 액면가액 + public let stockFacePrice: String + /// 모집(매출)가액 + public let salesPrice: String + /// 모집(매출)총액 + public let salesTotalAmount: String + /// 모집(매출)방법 + public let salesMethod: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case stockKind = "stksen" + case stockQuantity = "stkcnt" + case stockFacePrice = "fv" + case salesPrice = "slprc" + case salesTotalAmount = "slta" + case salesMethod = "slmthn" + } + } + + public struct SuretyItem: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 인수인구분 + public let suretySeperation: String + /// 인수인명 + public let suretyName: String + /// 증권의종류 + public let stockKind: String + /// 인수수량 + public let takeOverQuantity: String + /// 인수금액 + public let takeOverAmount: String + /// 인수대가 + public let takeOverPrice: String + /// 인수방법 + public let takeOverMethod: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case suretySeperation = "actsen" + case suretyName = "actnmn" + case stockKind = "stksen" + case takeOverQuantity = "udtcnt" + case takeOverAmount = "udtamt" + case takeOverPrice = "udtprc" + case takeOverMethod = "udtmth" + } + } + + public struct PurposeItem: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 구분 + public let seperation: String + /// 금액 + public let amount: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case seperation = "se" + case amount = "amt" + } + } + + public struct SalesPersonItem: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 보유자 + public let holder: String + /// 회사와의관계 + public let relationCompany: String + /// 매출전보유증권수 + public let beforeSalesOwnStock: String + /// 매출증권수 + public let salesStock: String + /// 매출후보유증권수 + public let afterSalesOwnStock: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case holder = "hdr" + case relationCompany = "rl_cmp" + case beforeSalesOwnStock = "bfsl_hdstk" + case salesStock = "slstk" + case afterSalesOwnStock = "atsl_hdstk" + } + } + + public struct StockItem: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 종류 + public let kind: String + /// 수량 + public let quantity: String + /// 액면가액 + public let stockFacePrice: String + /// 모집(매출)가액 + public let salesPrice: String + /// 모집(매출)총액 + public let salesTotalAmount: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case kind = "kndn" + case quantity = "cnt" + case stockFacePrice = "fv" + case salesPrice = "slprc" + case salesTotalAmount = "slta" + } + } + + public struct ClaimItem: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 부여사유 + public let grantReason: String + /// 행사가능 투자자 + public let exerciseAvailableInvestor: String + /// 부여수량 + public let grantQuantity: String + /// 행사기간 + public let exercisePeriod: String + /// 행사가격 + public let exercisePrice: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case grantReason = "grtrs" + case exerciseAvailableInvestor = "exavivr" + case grantQuantity = "grtcnt" + case exercisePeriod = "expd" + case exercisePrice = "exprc" + } + } + + public struct OurCompanyItem: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 회사명 + public let companyName: String + /// 구분 + public let seperation: String + /// 총자산 + public let totalAssets: String + /// 자본금 + public let capital: String + /// 발행주식수(주식의종류) + public let issuedStockKind: String + /// 발행주식수(주식수) + public let issuedStockQuantity: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case companyName = "cmpnm" + case seperation = "sen" + case totalAssets = "tast" + case capital = "cpt" + case issuedStockKind = "isstk_knd" + case issuedStockQuantity = "isstk_cnt" + } + } +} diff --git a/KissMe/Tests/JSON/DebtSecurityResult.json b/KissMe/Tests/JSON/DebtSecurityResult.json new file mode 100644 index 0000000..c3daf62 --- /dev/null +++ b/KissMe/Tests/JSON/DebtSecurityResult.json @@ -0,0 +1 @@ +{"status":"000","message":"정상","group":[{"title":"일반사항","list":[{"rcept_no":"20190214000140","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","sbd":"2019년 02월 20일","pymd":"2019년 02월 20일","sband":"-","asand":"-","asstd":"-","rpt_rcpn":"20190213000721","slta":"100,000,000,000","tm":"5","bdnmn":"상각형 조건부자본증권","slmth":"공모","fta":"100,000,000,000","isprc":"100,000,000,000","intr":"3.74","isrr":"3.74","rpd":"-","print_pymint":"부산은행 본점영업부","mngt_cmp":"한국증권금융","cdrt_int":"AA-(한국신용평가) / AA-(한국기업평가) / AA-(NICE신용평가)","dpcrn":"-","dpcr_amt":"-","usarn":"-","usntn":"-","wnexpl_at":"-","udtintnm":"-","grt_int":"-","grt_amt":"-","icmg_mgknd":"-","icmg_mgamt":"-","estk_exstk":"-","estk_exrt":"-","estk_exprc":"-","estk_expd":"-","drcb_at":"N","drcb_uast":"-","drcb_optknd":"-","drcb_mtd":"-"},{"rcept_no":"20190821000507","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","sbd":"2019년 08월 29일","pymd":"2019년 08월 29일","sband":"-","asand":"-","asstd":"-","rpt_rcpn":"-","slta":"100,000,000,000","tm":"6","bdnmn":"상각형 조건부자본증권","slmth":"공모","fta":"100,000,000,000","isprc":"100,000,000,000","intr":"3.20","isrr":"3.20","rpd":"-","print_pymint":"부산은행 본점영업부","mngt_cmp":"한국예탁결제원","cdrt_int":"AA-(한국신용평가) / AA-(한국기업평가) / AA-(NICE신용평가)","dpcrn":"-","dpcr_amt":"-","usarn":"-","usntn":"-","wnexpl_at":"-","udtintnm":"-","grt_int":"-","grt_amt":"-","icmg_mgknd":"-","icmg_mgamt":"-","estk_exstk":"-","estk_exrt":"-","estk_exprc":"-","estk_expd":"-","drcb_at":"N","drcb_uast":"-","drcb_optknd":"-","drcb_mtd":"-"}]},{"title":"인수인정보","list":[{"rcept_no":"20190214000140","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","stksen":"-","actsen":"대표","actnmn":"메리츠종금증권","udtcnt":"4,000,000","udtamt":"40,000,000,000","udtprc":"인수금액의 0.25%","udtmth":"총액인수","tm":"5"},{"rcept_no":"20190214000140","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","stksen":"-","actsen":"인수","actnmn":"한국투자증권","udtcnt":"2,000,000","udtamt":"20,000,000,000","udtprc":"인수금액의 0.25%","udtmth":"총액인수","tm":"5"},{"rcept_no":"20190214000140","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","stksen":"-","actsen":"인수","actnmn":"BNK투자증권","udtcnt":"3,000,000","udtamt":"30,000,000,000","udtprc":"인수금액의 0.25%","udtmth":"총액인수","tm":"5"},{"rcept_no":"20190214000140","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","stksen":"-","actsen":"인수","actnmn":"부국증권","udtcnt":"1,000,000","udtamt":"10,000,000,000","udtprc":"인수금액의 0.25%","udtmth":"총액인수","tm":"5"},{"rcept_no":"20190821000507","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","stksen":"-","actsen":"대표","actnmn":"메리츠종금증권","udtcnt":"4,000,000","udtamt":"40,000,000,000","udtprc":"인수금액의 0.20%","udtmth":"총액인수","tm":"6"},{"rcept_no":"20190821000507","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","stksen":"-","actsen":"인수","actnmn":"한국투자증권","udtcnt":"2,000,000","udtamt":"20,000,000,000","udtprc":"인수금액의 0.20%","udtmth":"총액인수","tm":"6"},{"rcept_no":"20190821000507","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","stksen":"-","actsen":"인수","actnmn":"BNK투자증권","udtcnt":"3,000,000","udtamt":"30,000,000,000","udtprc":"인수금액의 0.20%","udtmth":"총액인수","tm":"6"},{"rcept_no":"20190821000507","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","stksen":"-","actsen":"인수","actnmn":"부국증권","udtcnt":"1,000,000","udtamt":"10,000,000,000","udtprc":"인수금액의 0.20%","udtmth":"총액인수","tm":"6"}]},{"title":"자금의사용목적","list":[{"rcept_no":"20190214000140","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","se":"모집 또는 매출총액","amt":"100,000,000,000","tm":"5"},{"rcept_no":"20190214000140","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","se":"발행제비용","amt":"337,520,000","tm":"5"},{"rcept_no":"20190821000507","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","se":"모집 또는 매출총액","amt":"100,000,000,000","tm":"6"},{"rcept_no":"20190821000507","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","se":"발행제비용","amt":"309,531,000","tm":"6"}]},{"title":"매출인에관한사항","list":[{"rcept_no":"20190214000140","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","hdr":"-","rl_cmp":"-","bfsl_hdstk":"-","slstk":"-","atsl_hdstk":"-","tm":"5"},{"rcept_no":"20190214000140","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","hdr":"-","rl_cmp":"-","bfsl_hdstk":"-","slstk":"-","atsl_hdstk":"-","tm":"5"},{"rcept_no":"20190821000507","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","hdr":"-","rl_cmp":"-","bfsl_hdstk":"-","slstk":"-","atsl_hdstk":"-","tm":"6"},{"rcept_no":"20190821000507","corp_cls":"Y","corp_code":"00858364","corp_name":"BNK금융지주","hdr":"-","rl_cmp":"-","bfsl_hdstk":"-","slstk":"-","atsl_hdstk":"-","tm":"6"}]}]} diff --git a/KissMe/Tests/JSON/DivisionResult.json b/KissMe/Tests/JSON/DivisionResult.json new file mode 100644 index 0000000..df2e648 --- /dev/null +++ b/KissMe/Tests/JSON/DivisionResult.json @@ -0,0 +1 @@ +{"status":"000","message":"정상","group":[{"title":"일반사항","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","sbd":"2019년 04월 03일","pymd":"2019년 04월 03일","sband":"-","asand":"-","asstd":"-","exstk":"-","exprc":"-","expd":"-","rpt_rcpn":"20190307000677"}]},{"title":"증권의종류","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","stksen":"기명식보통주","stkcnt":"2,960,601","fv":"5,000","slprc":"5,000","slta":"14,803,005,000","slmthn":"제3자배정"}]},{"title":"인수인정보","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","stksen":"-","actsen":"-","actnmn":"-","udtcnt":"-","udtamt":"-","udtprc":"-","udtmth":"-"}]},{"title":"자금의사용목적","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","se":"재무구조 개선을 위한 제3자배정 유상증자","amt":"14,803,005,000"},{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","se":"발행제비용","amt":"13,748,623"}]},{"title":"매출인에관한사항","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","hdr":"-","rl_cmp":"-","bfsl_hdstk":"-","slstk":"-","atsl_hdstk":"-"}]},{"title":"일반청약자환매청구권","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","exprc":"-","expd":"-","grtrs":"-","exavivr":"-","grtcnt":"-"}]}]} diff --git a/KissMe/Tests/JSON/EntrustedSecurityResult.json b/KissMe/Tests/JSON/EntrustedSecurityResult.json new file mode 100644 index 0000000..835ae71 --- /dev/null +++ b/KissMe/Tests/JSON/EntrustedSecurityResult.json @@ -0,0 +1 @@ +{"status":"000","message":"정상","group":[{"title":"일반사항","list":[{"rcept_no":"20190411002251","corp_cls":"E","corp_code":"01338724","corp_name":"에스앤케이","sbd":"2019년 04월 23일 ~ 2019년 04월 24일","pymd":"2019년 04월 26일","sband":"2019년 04월 23일","asand":"2019년 04월 26일","asstd":"-","exstk":"-","exprc":"-","expd":"-","rpt_rcpn":"-"}]},{"title":"증권의종류","list":[{"rcept_no":"20190411002251","corp_cls":"E","corp_code":"01338724","corp_name":"에스앤케이","stksen":"-","stkcnt":"4,200,000","fv":"-","slprc":"30,800","slta":"129,360,000,000","slmthn":"일반공모"}]},{"title":"인수인정보","list":[{"rcept_no":"20190411002251","corp_cls":"E","corp_code":"01338724","corp_name":"에스앤케이","stksen":"-","actsen":"대표","actnmn":"NH투자증권","udtcnt":"3,780,000","udtamt":"116,424,000,000","udtprc":"1,186,720,920","udtmth":"총액인수"},{"rcept_no":"20190411002251","corp_cls":"E","corp_code":"01338724","corp_name":"에스앤케이","stksen":"-","actsen":"공동","actnmn":"미래에셋대우","udtcnt":"420,000","udtamt":"12,936,000,000","udtprc":"131,857,880","udtmth":"총액인수"}]},{"title":"자금의사용목적","list":[{"rcept_no":"20190411002251","corp_cls":"E","corp_code":"01338724","corp_name":"에스앤케이","se":"콘텐츠 개발자금","amt":"55,000,000,000"},{"rcept_no":"20190411002251","corp_cls":"E","corp_code":"01338724","corp_name":"에스앤케이","se":"게임 운영 및 마케팅","amt":"8,000,000,000"},{"rcept_no":"20190411002251","corp_cls":"E","corp_code":"01338724","corp_name":"에스앤케이","se":"투자자금","amt":"65,370,601,200"},{"rcept_no":"20190411002251","corp_cls":"E","corp_code":"01338724","corp_name":"에스앤케이","se":"발행제비용","amt":"3,487,278,800"}]},{"title":"매출인에관한사항","list":[{"rcept_no":"20190411002251","corp_cls":"E","corp_code":"01338724","corp_name":"에스앤케이","hdr":"-","rl_cmp":"-","bfsl_hdstk":"-","slstk":"-","atsl_hdstk":"-"}]}]} diff --git a/KissMe/Tests/JSON/MergerResult.json b/KissMe/Tests/JSON/MergerResult.json new file mode 100644 index 0000000..89affcc --- /dev/null +++ b/KissMe/Tests/JSON/MergerResult.json @@ -0,0 +1 @@ +{"status":"000","message":"정상","group":[{"title":"일반사항","list":[{"rcept_no":"20190402002153","corp_cls":"Y","corp_code":"00109718","corp_name":"사조대림","rpt_rcpn":"20190123000252","stn":"흡수합병","bddd":"2019년 01월 18일","ctrd":"2019년 01월 18일","gmtsck_shddstd":"2019년 03월 07일","ap_gmtsck":"2019년 04월 29일","aprskh_pd_bgd":"2019년 04월 29일","aprskh_pd_edd":"2019년 05월 20일","aprskh_prc":"(주)사조대림 : 보통주 23,728원 / 우선주 23,728원\n(주)사조해표 : 보통주 10,457원","mgdt_etc":"2019년 03월 08일 ~ 2019년 03월 12일\n2019년 04월 12일\n2019년 04월 12일 ~ 2019년 04월 26일\n2019년 04월 30일\n2019년 04월 30일\n2019년 04월 30일 ~ 2019년 05월 31일\n2019년 04월 30일 ~ 2019년 05월 31일\n2019년 06월 01일\n2019년 06월 03일\n2019년 06월 03일\n2019년 06월 03일\n2019년 06월 25일\n2019년 06월 26일","rt_vl":"(주)사조대림 보통주 : (주)사조해표 보통주 = 1 : \n0.4475518","exevl_int":"해당사항 없습니다.\n(합병 당사법인인 주식회사 사조대림과 주식회사 사조해표 모두 유가증권시장 주권상장법인이므로 자본시장과 금융투자업에 관한 법률 시행령 제176조의5 제1항 제1호에 의거하여 합병가액을 산정한 후, 이를 기초로 합병비율을 산출하였습니다.)","grtmn_etc":"합병주식의 교부와 단주 매각 지급 외에는 별도의 합병 교부금 지급은 없습니다."}]},{"title":"발행증권","list":[{"rcept_no":"20190402002153","corp_cls":"Y","corp_code":"00109718","corp_name":"사조대림","fv":"5,000","slprc":"23,743","slta":"76,070,007,756","kndn":"기명식보통주","cnt":"3,203,892"}]},{"title":"당사회사에관한사항","list":[{"rcept_no":"20190402002153","corp_cls":"Y","corp_code":"00109718","corp_name":"사조대림","cmpnm":"주식회사 사조대림","sen":"존속회사","tast":"720,876,000,000","cpt":"29,822,000,000","isstk_knd":"보통주","isstk_cnt":"5,960,575"},{"rcept_no":"20190402002153","corp_cls":"Y","corp_code":"00109718","corp_name":"사조대림","cmpnm":"주식회사 사조대림","sen":"존속회사","tast":"720,876,000,000","cpt":"29,822,000,000","isstk_knd":"우선주","isstk_cnt":"3,780"},{"rcept_no":"20190402002153","corp_cls":"Y","corp_code":"00109718","corp_name":"사조대림","cmpnm":"주식회사 사조해표","sen":"소멸회사","tast":"400,120,000,000","cpt":"35,800,000,000","isstk_knd":"보통주","isstk_cnt":"7,160,000"},{"rcept_no":"20190402002153","corp_cls":"Y","corp_code":"00109718","corp_name":"사조대림","cmpnm":"주식회사 사조해표","sen":"소멸회사","tast":"400,120,000,000","cpt":"35,800,000,000","isstk_knd":"우선주","isstk_cnt":"-"}]}]} diff --git a/KissMe/Tests/JSON/StockExchangeTransferResult.json b/KissMe/Tests/JSON/StockExchangeTransferResult.json new file mode 100644 index 0000000..8739bec --- /dev/null +++ b/KissMe/Tests/JSON/StockExchangeTransferResult.json @@ -0,0 +1 @@ +{"status":"000","message":"정상","group":[{"title":"일반사항","list":[{"rcept_no":"20190417000436","corp_cls":"Y","corp_code":"00219097","corp_name":"BGF","rpt_rcpn":"20190404001928","stn":"주식교환","bddd":"2019년 04월 04일","ctrd":"2019년 04월 05일","gmtsck_shddstd":"2019년 04월 20일","ap_gmtsck":"2019년 05월 14일","aprskh_pd_bgd":"2019년 05월 14일","aprskh_pd_edd":"2019년 06월 03일","aprskh_prc":"비지에프 : 해당사항 없음\n비지에프포스트 : \n16,855원","mgdt_etc":"\n\n2019년 04월 04일\n2019년 04월 05일\n2019년 04월 19일\n2019년 04월 19일\n2019년 04월 19일 ~ 05월 03일\n\n2019년 04월 20일 ~ 04월 26일\n2019년 05월 14일\n2019년 06월 18일\n\n2019년 07월 05일\n2019년 07월 08일\n\n\n2019년 04월 05일\n\n2019년 04월 05일\n2019년 04월 20일\n\n2019년 04월 21일 ~ 04월 23일\n2019년 04월 29일\n2019년 04월 29일 ~ 05월 14일\n2019년 05월 14일\n2019년 05월 15일\n2019년 05월 14일 ~ 06월 03일\n\n2019년 06월 14일\n\n2019년 06월 17일\n2019년 06월 18일","rt_vl":"(주)비지에프 : (주)비지에프포스트 = \n1:2.0472489","exevl_int":"이촌회계법인","grtmn_etc":"해당 사항 없음"}]},{"title":"발행증권","list":[{"rcept_no":"20190417000436","corp_cls":"Y","corp_code":"00219097","corp_name":"BGF","fv":"1,000","slprc":"8,233","slta":"3,072,580,299","kndn":"기명식보통주","cnt":"373,203"}]},{"title":"당사회사에관한사항","list":[{"rcept_no":"20190417000436","corp_cls":"Y","corp_code":"00219097","corp_name":"BGF","cmpnm":"(주)비지에프","sen":"완전모회사","tast":"1,487,846,000,000","cpt":"95,369,000,000","isstk_knd":"보통주","isstk_cnt":"95,369,179"},{"rcept_no":"20190417000436","corp_cls":"Y","corp_code":"00219097","corp_name":"BGF","cmpnm":"(주)비지에프","sen":"완전모회사","tast":"1,487,846,000,000","cpt":"95,369,000,000","isstk_knd":"-","isstk_cnt":"-"},{"rcept_no":"20190417000436","corp_cls":"Y","corp_code":"00219097","corp_name":"BGF","cmpnm":"(주)비지에프포스트","sen":"완전자회사","tast":"15,212,000,000","cpt":"443,000,000","isstk_knd":"보통주","isstk_cnt":"886,913"},{"rcept_no":"20190417000436","corp_cls":"Y","corp_code":"00219097","corp_name":"BGF","cmpnm":"(주)비지에프포스트","sen":"완전자회사","tast":"15,212,000,000","cpt":"443,000,000","isstk_knd":"-","isstk_cnt":"-"}]}]} diff --git a/KissMe/Tests/KissMeTests.swift b/KissMe/Tests/KissMeTests.swift index 6f5c18d..a76aa90 100644 --- a/KissMe/Tests/KissMeTests.swift +++ b/KissMe/Tests/KissMeTests.swift @@ -8,29 +8,44 @@ import XCTest @testable import KissMe -class KissMeTests: XCTestCase { + +class DartResult_Tests: XCTestCase { override func setUpWithError() throws { - // Put setup code here. This method is called before the invocation of each test method in the class. } override func tearDownWithError() throws { - // Put teardown code here. This method is called after the invocation of each test method in the class. } func testExample() throws { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. - // Any test you write for XCTest can be annotated as throws and async. - // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. - // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + validateJson(DomesticDart.StockExchangeTransferResult.self) + validateJson(DomesticDart.MergerResult.self) + validateJson(DomesticDart.EntrustedSecurityResult.self) + validateJson(DomesticDart.DebtSecurityResult.self) + validateJson(DomesticDart.DivisionResult.self) + validateJson(DomesticDart.EquitySecurityResult.self) } - - func testPerformanceExample() throws { - // This is an example of a performance test case. - self.measure { - // Put the code you want to measure the time of here. + + private func getMock(_ result: String) -> Data { + guard let url = Bundle(for: type(of: self)).url(forResource: result, withExtension: "json") else { + fatalError("\(result).json not found") + } + + guard let data = try? Data(contentsOf: url, options: .uncached) else { + fatalError("Cannot convert to data") + } + return data + } + + private func validateJson(_ type: T.Type) where T: Decodable { + let result = String(describing: type.self) + print("Validating... \(result)") + + let mock = getMock(result) + do { + let _ = try JSONDecoder().decode(type.self, from: mock) + } catch { + XCTAssert(false, String(describing: error)) } } - } diff --git a/KissMe/Tests/New Group/EquitySecurityResult.json b/KissMe/Tests/New Group/EquitySecurityResult.json new file mode 100644 index 0000000..df2e648 --- /dev/null +++ b/KissMe/Tests/New Group/EquitySecurityResult.json @@ -0,0 +1 @@ +{"status":"000","message":"정상","group":[{"title":"일반사항","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","sbd":"2019년 04월 03일","pymd":"2019년 04월 03일","sband":"-","asand":"-","asstd":"-","exstk":"-","exprc":"-","expd":"-","rpt_rcpn":"20190307000677"}]},{"title":"증권의종류","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","stksen":"기명식보통주","stkcnt":"2,960,601","fv":"5,000","slprc":"5,000","slta":"14,803,005,000","slmthn":"제3자배정"}]},{"title":"인수인정보","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","stksen":"-","actsen":"-","actnmn":"-","udtcnt":"-","udtamt":"-","udtprc":"-","udtmth":"-"}]},{"title":"자금의사용목적","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","se":"재무구조 개선을 위한 제3자배정 유상증자","amt":"14,803,005,000"},{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","se":"발행제비용","amt":"13,748,623"}]},{"title":"매출인에관한사항","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","hdr":"-","rl_cmp":"-","bfsl_hdstk":"-","slstk":"-","atsl_hdstk":"-"}]},{"title":"일반청약자환매청구권","list":[{"rcept_no":"20190401004959","corp_cls":"Y","corp_code":"00106395","corp_name":"금호전기","exprc":"-","expd":"-","grtrs":"-","exavivr":"-","grtcnt":"-"}]}]} diff --git a/projects/macos/KissMe.xcodeproj/project.pbxproj b/projects/macos/KissMe.xcodeproj/project.pbxproj index 29197e9..46257a6 100644 --- a/projects/macos/KissMe.xcodeproj/project.pbxproj +++ b/projects/macos/KissMe.xcodeproj/project.pbxproj @@ -52,6 +52,12 @@ 34F1900C2A41982A0068C697 /* KissIndexResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F1900B2A41982A0068C697 /* KissIndexResult.swift */; }; 34F1900F2A426D150068C697 /* ShopContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F1900E2A426D150068C697 /* ShopContext.swift */; }; 34F190112A4394EB0068C697 /* LocalContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F190102A4394EB0068C697 /* LocalContext.swift */; }; + 34F844042A609A6000152D98 /* EquitySecurityResult.json in Resources */ = {isa = PBXBuildFile; fileRef = 34F844032A609A6000152D98 /* EquitySecurityResult.json */; }; + 34F844072A61799500152D98 /* StockExchangeTransferResult.json in Resources */ = {isa = PBXBuildFile; fileRef = 34F844062A61799500152D98 /* StockExchangeTransferResult.json */; }; + 34F844092A6179D000152D98 /* MergerResult.json in Resources */ = {isa = PBXBuildFile; fileRef = 34F844082A6179D000152D98 /* MergerResult.json */; }; + 34F8440B2A6179FA00152D98 /* EntrustedSecurityResult.json in Resources */ = {isa = PBXBuildFile; fileRef = 34F8440A2A6179FA00152D98 /* EntrustedSecurityResult.json */; }; + 34F8440D2A617A2100152D98 /* DebtSecurityResult.json in Resources */ = {isa = PBXBuildFile; fileRef = 34F8440C2A617A2100152D98 /* DebtSecurityResult.json */; }; + 34F8440F2A617A3D00152D98 /* DivisionResult.json in Resources */ = {isa = PBXBuildFile; fileRef = 34F8440E2A617A3D00152D98 /* DivisionResult.json */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -111,6 +117,12 @@ 34F1900B2A41982A0068C697 /* KissIndexResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KissIndexResult.swift; sourceTree = ""; }; 34F1900E2A426D150068C697 /* ShopContext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShopContext.swift; sourceTree = ""; }; 34F190102A4394EB0068C697 /* LocalContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalContext.swift; sourceTree = ""; }; + 34F844032A609A6000152D98 /* EquitySecurityResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = EquitySecurityResult.json; path = "../New Group/EquitySecurityResult.json"; sourceTree = ""; }; + 34F844062A61799500152D98 /* StockExchangeTransferResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = StockExchangeTransferResult.json; sourceTree = ""; }; + 34F844082A6179D000152D98 /* MergerResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = MergerResult.json; sourceTree = ""; }; + 34F8440A2A6179FA00152D98 /* EntrustedSecurityResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = EntrustedSecurityResult.json; sourceTree = ""; }; + 34F8440C2A617A2100152D98 /* DebtSecurityResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = DebtSecurityResult.json; sourceTree = ""; }; + 34F8440E2A617A3D00152D98 /* DivisionResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = DivisionResult.json; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -172,6 +184,7 @@ 341F5EB92A0A80EC00962D48 /* KissMeTests */ = { isa = PBXGroup; children = ( + 34F844052A61797700152D98 /* JSON */, 341F5EBA2A0A80EC00962D48 /* KissMeTests.swift */, ); name = KissMeTests; @@ -282,6 +295,19 @@ path = Context; sourceTree = ""; }; + 34F844052A61797700152D98 /* JSON */ = { + isa = PBXGroup; + children = ( + 34F844062A61799500152D98 /* StockExchangeTransferResult.json */, + 34F844082A6179D000152D98 /* MergerResult.json */, + 34F8440A2A6179FA00152D98 /* EntrustedSecurityResult.json */, + 34F8440C2A617A2100152D98 /* DebtSecurityResult.json */, + 34F8440E2A617A3D00152D98 /* DivisionResult.json */, + 34F844032A609A6000152D98 /* EquitySecurityResult.json */, + ); + path = JSON; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -381,6 +407,12 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 34F844092A6179D000152D98 /* MergerResult.json in Resources */, + 34F8440F2A617A3D00152D98 /* DivisionResult.json in Resources */, + 34F8440B2A6179FA00152D98 /* EntrustedSecurityResult.json in Resources */, + 34F844042A609A6000152D98 /* EquitySecurityResult.json in Resources */, + 34F844072A61799500152D98 /* StockExchangeTransferResult.json in Resources */, + 34F8440D2A617A2100152D98 /* DebtSecurityResult.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -654,8 +686,8 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = NYU8YAYHF8; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; - MACOSX_DEPLOYMENT_TARGET = 13.3; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 13.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.ened.KissMeTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -675,8 +707,8 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = NYU8YAYHF8; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; - MACOSX_DEPLOYMENT_TARGET = 13.3; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MACOSX_DEPLOYMENT_TARGET = 13.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.ened.KissMeTests; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/projects/macos/KissMe.xcodeproj/xcshareddata/xcschemes/KissMe.xcscheme b/projects/macos/KissMe.xcodeproj/xcshareddata/xcschemes/KissMe.xcscheme new file mode 100644 index 0000000..54a3c75 --- /dev/null +++ b/projects/macos/KissMe.xcodeproj/xcshareddata/xcschemes/KissMe.xcscheme @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/macos/KissMe.xcodeproj/xcshareddata/xcschemes/KissMeTests.xcscheme b/projects/macos/KissMe.xcodeproj/xcshareddata/xcschemes/KissMeTests.xcscheme new file mode 100644 index 0000000..94ee490 --- /dev/null +++ b/projects/macos/KissMe.xcodeproj/xcshareddata/xcschemes/KissMeTests.xcscheme @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + +