Working on DART result unit test

This commit is contained in:
2023-07-14 22:00:03 +09:00
parent 7b8bed18ce
commit 46f0b3b1b3
12 changed files with 838 additions and 179 deletions

View File

@@ -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"

View File

@@ -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<CodingKeys> = 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<CodingKeys> = 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<CodingKeys> = 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<CodingKeys> = 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<CodingKeys> = 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<CodingKeys> = 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"
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -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":"-"}]}]}

View File

@@ -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":"-"}]}]}

View File

@@ -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":"-"}]}]}

View File

@@ -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":"-"}]}]}

View File

@@ -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<T>(_ 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))
}
}
}

View File

@@ -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":"-"}]}]}

View File

@@ -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 = "<group>"; };
34F1900E2A426D150068C697 /* ShopContext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShopContext.swift; sourceTree = "<group>"; };
34F190102A4394EB0068C697 /* LocalContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalContext.swift; sourceTree = "<group>"; };
34F844032A609A6000152D98 /* EquitySecurityResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = EquitySecurityResult.json; path = "../New Group/EquitySecurityResult.json"; sourceTree = "<group>"; };
34F844062A61799500152D98 /* StockExchangeTransferResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = StockExchangeTransferResult.json; sourceTree = "<group>"; };
34F844082A6179D000152D98 /* MergerResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = MergerResult.json; sourceTree = "<group>"; };
34F8440A2A6179FA00152D98 /* EntrustedSecurityResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = EntrustedSecurityResult.json; sourceTree = "<group>"; };
34F8440C2A617A2100152D98 /* DebtSecurityResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = DebtSecurityResult.json; sourceTree = "<group>"; };
34F8440E2A617A3D00152D98 /* DivisionResult.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = DivisionResult.json; sourceTree = "<group>"; };
/* 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 = "<group>";
};
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 = "<group>";
};
/* 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)";

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "341F5EAA2A0A80EC00962D48"
BuildableName = "KissMe.framework"
BlueprintName = "KissMe"
ReferencedContainer = "container:KissMe.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "341F5EB42A0A80EC00962D48"
BuildableName = "KissMeTests.xctest"
BlueprintName = "KissMeTests"
ReferencedContainer = "container:KissMe.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "341F5EAA2A0A80EC00962D48"
BuildableName = "KissMe.framework"
BlueprintName = "KissMe"
ReferencedContainer = "container:KissMe.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "341F5EB42A0A80EC00962D48"
BuildableName = "KissMeTests.xctest"
BlueprintName = "KissMeTests"
ReferencedContainer = "container:KissMe.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>