storage.test.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. jest.setTimeout(50000);
  2. const PAGE_PATH = '/pages/API/storage/storage'
  3. const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
  4. const isIOS = platformInfo.startsWith('ios')
  5. const StorageKeysBlackList = [
  6. '$$STAT__DBDATA:__UNI__HelloUniAppX',
  7. '_STAT_LAST_PAGE_ROUTE',
  8. ]
  9. const filterStorageKeys = (keys) => {
  10. return keys.filter(key => {
  11. return !StorageKeysBlackList.includes(key)
  12. })
  13. }
  14. describe('ExtApi-StorageInfoTest', () => {
  15. if (
  16. isIOS &&
  17. (
  18. platformInfo.indexOf('15.5') != -1 ||
  19. platformInfo.indexOf('14.5') != -1 ||
  20. platformInfo.indexOf('13.7') != -1 ||
  21. platformInfo.indexOf('12.4') != -1
  22. )
  23. ) {
  24. // TODO: 排查 ios 不兼容版本 测试异常原因
  25. it('ios 15.5 14.5 13.7 12.4 测试异常', () => {
  26. expect(1).toBe(1)
  27. })
  28. return
  29. }
  30. let page;
  31. function getData (key = '') {
  32. return new Promise(async (resolve, reject) => {
  33. const data = await page.data()
  34. resolve(key ? data[key] : data)
  35. })
  36. }
  37. beforeAll(async () => {
  38. page = await program.reLaunch(PAGE_PATH)
  39. await page.waitFor(600);
  40. });
  41. it('Check async properties', async () => {
  42. // 异步存储测试
  43. await page.setData({
  44. key: "autotest_key_mock",
  45. data: "长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。"
  46. })
  47. await page.waitFor(600)
  48. const btnSetStorageButtonInfo = await page.$('.btn-setstorageAsync')
  49. await btnSetStorageButtonInfo.tap()
  50. await page.waitFor(600)
  51. const btnGetStorageButtonInfo = await page.$('.btn-getstorageAsync')
  52. await btnGetStorageButtonInfo.tap()
  53. await page.waitFor(600)
  54. expect(await getData('apiGetData')).toEqual("长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。")
  55. // 测试 clear
  56. let btnGetStorageInfoASyncButton = await page.$('.btn-getStorageInfoASync')
  57. // await btnGetStorageInfoASyncButton.tap()
  58. // await page.waitFor(600)
  59. // storageInfoRet = await getData('apiGetData')
  60. // expect(storageInfoRet.keys[0]).toEqual("autotest_key_mock")
  61. const btnClearStorageInfoASyncButton = await page.$('.btn-clearStorageInfoASync')
  62. await btnClearStorageInfoASyncButton.tap()
  63. page.waitFor(600)
  64. await btnGetStorageInfoASyncButton.tap()
  65. await page.waitFor(600)
  66. storageInfoRet = await getData('apiGetData')
  67. expect(filterStorageKeys(storageInfoRet.keys).length).toEqual(0)
  68. await page.setData({
  69. key: "autotest_key_mock",
  70. data: 1100.8989
  71. })
  72. await page.waitFor(600)
  73. await btnSetStorageButtonInfo.tap()
  74. await page.waitFor(600)
  75. await btnGetStorageButtonInfo.tap()
  76. await page.waitFor(600)
  77. expect(await getData('apiGetData')).toEqual(1100.8989)
  78. // 测试 remove
  79. // await btnGetStorageInfoASyncButton.tap()
  80. // await page.waitFor(600)
  81. // storageInfoRet = await getData('apiGetData')
  82. // expect(storageInfoRet.keys[0]).toEqual("autotest_key_mock")
  83. const btnRemoveStorageInfoASyncButton = await page.$('.btn-removeStorageInfoASync')
  84. await btnRemoveStorageInfoASyncButton.tap()
  85. page.waitFor(600)
  86. await btnGetStorageInfoASyncButton.tap()
  87. await page.waitFor(600)
  88. storageInfoRet = await getData('apiGetData')
  89. expect(filterStorageKeys(storageInfoRet.keys).length).toEqual(0)
  90. await page.setData({
  91. key: "autotest_key_mock",
  92. data: 123456789
  93. })
  94. await page.waitFor(600)
  95. await btnSetStorageButtonInfo.tap()
  96. await page.waitFor(600)
  97. await btnGetStorageButtonInfo.tap()
  98. await page.waitFor(600)
  99. expect(await getData('apiGetData')).toEqual(123456789)
  100. let userObj = {
  101. name: "zhangsan",
  102. age: 12
  103. }
  104. await page.setData({
  105. key: "autotest_key_mock",
  106. data: userObj
  107. })
  108. await page.waitFor(600)
  109. await btnSetStorageButtonInfo.tap()
  110. await page.waitFor(600)
  111. await btnGetStorageButtonInfo.tap()
  112. await page.waitFor(600)
  113. expect(await getData('apiGetData')).toEqual(userObj)
  114. await page.setData({
  115. key: "autotest_key_mock",
  116. data: {
  117. name: "zhangsan",
  118. age: 122
  119. }
  120. })
  121. await page.waitFor(600)
  122. await btnSetStorageButtonInfo.tap()
  123. await page.waitFor(600)
  124. await btnGetStorageButtonInfo.tap()
  125. await page.waitFor(600)
  126. let objRet = await getData('apiGetData')
  127. expect(objRet.age).toEqual(122)
  128. });
  129. it('Check sync properties', async () => {
  130. let btnComplexStaticTest = await page.$('.btn-complexStaticTest')
  131. await btnComplexStaticTest.tap()
  132. await page.waitFor(600)
  133. if (!isIOS) {
  134. expect(await getData('staticComplexRet')).toEqual(true)
  135. }
  136. await page.setData({
  137. key: "autotest_key_mock",
  138. data: "长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。"
  139. })
  140. await page.waitFor(600)
  141. let btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
  142. await btnSetStorageButtonInfo.tap()
  143. await page.waitFor(600)
  144. let btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
  145. await btnGetStorageButtonInfo.tap()
  146. await page.waitFor(600)
  147. expect(await getData('apiGetData')).toEqual("长安大道连狭斜,青牛白马七香车。玉辇纵横过主第,金鞭络绎向侯家。龙衔宝盖承朝日,凤吐流苏带晚霞。百尺游丝争绕树,一群娇鸟共啼花。游蜂戏蝶千门侧,碧树银台万种色。复道交窗作合欢,双阙连甍垂凤翼。")
  148. // 测试clear
  149. const btnGetStorageInfoSyncButton = await page.$('.btn-getStorageInfoSync')
  150. // await btnGetStorageInfoSyncButton.tap()
  151. // await page.waitFor(600)
  152. // let storageInfoRet = await getData('apiGetData')
  153. // expect(storageInfoRet.keys[0]).toEqual("autotest_key_mock")
  154. const btnClearStorageInfoSyncButton = await page.$('.btn-clearStorageInfoSync')
  155. await btnClearStorageInfoSyncButton.tap()
  156. await btnGetStorageInfoSyncButton.tap()
  157. await page.waitFor(600)
  158. storageInfoRet = await getData('apiGetData')
  159. expect(filterStorageKeys(storageInfoRet.keys).length).toEqual(0)
  160. await page.setData({
  161. key: "autotest_key_mock",
  162. data: 12345789.235689
  163. })
  164. await page.waitFor(600)
  165. btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
  166. await btnSetStorageButtonInfo.tap()
  167. await page.waitFor(600)
  168. btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
  169. await btnGetStorageButtonInfo.tap()
  170. await page.waitFor(600)
  171. expect(await getData('apiGetData')).toEqual(12345789.235689)
  172. // 测试 remove
  173. // await btnGetStorageInfoSyncButton.tap()
  174. // await page.waitFor(600)
  175. // storageInfoRet = await getData('apiGetData')
  176. // expect(storageInfoRet.keys[0]).toEqual("autotest_key_mock")
  177. const btnRemoveStorageInfoSyncButton = await page.$('.btn-removeStorageInfoSync')
  178. await btnRemoveStorageInfoSyncButton.tap()
  179. page.waitFor(600)
  180. await btnGetStorageInfoSyncButton.tap()
  181. await page.waitFor(600)
  182. storageInfoRet = await getData('apiGetData')
  183. expect(filterStorageKeys(storageInfoRet.keys).length).toEqual(0)
  184. await page.setData({
  185. key: "autotest_key_mock",
  186. data: 0
  187. })
  188. await page.waitFor(600)
  189. btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
  190. await btnSetStorageButtonInfo.tap()
  191. await page.waitFor(600)
  192. btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
  193. await btnGetStorageButtonInfo.tap()
  194. await page.waitFor(600)
  195. expect(await getData('apiGetData')).toEqual(0)
  196. await page.setData({
  197. key: "autotest_key_mock",
  198. data: {
  199. name: "tom",
  200. age: 10
  201. }
  202. })
  203. await page.waitFor(600)
  204. btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
  205. await btnSetStorageButtonInfo.tap()
  206. await page.waitFor(600)
  207. btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
  208. await btnGetStorageButtonInfo.tap()
  209. await page.waitFor(600)
  210. let objRet = await getData('apiGetData')
  211. expect(objRet.name).toEqual("tom")
  212. await page.setData({
  213. key: "autotest_key_mock",
  214. data: JSON.stringify({
  215. name: "james",
  216. age: 12,
  217. from: "american"
  218. })
  219. })
  220. await page.waitFor(600)
  221. btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
  222. await btnSetStorageButtonInfo.tap()
  223. await page.waitFor(600)
  224. btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
  225. await btnGetStorageButtonInfo.tap()
  226. await page.waitFor(600)
  227. let jsonStr = await getData('apiGetData')
  228. // 顺序不能保证,验证长度和各个属性来区分
  229. let parseObj = JSON.parse(jsonStr)
  230. expect(jsonStr.length).toEqual(43)
  231. expect(parseObj['age']).toEqual(12)
  232. expect(parseObj['from']).toEqual('american')
  233. expect(parseObj['name']).toEqual('james')
  234. await page.setData({
  235. key: "autotest_key_mock",
  236. data: "1234567890"
  237. })
  238. await page.waitFor(600)
  239. btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
  240. await btnSetStorageButtonInfo.tap()
  241. await page.waitFor(600)
  242. btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
  243. await btnGetStorageButtonInfo.tap()
  244. await page.waitFor(600)
  245. let strRet = await getData('apiGetData')
  246. // 顺序不能保证,验证长度和各个属性来区分
  247. expect(typeof strRet).toEqual("string")
  248. expect(strRet).toEqual("1234567890")
  249. await page.setData({
  250. key: "autotest_key_mock",
  251. data: "1234567.890"
  252. })
  253. await page.waitFor(600)
  254. btnSetStorageButtonInfo = await page.$('.btn-setstorageSync')
  255. await btnSetStorageButtonInfo.tap()
  256. await page.waitFor(600)
  257. btnGetStorageButtonInfo = await page.$('.btn-getstorageSync')
  258. await btnGetStorageButtonInfo.tap()
  259. await page.waitFor(600)
  260. let strRet2 = await getData('apiGetData')
  261. // 顺序不能保证,验证长度和各个属性来区分
  262. expect(typeof strRet2).toEqual("string")
  263. expect(strRet2).toEqual("1234567.890")
  264. });
  265. it('saveUTSJSONObject', async () => {
  266. await page.callMethod('jest_saveUTSJSONObject')
  267. await page.waitFor(600)
  268. const {
  269. jest_saveUTSJSONObjectSyncResult,
  270. jest_saveUTSJSONObjectAsyncResult
  271. } = await page.data()
  272. expect(jest_saveUTSJSONObjectSyncResult).toBe(1)
  273. expect(jest_saveUTSJSONObjectAsyncResult).toBe(1)
  274. })
  275. // ios js 层与原生层通信时,原始数据类型丢失
  276. if (!isIOS) {
  277. it('saveUTSJSONObjectArray', async () => {
  278. await page.callMethod('jest_saveUTSJSONObjectArray')
  279. await page.waitFor(600)
  280. const {
  281. jest_saveUTSJSONObjectArraySyncResult
  282. } = await page.data()
  283. expect(jest_saveUTSJSONObjectArraySyncResult).toBe(1)
  284. })
  285. }
  286. });