No Description

test-0.6.2.js 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import RNTest from './react-native-testkit/'
  2. import React from 'react'
  3. import RNFetchBlob from 'react-native-fetch-blob'
  4. import {
  5. StyleSheet,
  6. Text,
  7. View,
  8. ScrollView,
  9. CameraRoll,
  10. Platform,
  11. Dimensions,
  12. Image,
  13. } from 'react-native';
  14. const fs = RNFetchBlob.fs
  15. const { Assert, Comparer, Info, prop } = RNTest
  16. const describe = RNTest.config({
  17. group : '0.6.2',
  18. run : true,
  19. expand : false,
  20. timeout : 12000,
  21. })
  22. const { TEST_SERVER_URL_SSL, DROPBOX_TOKEN, styles } = prop()
  23. const dirs = RNFetchBlob.fs.dirs
  24. let prefix = ((Platform.OS === 'android') ? 'file://' : '')
  25. describe('upload asset from camera roll', (report, done) => {
  26. let imgName = `image-from-camera-roll-${Platform.OS}.jpg`
  27. CameraRoll.getPhotos({first : 10})
  28. .then((resp) => {
  29. let url = resp.edges[0].node.image.uri
  30. return fs.readFile(url, 'base64')
  31. })
  32. .then((data) => {
  33. return RNFetchBlob.fetch('POST', 'https://content.dropboxapi.com/2/files/upload', {
  34. Authorization : `Bearer ${DROPBOX_TOKEN}`,
  35. 'Dropbox-API-Arg': `{\"path\": \"/rn-upload/${imgName}\",\"mode\": \"add\",\"autorename\": false,\"mute\": false}`,
  36. 'Content-Type' : 'application/octet-stream',
  37. }, data)
  38. })
  39. .then((resp) => {
  40. resp = resp.json()
  41. report(
  42. <Assert key="confirm the file has been uploaded" expect={imgName} actual={resp.name}/>
  43. )
  44. done()
  45. })
  46. })
  47. describe('access assets from camera roll', (report, done) => {
  48. let photo = null
  49. CameraRoll.getPhotos({first : 10})
  50. .then((resp) => {
  51. photo = resp.edges[0].node.image.uri
  52. report(<Info key="items">
  53. <Text>{photo}</Text>
  54. </Info>)
  55. return fs.readFile(photo, 'base64')
  56. })
  57. .then((data) => {
  58. report(<Info key="asset image">
  59. <Image
  60. style={styles.image}
  61. source={{uri: `data:image/png;base64, ${data}`}}/>
  62. </Info>)
  63. done()
  64. })
  65. })
  66. describe('read asset in app bundle',(report, done) => {
  67. let target = fs.asset('test-asset2.png')
  68. fs.readFile(target, 'base64')
  69. .then((data) => {
  70. report(<Info key="asset image">
  71. <Image
  72. style={styles.image}
  73. source={{uri: `data:image/png;base64, ${data}`}}/>
  74. </Info>)
  75. return fs.readFile(fs.asset('test-asset1.json'), 'utf8')
  76. })
  77. .then((resp) => {
  78. report(
  79. <Assert key="asset content verify"
  80. expect="asset#1"
  81. actual={JSON.parse(resp).secret}/>)
  82. done()
  83. })
  84. })
  85. describe('stat assets in app', (report, done) => {
  86. fs.stat(fs.asset('test-asset2.png'))
  87. .then((data) => {
  88. report(<Info key="list of assets">
  89. <Text>{JSON.stringify(data)}</Text>
  90. </Info>)
  91. done()
  92. })
  93. })
  94. describe('copy asset', (report, done) => {
  95. let dest = `${dirs.DocumentDir}/test-asset-1-${Date.now()}.json`
  96. fs.cp(fs.asset('test-asset1.json'), dest)
  97. .then(() => fs.readFile(dest, 'utf8'))
  98. .then((data) => {
  99. report(<Assert key="asset copied correctly"
  100. expect={'asset#1'}
  101. actual={JSON.parse(data).secret}/>)
  102. return fs.stat(fs.asset('test-asset1.json'))
  103. })
  104. .then((stat) => {
  105. report(<Assert key="file size check"
  106. expect={27}
  107. actual={Math.floor(stat.size)}/>,
  108. <Info key="dest file info">
  109. <Text>{JSON.stringify(stat)}</Text>
  110. </Info>)
  111. done()
  112. })
  113. })