@@ -30,15 +30,57 @@ class YApiObjectTest: XCTestCase {
3030 // Put the code you want to measure the time of here.
3131 }
3232 }
33- ///
33+ /// 测试将 Raw 数据解析按照路径解析 YapiObject
3434 func testYapiRawTransformObjedt( ) -> Void {
3535 let rawStr =
3636 """
37+ { " type " : " object " , " title " : " empty object " , " properties " :{ " person " :{ " type " : " object " , " properties " :{ " name " :{ " type " : " string " , " description " : " 姓名 " , " mock " :{ " mock " : " 小明 " }}, " age " :{ " type " : " integer " , " description " : " 年龄 " , " mock " :{ " mock " : " 12 " }}, " school " :{ " type " : " object " , " properties " :{ " address " :{ " type " : " string " , " mock " :{ " mock " : " xx街道xx号 " }, " description " : " 学校地址 " }, " schoolName " :{ " type " : " string " , " description " : " 学校名字 " }}, " required " :[ " address " , " schoolName " ], " description " : " 学校 " }, " likes " :{ " type " : " array " , " items " :{ " type " : " string " }, " description " : " 好友 " }, " teachers " :{ " type " : " array " , " items " :{ " type " : " object " , " properties " :{ " name " :{ " type " : " string " , " description " : " 老师名字 " }, " subject " :{ " type " : " string " , " description " : " 科目 " , " mock " :{ " mock " : " 语文 " }}, " isMale " :{ " type " : " boolean " , " description " : " 是否为男 " }}, " required " :[ " name " , " subject " , " isMale " ]}}}, " required " :[ " name " , " age " , " school " , " likes " , " teachers " ], " description " : " 个人信息详情 " }}, " required " :[ " person " ]}
38+
3739 """
3840 let helper = YApiHelper ( paste: rawStr)
39- helper. aimPath = " data "
41+ helper. aimPath = " person "
4042 let yapiObject = helper. compleObject
41- XCTAssertNil ( yapiObject)
43+ XCTAssertNotNil ( yapiObject)
44+ }
45+
46+ /// yapi 基本类型(object, array, string, integer, number, boolean)兼容测试
47+ func testYapiBaseType( ) {
48+ let rawStr = """
49+ { " type " : " object " , " title " : " empty object " , " properties " :{ " data " :{ " type " : " object " , " properties " :{ " stringValue " :{ " type " : " string " , " description " : " 字符串类型 " , " mock " :{ " mock " : " 字符串 " }}, " integerValue " :{ " type " : " integer " , " description " : " 整型数据类型 " , " mock " :{ " mock " : " 20 " }}, " numberValue " :{ " type " : " number " , " description " : " 浮点数据类型 " , " mock " :{ " mock " : " 15.5 " }}, " booleanValue " :{ " type " : " boolean " , " description " : " 布尔类型 " , " mock " :{ " mock " : " true " }}, " arrayValue " :{ " type " : " array " , " items " :{ " type " : " string " , " mock " :{ " mock " : " 数组字符串 " }}, " description " : " 数组类型 " }}, " required " :[ " stringValue " , " integerValue " , " numberValue " , " booleanValue " , " arrayValue " ]}, " code " :{ " type " : " string " , " mock " :{ " mock " : " 200 " }}}, " required " :[ " data " , " code " ]}
50+ """
51+ let yapiObjc = helper ( raw: rawStr)
52+ XCTAssertNotNil ( yapiObjc)
53+ let stringObjct = yapiObjc!. childs. filter { $0. key == " stringValue " }
54+ XCTAssert ( stringObjct. last!. type. swiftType ( ) == " String " )
55+ let integerObjct = yapiObjc!. childs. filter { $0. key == " integerValue " }
56+ XCTAssert ( integerObjct. last!. type. swiftType ( ) == " Int " )
57+ let numberObjct = yapiObjc!. childs. filter { $0. key == " numberValue " }
58+ XCTAssert ( numberObjct. last!. type. swiftType ( ) == " Double " )
59+ let booleanObjct = yapiObjc!. childs. filter { $0. key == " booleanValue " }
60+ XCTAssert ( booleanObjct. last!. type. swiftType ( ) == " Bool " )
61+ }
62+
63+ /// 测试type 为非 Java基本类型,包含不规范基本数据(String, Integer)和其他自定义类型(Date, Other)
64+ func testOtherType( ) -> Void {
65+ let rawStr = """
66+ { " type " : " object " , " title " : " empty object " , " properties " :{ " data " :{ " type " : " object " , " properties " :{ " StringValue " :{ " type " : " String " , " description " : " 字符串类型 " , " mock " :{ " mock " : " 字符串 " }}, " IntegerValue " :{ " type " : " Integer " , " description " : " 整型数据类型 " , " mock " :{ " mock " : " 20 " }}, " DateValue " :{ " type " : " Date " , " description " : " 日期类型 " , " mock " :{ " mock " : " 2020年08月01日 " }}, " OtherValue " :{ " type " : " Other " , " description " : " 其他任意类型 " , " mock " :{ " mock " : " any " }}, " arrayValue " :{ " type " : " array " , " items " :{ " type " : " string " , " mock " :{ " mock " : " 数组字符串 " }}, " description " : " 数组类型 " }}, " required " :[ " stringValue " , " integerValue " , " numberValue " , " booleanValue " , " arrayValue " ]}, " code " :{ " type " : " string " , " mock " :{ " mock " : " 200 " }}}, " required " :[ " data " , " code " ]}
67+ """
68+ let yapiObjc = helper ( raw: rawStr)
69+ XCTAssertNotNil ( yapiObjc)
70+ let stringObjct = yapiObjc!. childs. filter { $0. key == " StringValue " }
71+ XCTAssert ( stringObjct. last!. type. swiftType ( ) == " String " )
72+ let integerObjct = yapiObjc!. childs. filter { $0. key == " IntegerValue " }
73+ XCTAssert ( integerObjct. last!. type. swiftType ( ) == " Int " )
74+ let numberObjct = yapiObjc!. childs. filter { $0. key == " DateValue " }
75+ XCTAssert ( numberObjct. last!. type. swiftType ( ) == " <#Undefined#> " && numberObjct. last!. typeRaw == " Date " )
76+ let booleanObjct = yapiObjc!. childs. filter { $0. key == " OtherValue " }
77+ XCTAssert ( booleanObjct. last!. type. swiftType ( ) == " <#Undefined#> " && booleanObjct. last!. typeRaw == " Other " )
78+ }
79+
80+ func helper( raw: String ) -> YApiObject ? {
81+ let helper = YApiHelper ( paste: raw)
82+ helper. aimPath = " data "
83+ return helper. pathObject
4284 }
4385
4486}
0 commit comments