You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/03/31 09:42:28 UTC
[1/4] incubator-weex git commit: + [html5] test for vue-render.
Repository: incubator-weex
Updated Branches:
refs/heads/0.11-dev f8abba9d2 -> 58fd3fe79
+ [html5] test for vue-render.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/b5ae07c7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/b5ae07c7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/b5ae07c7
Branch: refs/heads/0.11-dev
Commit: b5ae07c7e410cb95acb413fa916a0613e307de8e
Parents: 91b8cc5
Author: MrRaindrop <te...@gmail.com>
Authored: Fri Mar 31 14:35:28 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Fri Mar 31 14:35:28 2017 +0800
----------------------------------------------------------------------
.eslintrc | 3 +-
build/karma.vue.conf.js | 67 +++++++---
html5/render/vue/components/a.js | 3 +-
html5/render/vue/components/div.js | 10 +-
html5/render/vue/components/image.js | 2 +-
html5/render/vue/mixins/base.js | 7 +
html5/test/render/index.js | 3 -
html5/test/render/vue/components/a.js | 38 ++++++
html5/test/render/vue/components/div.js | 29 +++++
html5/test/render/vue/components/image.js | 44 ++++---
html5/test/render/vue/components/list.js | 21 ++-
html5/test/render/vue/components/switch.js | 35 ++---
html5/test/render/vue/components/text.js | 42 +++---
html5/test/render/vue/components/web.js | 14 +-
html5/test/render/vue/examples/list-cell.js | 16 +--
html5/test/render/vue/helper.js | 157 +++++++++++++++++++----
html5/test/render/vue/utils.js | 1 -
html5/test/render/vue/validator/check.js | 1 -
html5/test/render/vue/validator/index.js | 1 -
html5/test/render/vue/validator/prop.js | 1 -
html5/test/render/vue/validator/style.js | 1 -
package.json | 4 +-
22 files changed, 353 insertions(+), 147 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/.eslintrc
----------------------------------------------------------------------
diff --git a/.eslintrc b/.eslintrc
index c8e3813..80d82b7 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -29,7 +29,8 @@
"callNative": false,
"callNativeModule": false,
"callAddElement":false,
- "callJS": false
+ "callJS": false,
+ "expect": false
},
"rules": {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/build/karma.vue.conf.js
----------------------------------------------------------------------
diff --git a/build/karma.vue.conf.js b/build/karma.vue.conf.js
index d71f579..c447026 100644
--- a/build/karma.vue.conf.js
+++ b/build/karma.vue.conf.js
@@ -1,44 +1,81 @@
-var webpackConfig = require('./webpack.vue.config')
+var flow = require('rollup-plugin-flow')
+var buble = require('rollup-plugin-buble')
+var replace = require('rollup-plugin-replace')
+var rollupConfig = require('./config')('weex-vue-render', true)
+var path = require('path')
-delete webpackConfig.entry
-delete webpackConfig.output
+function absolute (pa) {
+ return path.resolve(__dirname, pa)
+}
+
+var removeConfigs = ['entry', 'dest', 'banner']
+var removePlugins = ['eslint', 'uglify']
+
+removeConfigs.forEach(cfg => {
+ delete rollupConfig[cfg]
+})
+
+var plugins = rollupConfig.plugins.slice()
+rollupConfig.plugins = []
-webpackConfig.babel = {
- plugins: [
- ['coverage', { ignore: ['test/'] }]
- ]
+for (var i = 0, l = plugins.length; i < l; i++) {
+ var plg = plugins[i]
+ var isRemove = false
+ if (removePlugins.length <= 0) {
+ rollupConfig.plugins.push(plg)
+ }
+ removePlugins.forEach(rp => {
+ if (plg.name === rp) {
+ isRemove = true
+ }
+ })
+ if (!isRemove) { rollupConfig.plugins.push(plg) }
}
+rollupConfig.format = 'iife'
+rollupConfig.sourceMap = 'inline'
+
module.exports = function (config) {
config.set({
- frameworks: ['mocha'],
+ frameworks: ['mocha', 'sinon-chai'],
browsers: ['PhantomJS'],
files: [
- '../html5/test/render/index.js'
+ '../html5/test/render/vue/**/*.js'
+ // '../html5/test/render/vue/components/*.js'
+ ],
+
+ exclude: [
+ '../html5/test/render/vue/helper.js',
+ '../html5/test/render/vue/vender/**/*.js'
+ // '../html5/test/render/vue/examples/**/*.js'
],
+ // singleRun: false,
singleRun: true,
reporters: ['mocha', 'coverage'],
coverageReporter: {
reporters: [
- { type: 'html', dir: '../coverage', subdir: 'vue-renderer' },
- { type: 'text-summary', dir: '../coverage', subdir: 'vue-renderer' }
+ { type: 'html', dir: absolute('../coverage'), subdir: 'vue-renderer' },
+ { type: 'text-summary', dir: absolute('../coverage'), subdir: 'vue-renderer' }
]
},
preprocessors: {
- '../html5/test/**/*.js': ['webpack', 'sourcemap']
+ '../html5/test/**/*.js': ['rollup', 'coverage'],
+ // '../html5/test/**/!(components|examples)/*.js': ['rollup', 'coverage']
},
- webpack: webpackConfig,
+ rollupPreprocessor: rollupConfig,
plugins: [
'karma-coverage',
'karma-mocha',
'karma-mocha-reporter',
'karma-phantomjs-launcher',
- 'karma-sourcemap-loader',
- 'karma-webpack'
+ 'karma-rollup-preprocessor',
+ 'karma-sinon-chai'
+ // 'karma-sourcemap-loader',
+ // 'karma-webpack'
]
})
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/render/vue/components/a.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/a.js b/html5/render/vue/components/a.js
index 784e52e..aa973fd 100644
--- a/html5/render/vue/components/a.js
+++ b/html5/render/vue/components/a.js
@@ -1,6 +1,7 @@
// import { validateStyles } from '../validator'
export default {
+ name: 'weex-a',
props: {
href: String
},
@@ -16,6 +17,6 @@ export default {
},
on: this._createEventMap(),
staticClass: 'weex-a weex-ct'
- }, this.$slots.default)
+ }, this._trimTextNodeChildren(this.$slots.default))
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/render/vue/components/div.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/div.js b/html5/render/vue/components/div.js
index d697020..033ba9d 100644
--- a/html5/render/vue/components/div.js
+++ b/html5/render/vue/components/div.js
@@ -1,13 +1,7 @@
// import { validateStyles } from '../validator'
-function trimTextNode (children) {
- if (Array.isArray(children)) {
- return children.filter(vnode => !!vnode.tag)
- }
- return children
-}
-
export default {
+ name: 'weex-div',
render (createElement) {
/* istanbul ignore next */
// if (process.env.NODE_ENV === 'development') {
@@ -17,6 +11,6 @@ export default {
attrs: { 'weex-type': 'div' },
on: this._createEventMap(),
staticClass: 'weex-div weex-ct'
- }, trimTextNode(this.$slots.default))
+ }, this._trimTextNodeChildren(this.$slots.default))
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/render/vue/components/image.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/components/image.js b/html5/render/vue/components/image.js
index 7f6e8e7..5f4a786 100644
--- a/html5/render/vue/components/image.js
+++ b/html5/render/vue/components/image.js
@@ -2,7 +2,7 @@
* get resize (stetch|cover|contain) related styles.
*/
function getResizeStyle (context) {
- const stretch = '100% 100%'
+ const stretch = '100%'
const resize = context.resize || stretch
const bgSize = ['cover', 'contain', stretch].indexOf(resize) > -1 ? resize : stretch
// compatibility: http://caniuse.com/#search=background-size
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/render/vue/mixins/base.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/base.js b/html5/render/vue/mixins/base.js
index ea5fd86..dba7688 100644
--- a/html5/render/vue/mixins/base.js
+++ b/html5/render/vue/mixins/base.js
@@ -116,6 +116,13 @@ export default {
if (process.env.NODE_ENV === 'development') {
tagEnd('base._fireLazyload')
}
+ },
+
+ _trimTextNodeChildren (children) {
+ if (Array.isArray(children)) {
+ return children.filter(vnode => !!vnode.tag)
+ }
+ return children
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/index.js
----------------------------------------------------------------------
diff --git a/html5/test/render/index.js b/html5/test/render/index.js
deleted file mode 100644
index bca3504..0000000
--- a/html5/test/render/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// require all test files
-const testsContext = require.context('./vue', true, /\.js$/)
-testsContext.keys().forEach(testsContext)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/components/a.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/a.js b/html5/test/render/vue/components/a.js
new file mode 100644
index 0000000..89574b7
--- /dev/null
+++ b/html5/test/render/vue/components/a.js
@@ -0,0 +1,38 @@
+import { init } from '../helper'
+import a from '../../../../render/vue/components/a'
+import div from '../../../../render/vue/components/div'
+
+init('<a> component', (Vue, helper) => {
+ const { compile, utils } = helper
+
+ before(() => {
+ helper.register('a', a)
+ helper.register('div', div)
+ })
+
+ it('simple <a> component', () => {
+ const vm = compile(`<a>abc</a>`)
+ const el = vm.$el
+ expect(el.tagName.toLowerCase()).to.equal('a')
+ const classListArr = utils.toArray(el.classList)
+ expect('weex-a').to.be.oneOf(classListArr)
+ expect('weex-ct').to.be.oneOf(classListArr)
+ expect(el.getAttribute('weex-type')).to.be.equal('a')
+ expect(el.innerHTML).to.be.equal('')
+ })
+
+ it('<a> with href', () => {
+ const href = '//m.taobao.com'
+ const vm = compile(`<a href="${href}"></a>`)
+ expect(vm.$el.getAttribute('href')).to.be.equal(href)
+ })
+
+ it('<a> with children <div>', () => {
+ const href = '//m.taobao.com'
+ const vm = compile(`<a href="${href}"><div></div></a>`)
+ const el = vm.$el
+ expect(el.children.length).to.be.equal(1)
+ expect(el.children[0].tagName).to.match(/^(?:html:)?div$/i)
+ expect(el.children[0].getAttribute('weex-type')).to.be.equal('div')
+ })
+})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/components/div.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/div.js b/html5/test/render/vue/components/div.js
new file mode 100644
index 0000000..12b0536
--- /dev/null
+++ b/html5/test/render/vue/components/div.js
@@ -0,0 +1,29 @@
+import { init } from '../helper'
+import div from '../../../../render/vue/components/div'
+
+init('<div> component', (Vue, helper) => {
+ const { compile, utils } = helper
+
+ before(() => {
+ helper.register('div', div)
+ })
+
+ it('simple <div> component', () => {
+ const vm = compile(`<div>abc</div>`)
+ const el = vm.$el
+ expect(el.tagName.toLowerCase()).to.equal('div')
+ const classListArr = utils.toArray(el.classList)
+ expect('weex-div').to.be.oneOf(classListArr)
+ expect('weex-ct').to.be.oneOf(classListArr)
+ expect(el.getAttribute('weex-type')).to.be.equal('div')
+ expect(el.innerHTML).to.be.equal('')
+ })
+
+ it('<div> with children <div>', () => {
+ const vm = compile(`<div><div></div></div>`)
+ const el = vm.$el
+ expect(el.children.length).to.be.equal(1)
+ expect(el.children[0].tagName).to.match(/^(?:html:)?div$/i)
+ expect(el.children[0].getAttribute('weex-type')).to.be.equal('div')
+ })
+})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/components/image.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/image.js b/html5/test/render/vue/components/image.js
index 24ec318..241696a 100644
--- a/html5/test/render/vue/components/image.js
+++ b/html5/test/render/vue/components/image.js
@@ -1,49 +1,51 @@
-import { expect } from 'chai'
-import { multiDescribe } from '../helper'
+import { init } from '../helper'
import image from '../../../../render/vue/components/image'
-multiDescribe('<image> component', (Vue, helper) => {
+init('<image> component', (Vue, helper) => {
+ const { compile, utils } = helper
+
before(() => {
helper.register('image', image)
})
- after(() => {
- helper.reset()
- })
-
it('simple <image> component', () => {
- const vm = helper.compile(`<image>abc</image>`)
-
- // console.log(vm.$el)
- expect(vm.$el.tagName).to.be.equal('FIGURE')
- expect(vm.$el.className).to.be.equal('weex-image')
- expect(vm.$el.innerHTML).to.be.equal('')
+ const vm = compile(`<image>abc</image>`)
+ const el = vm.$el
+ expect(el.tagName.toLowerCase()).to.be.equal('figure')
+ expect(utils.toArray(el.classList)).to.include.members(['weex-image', 'weex-el'])
+ expect(el.getAttribute('weex-type')).to.be.equal('image')
+ expect(el.innerHTML).to.be.equal('')
})
it('<image> with src', () => {
- const src = 'https://vuejs.org/images/logo.png'
- const vm = helper.compile(`<image src="${src}">`)
+ const src = '//vuejs.org/images/logo.png'
+ const vm = compile(`<image src="${src}"></image>`)
+ expect(vm.$el.getAttribute('img-src')).to.be.equal(`${src}`)
+ })
- expect(vm.$el.style.backgroundImage).match(new RegExp(`url\s*\\("?${src}"?\\)`), 'i')
+ it('<image> with placeholder', () => {
+ const placeholder = '//vuejs.org/images/logo.png'
+ const vm = compile(`<image placeholder="${placeholder}"></image>`)
+ expect(vm.$el.getAttribute('img-placeholder')).to.be.equal(`${placeholder}`)
})
it('<image> resize="cover"', () => {
- const vm = helper.compile(`<image resize="cover">`)
+ const vm = compile(`<image resize="cover"></image>`)
expect(vm.$el.style.backgroundSize).to.be.equal('cover')
})
it('<image> resize="contain"', () => {
- const vm = helper.compile(`<image resize="contain">`)
+ const vm = compile(`<image resize="contain"></image>`)
expect(vm.$el.style.backgroundSize).to.be.equal('contain')
})
it('<image> resize="stretch"', () => {
- const vm = helper.compile(`<image resize="stretch">`)
+ const vm = compile(`<image resize="stretch"></image>`)
expect(vm.$el.style.backgroundSize).to.be.equal('100%')
})
it('<image> unknown resize', () => {
- const vm = helper.compile(`<image resize="unknown">`)
- expect(vm.$el.style.backgroundSize).to.be.equal('')
+ const vm = compile(`<image resize="unknown"></image>`)
+ expect(vm.$el.style.backgroundSize).to.be.equal('100%')
})
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/components/list.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/list.js b/html5/test/render/vue/components/list.js
index fe557ae..adc880b 100644
--- a/html5/test/render/vue/components/list.js
+++ b/html5/test/render/vue/components/list.js
@@ -1,21 +1,18 @@
-import { expect } from 'chai'
-import { multiDescribe } from '../helper'
+import { init } from '../helper'
import list from '../../../../render/vue/components/scrollable/list'
+import cell from '../../../../render/vue/components/scrollable/list/cell'
+
+init('<list> component', (Vue, helper) => {
+ const { utils, compile } = helper
-multiDescribe('<list> component', (Vue, helper) => {
before(() => {
helper.register('list', list)
- })
-
- after(() => {
- helper.reset()
+ helper.register('cell', cell)
})
it('create simple list component', () => {
- const vm = helper.compile(`<list><cell></cell></list>`)
-
- // console.log(vm.$el)
- expect(vm.$el.tagName).to.be.equal('MAIN')
- expect(vm.$el.className).to.be.equal('weex-list weex-list-wrapper')
+ const vm = compile(`<list><cell></cell></list>`)
+ expect(vm.$el.tagName.toLowerCase()).to.be.equal('main')
+ expect(utils.toArray(vm.$el.classList)).to.include.members(['weex-list', 'weex-list-wrapper', 'weex-ct'])
})
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/components/switch.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/switch.js b/html5/test/render/vue/components/switch.js
index 6fc2cf0..2c892f3 100644
--- a/html5/test/render/vue/components/switch.js
+++ b/html5/test/render/vue/components/switch.js
@@ -1,8 +1,9 @@
-import { expect } from 'chai'
-import { multiDescribe } from '../helper'
+import { init } from '../helper'
import _switch from '../../../../render/vue/components/switch'
-multiDescribe('<switch> component', (Vue, helper) => {
+init('<switch> component', (Vue, helper) => {
+ const { utils, compile } = helper
+
before(() => {
helper.register('switch', _switch)
})
@@ -12,18 +13,18 @@ multiDescribe('<switch> component', (Vue, helper) => {
})
it('simple <switch> component', () => {
- const vm = helper.compile(`<switch></switch>`)
+ const vm = compile(`<switch></switch>`)
// console.log(vm.$el)
expect(vm.$el.tagName).to.be.equal('SPAN')
- expect(vm.$el.className).to.be.equal('weex-switch')
+ expect(utils.toArray(vm.$el.classList)).to.include('weex-switch')
expect(vm.$el.innerHTML).to.be.equal('<small class="weex-switch-inner"></small>')
})
it('disabled <switch>', () => {
- const vmA = helper.compile(`<switch disabled="true"></switch>`)
- const vmB = helper.compile(`<switch disabled></switch>`)
- const vmC = helper.compile(`<switch disabled="disabled"></switch>`)
+ const vmA = compile(`<switch disabled="true"></switch>`)
+ const vmB = compile(`<switch disabled></switch>`)
+ const vmC = compile(`<switch disabled="disabled"></switch>`)
expect(vmA.$el.className).to.match(/weex\-switch\-disabled/)
expect(vmB.$el.className).to.match(/weex\-switch\-disabled/)
@@ -31,17 +32,17 @@ multiDescribe('<switch> component', (Vue, helper) => {
})
it('enabled <switch>', () => {
- const vmA = helper.compile(`<switch></switch>`)
- const vmB = helper.compile(`<switch disabled="false"></switch>`)
+ const vmA = compile(`<switch></switch>`)
+ const vmB = compile(`<switch disabled="false"></switch>`)
expect(vmA.$el.className).to.be.equal('weex-switch')
expect(vmB.$el.className).to.be.equal('weex-switch')
})
it('checked <switch>', () => {
- const vmA = helper.compile(`<switch checked="true"></switch>`)
- const vmB = helper.compile(`<switch checked></switch>`)
- const vmC = helper.compile(`<switch checked="checked"></switch>`)
+ const vmA = compile(`<switch checked="true"></switch>`)
+ const vmB = compile(`<switch checked></switch>`)
+ const vmC = compile(`<switch checked="checked"></switch>`)
expect(vmA.$el.className).to.match(/weex\-switch\-checked/)
expect(vmB.$el.className).to.match(/weex\-switch\-checked/)
@@ -68,16 +69,16 @@ multiDescribe('<switch> component', (Vue, helper) => {
})
it('unchecked <switch>', () => {
- const vmA = helper.compile(`<switch></switch>`)
- const vmB = helper.compile(`<switch checked="false"></switch>`)
+ const vmA = compile(`<switch></switch>`)
+ const vmB = compile(`<switch checked="false"></switch>`)
expect(vmA.$el.className).to.be.equal('weex-switch')
expect(vmB.$el.className).to.be.equal('weex-switch')
})
it('disabled & checked <switch>', () => {
- const vmA = helper.compile(`<switch disabled checked></switch>`)
- const vmB = helper.compile(`<switch disabled="disabled" checked="checked"></switch>`)
+ const vmA = compile(`<switch disabled checked></switch>`)
+ const vmB = compile(`<switch disabled="disabled" checked="checked"></switch>`)
expect(vmA.$el.className).to.match(/weex\-switch\-checked/)
expect(vmA.$el.className).to.match(/weex\-switch\-disabled/)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/components/text.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/text.js b/html5/test/render/vue/components/text.js
index 0a5ef6d..4f5ff94 100644
--- a/html5/test/render/vue/components/text.js
+++ b/html5/test/render/vue/components/text.js
@@ -1,9 +1,10 @@
-import { expect } from 'chai'
import semver from 'semver'
-import { multiDescribe } from '../helper'
+import { init } from '../helper'
import text from '../../../../render/vue/components/text'
-multiDescribe('<text> component', (Vue, helper) => {
+init('<text> component', (Vue, helper) => {
+ const { utils, compile } = helper
+
before(() => {
helper.register('text', text)
})
@@ -13,22 +14,21 @@ multiDescribe('<text> component', (Vue, helper) => {
})
it('create simple text component', () => {
- const vm = helper.compile(`<text>abc</text>`)
+ const vm = compile(`<text>abc</text>`)
expect(vm.$el.tagName).to.be.equal('P')
expect(vm.$el.innerHTML).to.be.equal('abc')
})
it('empty text component', () => {
- const vm = helper.compile(`<text></text>`)
+ const vm = compile(`<text></text>`)
expect(vm.$el.tagName).to.be.equal('P')
expect(vm.$el.innerHTML).to.be.equal('')
})
- it('lines property', () => {
- const vm = helper.compile(`<text lines="5">abc</text>`)
-
+ it('lines style', () => {
+ const vm = compile(`<text style="lines:5;">abc</text>`)
if (semver.gt(Vue.version, '2.0.8')) {
expect(vm.$el.style.overflow).to.be.equal('hidden')
expect(vm.$el.style.textOverflow).to.be.equal('ellipsis')
@@ -37,7 +37,7 @@ multiDescribe('<text> component', (Vue, helper) => {
})
it('inline styles', () => {
- const vm = helper.compile(`<text style="color:blue">abc</text>`)
+ const vm = compile(`<text style="color:blue">abc</text>`)
if (semver.gt(Vue.version, '2.0.8')) {
expect(vm.$el.style.color).to.be.equal('blue')
@@ -46,27 +46,27 @@ multiDescribe('<text> component', (Vue, helper) => {
// Not sure about this feature.
it('class property', () => {
- const vm = helper.compile(`<text class="title"></text>`)
- expect(vm.$el.className).to.be.equal('weex-text title')
+ const vm = compile(`<text class="title"></text>`)
+ expect(utils.toArray(vm.$el.classList)).to.include.members(['weex-text', 'weex-el', 'title'])
})
it('value property', () => {
- const vm = helper.compile(`<text value="A"></text>`)
+ const vm = compile(`<text value="A"></text>`)
expect(vm.$el.innerHTML).to.be.equal('A')
})
it('both have value and content', () => {
- const vm = helper.compile(`<text value="A">B</text>`)
+ const vm = compile(`<text value="A">B</text>`)
expect(vm.$el.innerHTML).to.be.equal('B')
})
- describe.skip('error usage (on native)', () => {
- it('contain other tags', () => {
- const vm = helper.compile(`<text><b>abc</b></text>`)
- const span = vm.$el.children[0]
+ // describe.skip('error usage (on native)', () => {
+ // it('contain other tags', () => {
+ // const vm = compile(`<text><b>abc</b></text>`)
+ // const span = vm.$el.children[0]
- expect(span.tagName).to.be.equal('SPAN')
- expect(span.innerHTML).to.be.equal('')
- })
- })
+ // expect(span.tagName).to.be.equal('SPAN')
+ // expect(span.innerHTML).to.be.equal('')
+ // })
+ // })
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/components/web.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/components/web.js b/html5/test/render/vue/components/web.js
index 6d4e37c..642bd4a 100644
--- a/html5/test/render/vue/components/web.js
+++ b/html5/test/render/vue/components/web.js
@@ -1,8 +1,8 @@
-import { expect } from 'chai'
-import { multiDescribe } from '../helper'
+import { init } from '../helper'
import web from '../../../../render/vue/components/web'
-multiDescribe('<web> component', (Vue, helper) => {
+init('<web> component', (Vue, helper) => {
+ const { utils, compile } = helper
before(() => {
helper.register('web', web)
})
@@ -12,18 +12,18 @@ multiDescribe('<web> component', (Vue, helper) => {
})
it('simple <web> component', () => {
- const vm = helper.compile(`<web></web>`)
+ const vm = compile(`<web></web>`)
// console.log(vm.$el)
expect(vm.$el.tagName).to.be.equal('IFRAME')
- expect(vm.$el.className).to.be.equal('weex-web')
+ expect(utils.toArray(vm.$el.classList)).to.include.members(['weex-web', 'weex-el'])
})
it('use src attribute', () => {
- const vm = helper.compile(`<web src="https://x.cn"></web>`)
+ const vm = compile(`<web src="https://x.cn"></web>`)
expect(vm.$el.tagName).to.be.equal('IFRAME')
expect(vm.$el.getAttribute('src')).to.be.equal('https://x.cn')
- expect(vm.$el.className).to.be.equal('weex-web')
+ expect(utils.toArray(vm.$el.classList)).to.include.members(['weex-web', 'weex-el'])
})
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/examples/list-cell.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/examples/list-cell.js b/html5/test/render/vue/examples/list-cell.js
index bab74e5..ad12ec4 100644
--- a/html5/test/render/vue/examples/list-cell.js
+++ b/html5/test/render/vue/examples/list-cell.js
@@ -1,22 +1,19 @@
-import { expect } from 'chai'
-import { multiDescribe } from '../helper'
+import { init } from '../helper'
import list from '../../../../render/vue/components/scrollable/list'
import cell from '../../../../render/vue/components/scrollable/list/cell'
import text from '../../../../render/vue/components/text'
-multiDescribe('list & cell example', (Vue, helper) => {
+init('list & cell example', (Vue, helper) => {
+ const { utils, createVm } = helper
+
before(() => {
helper.register('list', list)
helper.register('cell', cell)
helper.register('text', text)
})
- after(() => {
- helper.reset()
- })
-
it('create simple list component', () => {
- const vm = helper.createVm({
+ const vm = createVm({
template:
`<list>
<cell v-for="char in lists">
@@ -30,8 +27,7 @@ multiDescribe('list & cell example', (Vue, helper) => {
}
})
- // console.log(vm.$el)
expect(vm.$el.tagName).to.be.equal('MAIN')
- expect(vm.$el.className).to.be.equal('weex-list weex-list-wrapper')
+ expect(utils.toArray(vm.$el.classList)).to.include.members(['weex-list', 'weex-list-wrapper'])
})
})
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/helper.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/helper.js b/html5/test/render/vue/helper.js
index 6d7144d..26daac0 100644
--- a/html5/test/render/vue/helper.js
+++ b/html5/test/render/vue/helper.js
@@ -1,31 +1,140 @@
-const Vues = [
- require('./vender/vue-2.0.0.js'),
- require('./vender/vue-2.1.0.js')
-]
+import '../../../render/vue/styles/reset.css'
+import '../../../render/vue/styles/components.css'
+
+import '../../../render/browser/render/gesture'
+
+/* istanbul ignore next */
+import '../../../shared/arrayFrom'
+/* istanbul ignore next */
+import '../../../shared/objectAssign'
+/* istanbul ignore next */
+import '../../../shared/objectSetPrototypeOf'
+
+/* istanbul ignore next */
+import 'core-js/modules/es6.object.to-string'
+/* istanbul ignore next */
+import 'core-js/modules/es6.string.iterator'
+/* istanbul ignore next */
+import 'core-js/modules/web.dom.iterable'
+/* istanbul ignore next */
+import 'core-js/modules/es6.promise'
+
+/* istanbul ignore next */
+import Vue from 'vue/dist/vue.esm.js'
+// import { base, scrollable, style, inputCommon } from '../../../render/vue/mixins'
+import { base, style } from '../../../render/vue/mixins'
+import weex from '../../../render/vue/env/weex'
/**
- * Describe tests for multiple versions of Vue.
+ * functional tools exported by helper.utils.
+ */
+const utils = {
+ toArray (list) {
+ if (!list) return []
+ return Array.prototype.slice.call(list)
+ }
+}
+
+/**
+ * Describe tests for current versions of Vue.
*/
-export function multiDescribe (title, fn) {
+export function init (title, fn) {
return describe(title, () => {
- Vues.forEach(Vue => {
- let components = {}
- Vue.config.isReservedTag = function () { return false }
- describe(`Vue ${Vue.version}`, () => fn(Vue, {
- register (name, component) {
- components[name] = component
- },
- reset () {
- components = {}
- },
- createVm (options = {}) {
- options.components = components
- return new Vue(options).$mount()
- },
- compile (template) {
- return this.createVm({ template })
- }
- }))
+ let components = {}
+
+ before(function () {
+ const htmlRegex = /^html:/i
+ Vue.config.isReservedTag = tag => htmlRegex.test(tag)
+ Vue.config.parsePlatformTagName = tag => tag.replace(htmlRegex, '')
+
+ Vue.mixin(base)
+ Vue.mixin(style)
+
+ window.global = window
+ global.weex = weex
+ })
+
+ const helper = {
+
+ utils,
+ /**
+ * register a component.
+ * @param {string} name,
+ * @param {object} component.
+ */
+ register (name, component) {
+ components[name] = component
+ },
+
+ /**
+ * reset registered components with empty object.
+ */
+ reset () {
+ components = {}
+ },
+
+ /**
+ * create a vm instance of Vue.
+ * @param {Object} options.
+ * @return {Vue} vue instance.
+ */
+ createVm (options = {}) {
+ options.components = components
+ return new Vue(options).$mount()
+ },
+
+ /**
+ * [compile description]
+ * @param {[type]} template [description]
+ * @return {[type]} [description]
+ */
+ compile (template) {
+ return helper.createVm({ template })
+ }
+ }
+
+ /**
+ * describe a vue-render test for certain vue verson.
+ */
+ describe(`Vue ${Vue.version}`, () => {
+ after(function () {
+ helper.reset()
+ })
+
+ fn(Vue, helper)
})
})
}
+
+// import vue200 from './vender/vue-2.0.0.js'
+// import vue210 from './vender/vue-2.1.0.js'
+// const Vues = [
+// vue200,
+// vue210
+// ]
+/**
+ * Describe tests for multiple versions of Vue.
+ */
+// export function multiDescribe (title, fn) {
+// return describe(title, () => {
+// Vues.forEach(Vue => {
+// let components = {}
+// Vue.config.isReservedTag = function () { return false }
+// describe(`Vue ${Vue.version}`, () => fn(Vue, {
+// register (name, component) {
+// components[name] = component
+// },
+// reset () {
+// components = {}
+// },
+// createVm (options = {}) {
+// options.components = components
+// return new Vue(options).$mount()
+// },
+// compile (template) {
+// return this.createVm({ template })
+// }
+// }))
+// })
+// })
+// }
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/utils.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/utils.js b/html5/test/render/vue/utils.js
index ddf1bb6..0a38e32 100644
--- a/html5/test/render/vue/utils.js
+++ b/html5/test/render/vue/utils.js
@@ -1,4 +1,3 @@
-import { expect } from 'chai'
import * as utils from '../../../render/vue/utils'
describe('utils', function () {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/validator/check.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/validator/check.js b/html5/test/render/vue/validator/check.js
index e38439c..75b7955 100644
--- a/html5/test/render/vue/validator/check.js
+++ b/html5/test/render/vue/validator/check.js
@@ -1,4 +1,3 @@
-import { expect } from 'chai'
import * as check from '../../../../render/vue/validator/check'
describe('check', () => {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/validator/index.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/validator/index.js b/html5/test/render/vue/validator/index.js
index 5df9456..581dc0b 100644
--- a/html5/test/render/vue/validator/index.js
+++ b/html5/test/render/vue/validator/index.js
@@ -1,4 +1,3 @@
-import { expect } from 'chai'
import * as validator from '../../../../render/vue/validator'
describe('validator', function () {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/validator/prop.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/validator/prop.js b/html5/test/render/vue/validator/prop.js
index 5384c54..0b8fe54 100644
--- a/html5/test/render/vue/validator/prop.js
+++ b/html5/test/render/vue/validator/prop.js
@@ -1,4 +1,3 @@
-import { expect } from 'chai'
import * as prop from '../../../../render/vue/validator/prop'
describe('check property value', () => {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/html5/test/render/vue/validator/style.js
----------------------------------------------------------------------
diff --git a/html5/test/render/vue/validator/style.js b/html5/test/render/vue/validator/style.js
index ae91d4b..55996d1 100644
--- a/html5/test/render/vue/validator/style.js
+++ b/html5/test/render/vue/validator/style.js
@@ -1,4 +1,3 @@
-import { expect } from 'chai'
import * as style from '../../../../render/vue/validator/style'
describe('check style value', () => {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b5ae07c7/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index c3b7784..25d3884 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"test:case": "mocha --require reify html5/test/case/tester.js",
"test:vue": "karma start build/karma.vue.conf.js",
"test:unit": "mocha --require reify html5/test/unit/*/*.js html5/test/unit/*/*/*.js",
- "test": "npm run lint && npm run test:unit && npm run test:case",
+ "test": "npm run lint && npm run test:unit && npm run test:case && npm run test:vue",
"test:cover-html": "babel-istanbul cover --report html node_modules/mocha/bin/_mocha -- --require reify --reporter dot html5/test/unit/*/*.js html5/test/unit/*/*/*.js && open coverage/index.html",
"test:cover": "babel-istanbul cover --report text node_modules/mocha/bin/_mocha -- --require reify --reporter dot html5/test/unit/*/*.js html5/test/unit/*/*/*.js",
"test:e2e": "npm run build:browser && node html5/test/e2e/runner.js",
@@ -119,6 +119,8 @@
"karma-mocha": "^1.3.0",
"karma-mocha-reporter": "^2.2.1",
"karma-phantomjs-launcher": "^1.0.2",
+ "karma-rollup-preprocessor": "^3.0.3",
+ "karma-sinon-chai": "^1.2.4",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^1.8.0",
"macaca-cli": "^1.1.0",
[4/4] incubator-weex git commit: Merge branch '0.11-dev' of
https://git-wip-us.apache.org/repos/asf/incubator-weex;
branch 'dev-web-test' of http://github.com/MrRaindrop/incubator-weex into
0.11-dev This closes #202
Posted by so...@apache.org.
Merge branch '0.11-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex; branch 'dev-web-test' of http://github.com/MrRaindrop/incubator-weex into 0.11-dev
This closes #202
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/58fd3fe7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/58fd3fe7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/58fd3fe7
Branch: refs/heads/0.11-dev
Commit: 58fd3fe79a327ca84f694d54eaa69374ca0817af
Parents: f8abba9 82ff96d
Author: sospartan <so...@apache.org>
Authored: Fri Mar 31 17:41:58 2017 +0800
Committer: sospartan <so...@apache.org>
Committed: Fri Mar 31 17:41:58 2017 +0800
----------------------------------------------------------------------
.eslintrc | 3 +-
build/karma.vue.conf.js | 64 ++++++---
dangerfile.js | 6 +-
html5/render/vue/components/a.js | 3 +-
html5/render/vue/components/div.js | 10 +-
html5/render/vue/components/image.js | 2 +-
html5/render/vue/mixins/base.js | 7 +
html5/test/render/index.js | 3 -
html5/test/render/vue/components/a.js | 38 ++++++
html5/test/render/vue/components/div.js | 29 +++++
html5/test/render/vue/components/image.js | 44 ++++---
html5/test/render/vue/components/list.js | 21 ++-
html5/test/render/vue/components/switch.js | 35 ++---
html5/test/render/vue/components/text.js | 42 +++---
html5/test/render/vue/components/web.js | 14 +-
html5/test/render/vue/examples/list-cell.js | 16 +--
html5/test/render/vue/helper.js | 157 +++++++++++++++++++----
html5/test/render/vue/utils.js | 1 -
html5/test/render/vue/validator/check.js | 1 -
html5/test/render/vue/validator/index.js | 1 -
html5/test/render/vue/validator/prop.js | 1 -
html5/test/render/vue/validator/style.js | 1 -
package.json | 4 +-
23 files changed, 354 insertions(+), 149 deletions(-)
----------------------------------------------------------------------
[2/4] incubator-weex git commit: * [html5] remove unused dependencies.
Posted by so...@apache.org.
* [html5] remove unused dependencies.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/1375a6a1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/1375a6a1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/1375a6a1
Branch: refs/heads/0.11-dev
Commit: 1375a6a13356f340aacb7eca0cef5e4f718cf107
Parents: b5ae07c
Author: MrRaindrop <te...@gmail.com>
Authored: Fri Mar 31 14:38:50 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Fri Mar 31 14:38:50 2017 +0800
----------------------------------------------------------------------
build/karma.vue.conf.js | 3 ---
1 file changed, 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1375a6a1/build/karma.vue.conf.js
----------------------------------------------------------------------
diff --git a/build/karma.vue.conf.js b/build/karma.vue.conf.js
index c447026..8844594 100644
--- a/build/karma.vue.conf.js
+++ b/build/karma.vue.conf.js
@@ -1,6 +1,3 @@
-var flow = require('rollup-plugin-flow')
-var buble = require('rollup-plugin-buble')
-var replace = require('rollup-plugin-replace')
var rollupConfig = require('./config')('weex-vue-render', true)
var path = require('path')
[3/4] incubator-weex git commit: * [html5] fix dangerfile.
Posted by so...@apache.org.
* [html5] fix dangerfile.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/82ff96d9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/82ff96d9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/82ff96d9
Branch: refs/heads/0.11-dev
Commit: 82ff96d989504b932f744e421bb59cec2e6955f4
Parents: 1375a6a
Author: MrRaindrop <te...@gmail.com>
Authored: Fri Mar 31 15:13:15 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Fri Mar 31 15:13:15 2017 +0800
----------------------------------------------------------------------
dangerfile.js | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/82ff96d9/dangerfile.js
----------------------------------------------------------------------
diff --git a/dangerfile.js b/dangerfile.js
index 6d82fdb..b81e155 100644
--- a/dangerfile.js
+++ b/dangerfile.js
@@ -23,7 +23,9 @@ const flowIgnorePaths = [
'bin',
'dist',
'flow-typed'
-].map(absolute);
+].map(function (rel) {
+ return absolute('html5/' + rel)
+});
// new js files should have `@flow` at the top
const unFlowedFiles = jsFiles.filter(filepath => {
@@ -31,7 +33,7 @@ const unFlowedFiles = jsFiles.filter(filepath => {
const len = flowIgnorePaths.length
while (i < len) {
const p = flowIgnorePaths[i]
- if (filepath.indexOf(p) > -1) {
+ if (absolute(filepath).indexOf(p) > -1) {
// ignore this file because it's in the flow-ignore-paths.
return false;
}