|
|
@@ -343,150 +343,6 @@ if (_.inBrowser) {
|
|
|
expect(vm.test[1]).toBe('c')
|
|
|
})
|
|
|
|
|
|
- it('select + options', function (done) {
|
|
|
- var vm = new Vue({
|
|
|
- el: el,
|
|
|
- data: {
|
|
|
- test: 'b',
|
|
|
- opts: ['a', 'b', 'c']
|
|
|
- },
|
|
|
- template: '<select v-model="test" options="opts"></select>'
|
|
|
- })
|
|
|
- var opts = el.firstChild.options
|
|
|
- expect(opts.length).toBe(3)
|
|
|
- expect(opts[0].selected).toBe(false)
|
|
|
- expect(opts[1].selected).toBe(true)
|
|
|
- expect(opts[2].selected).toBe(false)
|
|
|
- vm.opts = ['b', 'c']
|
|
|
- _.nextTick(function () {
|
|
|
- expect(opts.length).toBe(2)
|
|
|
- expect(opts[0].selected).toBe(true)
|
|
|
- expect(opts[1].selected).toBe(false)
|
|
|
- // should teardown option watcher when unbind
|
|
|
- expect(vm._watchers.length).toBe(2)
|
|
|
- vm._directives[0]._teardown()
|
|
|
- expect(vm._watchers.length).toBe(0)
|
|
|
- done()
|
|
|
- })
|
|
|
- })
|
|
|
-
|
|
|
- it('select + options + text', function () {
|
|
|
- new Vue({
|
|
|
- el: el,
|
|
|
- data: {
|
|
|
- test: 'b',
|
|
|
- opts: [
|
|
|
- { text: 'Select an option', value: null, disabled: true },
|
|
|
- { text: 'A', value: 'a' },
|
|
|
- { text: 'B', value: 'b' }
|
|
|
- ]
|
|
|
- },
|
|
|
- template: '<select v-model="test" options="opts"></select>'
|
|
|
- })
|
|
|
- expect(el.firstChild.innerHTML).toBe(
|
|
|
- '<option disabled="">Select an option</option>' +
|
|
|
- '<option value="a">A</option>' +
|
|
|
- '<option value="b">B</option>'
|
|
|
- )
|
|
|
- var opts = el.firstChild.options
|
|
|
- expect(opts[0].disabled).toBe(true)
|
|
|
- expect(opts[0].selected).toBe(false)
|
|
|
- expect(opts[1].selected).toBe(false)
|
|
|
- expect(opts[2].selected).toBe(true)
|
|
|
- })
|
|
|
-
|
|
|
- it('select + options + optgroup', function () {
|
|
|
- new Vue({
|
|
|
- el: el,
|
|
|
- data: {
|
|
|
- test: 'b',
|
|
|
- opts: [
|
|
|
- { label: 'A', options: ['a', 'b'] },
|
|
|
- { label: 'B', options: ['c'] }
|
|
|
- ]
|
|
|
- },
|
|
|
- template: '<select v-model="test" options="opts"></select>'
|
|
|
- })
|
|
|
- expect(el.firstChild.innerHTML).toBe(
|
|
|
- '<optgroup label="A">' +
|
|
|
- '<option value="a">a</option><option value="b">b</option>' +
|
|
|
- '</optgroup>' +
|
|
|
- '<optgroup label="B">' +
|
|
|
- '<option value="c">c</option>' +
|
|
|
- '</optgroup>'
|
|
|
- )
|
|
|
- var opts = el.firstChild.options
|
|
|
- expect(opts[0].selected).toBe(false)
|
|
|
- expect(opts[1].selected).toBe(true)
|
|
|
- expect(opts[2].selected).toBe(false)
|
|
|
- })
|
|
|
-
|
|
|
- it('select + options with Object value', function (done) {
|
|
|
- var vm = new Vue({
|
|
|
- el: el,
|
|
|
- data: {
|
|
|
- test: { msg: 'A' },
|
|
|
- opts: [
|
|
|
- { text: 'a', value: { msg: 'A' }},
|
|
|
- { text: 'b', value: { msg: 'B' }}
|
|
|
- ]
|
|
|
- },
|
|
|
- template: '<select v-model="test" options="opts"></select>'
|
|
|
- })
|
|
|
- var select = el.firstChild
|
|
|
- var opts = select.options
|
|
|
- expect(opts[0].selected).toBe(true)
|
|
|
- expect(opts[1].selected).toBe(false)
|
|
|
- expect(vm.test.msg).toBe('A')
|
|
|
- opts[1].selected = true
|
|
|
- trigger(select, 'change')
|
|
|
- _.nextTick(function () {
|
|
|
- expect(opts[0].selected).toBe(false)
|
|
|
- expect(opts[1].selected).toBe(true)
|
|
|
- expect(vm.test.msg).toBe('B')
|
|
|
- vm.test = { msg: 'A' }
|
|
|
- _.nextTick(function () {
|
|
|
- expect(opts[0].selected).toBe(true)
|
|
|
- expect(opts[1].selected).toBe(false)
|
|
|
- done()
|
|
|
- })
|
|
|
- })
|
|
|
- })
|
|
|
-
|
|
|
- it('select + options + multiple + Object value', function (done) {
|
|
|
- var vm = new Vue({
|
|
|
- el: el,
|
|
|
- data: {
|
|
|
- test: [{ msg: 'A' }, { msg: 'B'}],
|
|
|
- opts: [
|
|
|
- { text: 'a', value: { msg: 'A' }},
|
|
|
- { text: 'b', value: { msg: 'B' }},
|
|
|
- { text: 'c', value: { msg: 'C' }}
|
|
|
- ]
|
|
|
- },
|
|
|
- template: '<select v-model="test" options="opts" multiple></select>'
|
|
|
- })
|
|
|
- var select = el.firstChild
|
|
|
- var opts = select.options
|
|
|
- expect(opts[0].selected).toBe(true)
|
|
|
- expect(opts[1].selected).toBe(true)
|
|
|
- expect(opts[2].selected).toBe(false)
|
|
|
- vm.test = [{ msg: 'C' }]
|
|
|
- _.nextTick(function () {
|
|
|
- expect(opts[0].selected).toBe(false)
|
|
|
- expect(opts[1].selected).toBe(false)
|
|
|
- expect(opts[2].selected).toBe(true)
|
|
|
- opts[1].selected = true
|
|
|
- opts[2].selected = false
|
|
|
- trigger(select, 'change')
|
|
|
- _.nextTick(function () {
|
|
|
- expect(vm.test.length).toBe(1)
|
|
|
- expect(vm.test[0].msg).toBe('B')
|
|
|
- done()
|
|
|
- })
|
|
|
- })
|
|
|
- })
|
|
|
-
|
|
|
it('select + number', function () {
|
|
|
var vm = new Vue({
|
|
|
el: el,
|
|
|
@@ -527,56 +383,7 @@ if (_.inBrowser) {
|
|
|
expect(vm.test).toBe(1)
|
|
|
})
|
|
|
|
|
|
- it('select + options + filter', function () {
|
|
|
- new Vue({
|
|
|
- el: el,
|
|
|
- data: {
|
|
|
- opts: ['a', 'b']
|
|
|
- },
|
|
|
- filters: {
|
|
|
- aFilter: function (opts) {
|
|
|
- return opts.map(function (val, i) {
|
|
|
- return val + i
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
- template: '<select v-model="test" options="opts | aFilter"></select>'
|
|
|
- })
|
|
|
- expect(el.firstChild.innerHTML).toBe(
|
|
|
- '<option value="a0">a0</option>' +
|
|
|
- '<option value="b1">b1</option>'
|
|
|
- )
|
|
|
- })
|
|
|
-
|
|
|
- it('select + options + static option', function (done) {
|
|
|
- var vm = new Vue({
|
|
|
- el: el,
|
|
|
- data: {
|
|
|
- opts: ['a', 'b']
|
|
|
- },
|
|
|
- template:
|
|
|
- '<select v-model="test" options="opts">' +
|
|
|
- '<option value="">default...</option>' +
|
|
|
- '</select>'
|
|
|
- })
|
|
|
- expect(el.firstChild.innerHTML).toBe(
|
|
|
- '<option value="">default...</option>' +
|
|
|
- '<option value="a">a</option>' +
|
|
|
- '<option value="b">b</option>'
|
|
|
- )
|
|
|
- expect(el.firstChild.options[0].selected).toBe(true)
|
|
|
- vm.opts = ['c']
|
|
|
- _.nextTick(function () {
|
|
|
- expect(el.firstChild.innerHTML).toBe(
|
|
|
- '<option value="">default...</option>' +
|
|
|
- '<option value="c">c</option>'
|
|
|
- )
|
|
|
- expect(el.firstChild.options[0].selected).toBe(true)
|
|
|
- done()
|
|
|
- })
|
|
|
- })
|
|
|
-
|
|
|
- it('select + v-for (1.0.0)', function (done) {
|
|
|
+ it('select + v-for', function (done) {
|
|
|
var vm = new Vue({
|
|
|
el: el,
|
|
|
data: {
|
|
|
@@ -845,15 +652,6 @@ if (_.inBrowser) {
|
|
|
expect(hasWarned(_, 'does not support element type')).toBe(true)
|
|
|
})
|
|
|
|
|
|
- it('warn invalid option value', function () {
|
|
|
- new Vue({
|
|
|
- el: el,
|
|
|
- data: { a: 123 },
|
|
|
- template: '<select v-model="test" options="a"></select>'
|
|
|
- })
|
|
|
- expect(hasWarned(_, 'Invalid options value')).toBe(true)
|
|
|
- })
|
|
|
-
|
|
|
it('warn read-only filters', function () {
|
|
|
new Vue({
|
|
|
el: el,
|