it('normal directives', function () { el.setAttribute('v-a', 'b') el.innerHTML = '<p v-a:hello.a.b="a" v-b="1">hello</p><div v-b.literal="hi"></div>' var defA = { priority: 1 } var defB = { priority: 2 } var options = _.mergeOptions(Vue.options, { directives: { a: defA, b: defB } }) var linker = compile(el, options) expect(typeof linker).toBe('function') linker(vm, el) expect(directiveBind.calls.count()).toBe(4) expect(vm._bindDir.calls.count()).toBe(4) // check if we are in firefox, which has different // attribute interation order var isAttrReversed = el.firstChild.attributes[0].name === 'v-b' // 1 var args = vm._bindDir.calls.argsFor(0) expect(args[0].name).toBe('a') expect(args[0].expression).toBe('b') expect(args[0].def).toBe(defA) expect(args[1]).toBe(el) // 2 args = vm._bindDir.calls.argsFor(isAttrReversed ? 2 : 1) expect(args[0].name).toBe('a') expect(args[0].expression).toBe('a') expect(args[0].def).toBe(defA) // args + multiple modifiers expect(args[0].arg).toBe('hello') expect(args[0].modifiers.a).toBe(true) expect(args[0].modifiers.b).toBe(true) expect(args[1]).toBe(el.firstChild) // 3 (expression literal) args = vm._bindDir.calls.argsFor(isAttrReversed ? 1 : 2) expect(args[0].name).toBe('b') expect(args[0].expression).toBe('1') expect(args[0].def).toBe(defB) expect(args[1]).toBe(el.firstChild) // 4 (explicit literal) args = vm._bindDir.calls.argsFor(3) expect(args[0].name).toBe('b') expect(args[0].expression).toBe('hi') expect(args[0].def).toBe(defB) expect(args[0].modifiers.literal).toBe(true) expect(args[1]).toBe(el.lastChild) // check the priority sorting // the "b"s should be called first! expect(directiveBind.calls.argsFor(0)[0]).toBe('b') expect(directiveBind.calls.argsFor(1)[0]).toBe('b') expect(directiveBind.calls.argsFor(2)[0]).toBe('a') expect(directiveBind.calls.argsFor(3)[0]).toBe('a') })
it('custom element components', function () { var options = _.mergeOptions(Vue.options, { components: { 'my-component': {} } }) el.innerHTML = '<my-component><div v-a="b"></div></my-component>' var linker = compile(el, options) linker(vm, el) expect(vm._bindDir.calls.count()).toBe(1) var args = vm._bindDir.calls.argsFor(0) expect(args[0].name).toBe('component') expect(args[0].expression).toBe('my-component') expect(args[0].modifiers.literal).toBe(true) expect(args[0].def).toBe(internalDirectives.component) expect(getWarnCount()).toBe(0) })