Skip to content

Commit 804de72

Browse files
committed
feat: add test files & fix 40+ text qrcode
fix #13
1 parent 37be3bc commit 804de72

File tree

10 files changed

+2432
-784
lines changed

10 files changed

+2432
-784
lines changed

babel.config.js

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/* eslint-disable import/no-commonjs */
2+
const apis = require('@tarojs/taro-h5/dist/taroApis')
3+
4+
module.exports = {
5+
presets: [
6+
[
7+
'@babel/env',
8+
{
9+
spec: true,
10+
useBuiltIns: false,
11+
},
12+
],
13+
],
14+
plugins: [
15+
'@babel/plugin-proposal-class-properties',
16+
[
17+
'@babel/plugin-transform-react-jsx',
18+
{
19+
pragma: 'Nerv.createElement',
20+
},
21+
],
22+
['@babel/plugin-proposal-object-rest-spread'],
23+
[
24+
'babel-plugin-transform-taroapi',
25+
{
26+
apis,
27+
packageName: '@tarojs/taro-h5',
28+
},
29+
],
30+
],
31+
}

package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
"@types/webpack-env": "^1.13.6",
6565
"babel-core": "^7.0.0-bridge.0",
6666
"babel-eslint": "^8.2.3",
67-
"babel-jest": "^24.9.0",
67+
"babel-jest": "23.6.0",
6868
"babel-plugin-transform-class-properties": "^6.24.1",
6969
"babel-plugin-transform-decorators-legacy": "^1.3.4",
7070
"babel-plugin-transform-jsx-stylesheet": "^0.6.5",
@@ -78,10 +78,11 @@
7878
"eslint-plugin-react-hooks": "^2.3.0",
7979
"eslint-plugin-taro": "1.3.29",
8080
"husky": ">=1",
81-
"jest": "^24.9.0",
81+
"jest": "23.6.0",
8282
"lint-staged": ">=8",
8383
"miniprogram-automator": "^0.8.0",
8484
"nerv-devtools": "^1.5.6",
85+
"nerv-server": "^1.5.6",
8586
"nervjs": "^1.5.6",
8687
"sinon": "^7.5.0"
8788
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Barcode test Barcode test suites 1`] = `"<div class=\\"taro-img\\" style=\\"width:300px;height:60px;\\"><img class=\\"taro-img__mode-scaletofill\\" src=\\"\\"/></div>"`;

src/components/Barcode/index.js

+3-12
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
1-
import Taro, { useState, useEffect } from '@tarojs/taro'
1+
import Taro, { useMemo } from '@tarojs/taro'
22
import PropTypes from 'prop-types'
33
import { Image } from '@tarojs/components'
4-
import utils from '../../utils'
4+
import barcode from '../../utils/barcode'
55

66
function BarCode({ text, scale, width, height }) {
7-
const [image, setImage] = useState('')
8-
9-
useEffect(() => {
10-
if (text) {
11-
setImage(utils.barcode({ text, scale }))
12-
} else {
13-
setImage('')
14-
}
15-
}, [text, scale])
16-
7+
const image = useMemo(() => barcode({ text, scale }), [text, scale])
178
const widthString = width ? width + 'px' : ''
189
const heightString = height ? height + 'px' : ''
1910
const style = { width: widthString, height: heightString }

src/components/Barcode/index.test.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* eslint-disable react/react-in-jsx-scope */
2+
// eslint-disable-next-line no-unused-vars
3+
import Nerv from 'nervjs'
4+
import { renderToString } from 'nerv-server'
5+
import Barcode from '../../../.temp/components/Barcode'
6+
7+
describe('Barcode test', () => {
8+
it('Barcode test suites', () => {
9+
const component = renderToString(<Barcode text='hello world' />)
10+
expect(component).toMatchSnapshot()
11+
})
12+
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`QRCode test 40+ words 1`] = `"<div class=\\"taro-img\\" style=\\"width:100px;height:100px;\\"><img class=\\"taro-img__mode-scaletofill\\" src=\\"data:image/gif;base64,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\\"/></div>"`;
4+
5+
exports[`QRCode test hello world 1`] = `"<div class=\\"taro-img\\" style=\\"width:100px;height:100px;\\"><img class=\\"taro-img__mode-scaletofill\\" src=\\"data:image/gif;base64,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\\"/></div>"`;

src/components/Qrcode/index.js

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
1-
import Taro, { useState, useEffect } from '@tarojs/taro'
1+
import Taro, { useMemo } from '@tarojs/taro'
22
import PropTypes from 'prop-types'
33
import { Image } from '@tarojs/components'
4-
import { createQrCodeImg } from 'wx-base64-qrcode'
4+
import { createQrCodeImg } from '../../utils/qrcode'
55

66
function QRCode({ text, size, scale, typeNumber, errorCorrectLevel }) {
7-
const [image, setImage] = useState('')
8-
9-
useEffect(() => {
10-
if (text) {
11-
const options = { errorCorrectLevel, typeNumber, size: size * scale }
12-
setImage(createQrCodeImg(text, options))
13-
} else {
14-
setImage('')
15-
}
7+
const image = useMemo(() => {
8+
const options = { errorCorrectLevel, typeNumber, size: size * scale }
9+
return createQrCodeImg(text, options)
1610
}, [text, scale, size, errorCorrectLevel, typeNumber])
17-
1811
const style = { width: size + 'px', height: size + 'px' }
1912
return <Image style={style} src={image} />
2013
}

src/components/Qrcode/index.test.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/* eslint-disable react/react-in-jsx-scope */
2+
// eslint-disable-next-line no-unused-vars
3+
import Nerv from 'nervjs'
4+
import { renderToString } from 'nerv-server'
5+
import QRCode from '../../../.temp/components/Qrcode'
6+
7+
describe('QRCode test', () => {
8+
it('hello world', () => {
9+
const component = renderToString(<QRCode text='hello world' />)
10+
expect(component).toMatchSnapshot()
11+
})
12+
it('40+ words', () => {
13+
const component = renderToString(
14+
<QRCode text='12345678901234567890123456789012345678901234567890' />,
15+
)
16+
expect(component).toMatchSnapshot()
17+
})
18+
})

0 commit comments

Comments
 (0)