@@ -1051,4 +1051,234 @@ class TVFTests {
10511051 assertEquals(" 665cd321870f1e416dc61bac60010614d7a0892328feec468c57540b8ba1a99e" , result.firstOrNull())
10521052 println (" Polkadot transaction hash: ${result.firstOrNull()} " )
10531053 }
1054+
1055+ // Wallet SendCalls Tests
1056+ @Test
1057+ fun `collectTxHashes should parse wallet_sendCalls with complete wallet data` () {
1058+ // Arrange
1059+ val rpcMethod = " wallet_sendCalls"
1060+ val rpcResult = """
1061+ {
1062+ "id": "0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930",
1063+ "capabilities": {
1064+ "caip345": {
1065+ "caip2": "eip155:1",
1066+ "transactionHashes": ["0xabc123", "0xdef456"]
1067+ }
1068+ }
1069+ }
1070+ """ .trimIndent()
1071+
1072+ // Act
1073+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1074+
1075+ // Assert
1076+ assertNotNull(result)
1077+ assertEquals(3 , result!! .size)
1078+ assertEquals(" 0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930" , result[0 ])
1079+ assertEquals(" 0xabc123" , result[1 ])
1080+ assertEquals(" 0xdef456" , result[2 ])
1081+ println (" Wallet sendCalls result: ${result} " )
1082+ }
1083+
1084+ @Test
1085+ fun `collectTxHashes should parse wallet_sendCalls with null capabilities` () {
1086+ // Arrange
1087+ val rpcMethod = " wallet_sendCalls"
1088+ val rpcResult = """
1089+ {
1090+ "id": "0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930"
1091+ }
1092+ """ .trimIndent()
1093+
1094+ // Act
1095+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1096+
1097+ // Assert
1098+ assertNotNull(result)
1099+ assertEquals(1 , result!! .size)
1100+ assertEquals(" 0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930" , result.first())
1101+ println (" Wallet sendCalls result with null capabilities: ${result.first()} " )
1102+ }
1103+
1104+ @Test
1105+ fun `collectTxHashes should parse wallet_sendCalls with null caip345` () {
1106+ // Arrange
1107+ val rpcMethod = " wallet_sendCalls"
1108+ val rpcResult = """
1109+ {
1110+ "id": "0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930",
1111+ "capabilities": {}
1112+ }
1113+ """ .trimIndent()
1114+
1115+ // Act
1116+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1117+
1118+ // Assert
1119+ assertNotNull(result)
1120+ assertEquals(1 , result!! .size)
1121+ assertEquals(" 0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930" , result.first())
1122+ println (" Wallet sendCalls result with null caip345: ${result.first()} " )
1123+ }
1124+
1125+ @Test
1126+ fun `collectTxHashes should parse wallet_sendCalls with null caip2` () {
1127+ // Arrange
1128+ val rpcMethod = " wallet_sendCalls"
1129+ val rpcResult = """
1130+ {
1131+ "id": "0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930",
1132+ "capabilities": {
1133+ "caip345": {
1134+ "transactionHashes": ["0xabc123", "0xdef456"]
1135+ }
1136+ }
1137+ }
1138+ """ .trimIndent()
1139+
1140+ // Act
1141+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1142+
1143+ // Assert
1144+ assertNotNull(result)
1145+ assertEquals(3 , result!! .size)
1146+ assertEquals(" 0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930" , result[0 ])
1147+ assertEquals(" 0xabc123" , result[1 ])
1148+ assertEquals(" 0xdef456" , result[2 ])
1149+ println (" Wallet sendCalls result with null caip2: ${result} " )
1150+ }
1151+
1152+ @Test
1153+ fun `collectTxHashes should parse wallet_sendCalls with null transactionHashes` () {
1154+ // Arrange
1155+ val rpcMethod = " wallet_sendCalls"
1156+ val rpcResult = """
1157+ {
1158+ "id": "0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930",
1159+ "capabilities": {
1160+ "caip345": {
1161+ "caip2": "eip155:1"
1162+ }
1163+ }
1164+ }
1165+ """ .trimIndent()
1166+
1167+ // Act
1168+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1169+
1170+ // Assert
1171+ assertNotNull(result)
1172+ assertEquals(1 , result!! .size)
1173+ assertEquals(" 0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930" , result[0 ])
1174+ println (" Wallet sendCalls result with null transactionHashes: ${result} " )
1175+ }
1176+
1177+ @Test
1178+ fun `collectTxHashes should parse wallet_sendCalls with empty transactionHashes` () {
1179+ // Arrange
1180+ val rpcMethod = " wallet_sendCalls"
1181+ val rpcResult = """
1182+ {
1183+ "id": "0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930",
1184+ "capabilities": {
1185+ "caip345": {
1186+ "caip2": "eip155:1",
1187+ "transactionHashes": []
1188+ }
1189+ }
1190+ }
1191+ """ .trimIndent()
1192+
1193+ // Act
1194+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1195+
1196+ // Assert
1197+ assertNotNull(result)
1198+ assertEquals(1 , result!! .size)
1199+ assertEquals(" 0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930" , result[0 ])
1200+ println (" Wallet sendCalls result with empty transactionHashes: ${result} " )
1201+ }
1202+
1203+ @Test
1204+ fun `collectTxHashes should parse wallet_sendCalls with single transaction hash` () {
1205+ // Arrange
1206+ val rpcMethod = " wallet_sendCalls"
1207+ val rpcResult = """
1208+ {
1209+ "id": "0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930",
1210+ "capabilities": {
1211+ "caip345": {
1212+ "caip2": "eip155:137",
1213+ "transactionHashes": ["0x1234567890abcdef"]
1214+ }
1215+ }
1216+ }
1217+ """ .trimIndent()
1218+
1219+ // Act
1220+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1221+
1222+ // Assert
1223+ assertNotNull(result)
1224+ assertEquals(2 , result!! .size)
1225+ assertEquals(" 0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930" , result[0 ])
1226+ assertEquals(" 0x1234567890abcdef" , result[1 ])
1227+ println (" Wallet sendCalls result with single transaction hash: ${result} " )
1228+ }
1229+
1230+ @Test
1231+ fun `collectTxHashes should handle wallet_sendCalls with malformed JSON` () {
1232+ // Arrange
1233+ val rpcMethod = " wallet_sendCalls"
1234+ val rpcResult = " {malformed_json}"
1235+
1236+ // Act
1237+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1238+
1239+ // Assert
1240+ assertNull(result)
1241+ }
1242+
1243+ @Test
1244+ fun `collectTxHashes should handle wallet_sendCalls with empty result` () {
1245+ // Arrange
1246+ val rpcMethod = " wallet_sendCalls"
1247+ val rpcResult = " "
1248+
1249+ // Act
1250+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1251+
1252+ // Assert
1253+ assertNull(result)
1254+ }
1255+
1256+ @Test
1257+ fun `collectTxHashes should handle wallet_sendCalls with different chain IDs` () {
1258+ // Arrange
1259+ val rpcMethod = " wallet_sendCalls"
1260+ val rpcResult = """
1261+ {
1262+ "id": "0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930",
1263+ "capabilities": {
1264+ "caip345": {
1265+ "caip2": "eip155:56",
1266+ "transactionHashes": ["0xabc123", "0xdef456", "0x789ghi"]
1267+ }
1268+ }
1269+ }
1270+ """ .trimIndent()
1271+
1272+ // Act
1273+ val result = tvf.collectTxHashes(rpcMethod, rpcResult)
1274+
1275+ // Assert
1276+ assertNotNull(result)
1277+ assertEquals(4 , result!! .size)
1278+ assertEquals(" 0x159d1cf182eac62e4ec025cbf32ad35b33ab2d32669f8f93988ffa5623473930" , result[0 ])
1279+ assertEquals(" 0xabc123" , result[1 ])
1280+ assertEquals(" 0xdef456" , result[2 ])
1281+ assertEquals(" 0x789ghi" , result[3 ])
1282+ println (" Wallet sendCalls result with BSC chain: ${result} " )
1283+ }
10541284}
0 commit comments