UNPKG

avalon2

Version:

an elegant efficient express mvvm framework

200 lines (172 loc) 5.95 kB
import { avalon } from '../../src/seed/core' import { deepEquals } from '../../src/directives/css' describe('css', function () { var body = document.body, div, vm beforeEach(function () { div = document.createElement('div') body.appendChild(div) }) afterEach(function () { body.removeChild(div) delete avalon.vmodels[vm.$id] }) it('background', function (done) { div.innerHTML = heredoc(function () { /* <div ms-controller='css1' ms-css='{background: @a}'>测试样式</div> */ }) vm = avalon.define({ $id: 'css1', a: 'red' }) avalon.scan(div) var css = div.children[0].style expect(css.backgroundColor).toBe('red') vm.a = '#a9ea00' setTimeout(function () { expect(css.backgroundColor).toMatch(/#a9ea00|rgb\(169, 234, 0\)/) vm.a = '#cdcdcd' setTimeout(function () { expect(css.backgroundColor).toMatch(/#cdcdcd|rgb\(205, 205, 205\)/) done() }, 100) }, 100) }) it('float', function (done) { div.innerHTML = heredoc(function () { /* <div ms-controller='css2' ms-css='{float:@a}'>测试样式</div> */ }) vm = avalon.define({ $id: 'css2', a: 'right' }) avalon.scan(div) var child = avalon(div.children[0]) expect(child.css('float')).toBe('right') vm.a = 'left' vm.a = 'right' vm.a = 'left' setTimeout(function () { expect(child.css('float')).toBe('left') done() },100) }) it('width', function (done) { div.innerHTML = heredoc(function () { /* <div ms-controller='css3' ms-css="{width: @a}">测试样式</div> */ }) vm = avalon.define({ $id: 'css3', a: 100 }) avalon.scan(div) expect(avalon(div.children[0]).width()).toBe(100) expect(div.children[0].style.width).toBe('100px') vm.a = 150 setTimeout(function () { expect(avalon(div.children[0]).width()).toBe(150) expect(div.children[0].style.width).toBe('150px') done() }) }) it('opacity', function (done) { div.innerHTML = heredoc(function () { /* <div ms-controller='css4' ms-css='{opacity:@a}'>测试样式</div> */ }) vm = avalon.define({ $id: 'css4', a: 0.6 }) avalon.scan(div) var el = avalon(div.children[0]) expect(Number(el.css('opacity')).toFixed(2)).toBe('0.60') vm.a = 8 setTimeout(function () { expect(el.css('opacity')).toBe('1') done() }) }) it('array', function (done) { div.innerHTML = heredoc(function () { /* <div ms-controller='css5' ms-css='[@aa,@bb]'>测试样式</div> */ }) vm = avalon.define({ $id: 'css5', aa: { background: 'red' }, bb: { width: 200, height: 200 } }) avalon.scan(div) setTimeout(function () { var el = avalon(div.children[0]) expect(el.width()).toBe(200) expect(el.height()).toBe(200) expect(vm.aa.$model.width).toBe(void 0) expect(el.css('backgroundColor')).toMatch(/red|rgb\(255,\s*0,\s*0\)/) setTimeout(function () { vm.aa = {} //IE6-8下返回transparent expect(el.css('backgroundColor')).toMatch(/transparent|rgba\(0,\s*0,\s*0,\s*0\)/) done() }, 100) }, 100) }) it('deepEquals', function () { expect(deepEquals( { a: [2, 3], b: [4] }, { a: [2, 3], b: [4] })).toBe(true) expect(deepEquals( { x: 5, y: [6] }, { x: 5, y: 6 })).toBe(false) expect(deepEquals( { x: 5, y: 4, z: 8 }, { x: 5, y: 6 })).toBe(false) expect(deepEquals( { x: 5, y: { a: 4 } }, { x: 5, y: { a: 4 } })).toBe(true) expect(deepEquals( [null, null, null], [null, null, null])).toBe(true) expect(deepEquals( [{ a: 3 }, { b: 4 }], [{ a: '3' }, { b: '4' }])).toBe(false) expect(deepEquals(3, 3)).toBe(true) expect(deepEquals({ a: 1 }, { a: 1 }, 0)).toBe(false) expect(deepEquals('aaa', 'aaa')).toBe(true) expect(deepEquals(3, 3)).toBe(true) expect(deepEquals( (function () { return arguments })(1, 2, 3), (function () { return arguments })(1, 2, 3)) ).toBe(true) expect(deepEquals( [1, 2, 3], (function () { return arguments })(1, 2, 3)) ).toBe(false) var d0 = new Date(1387585278000); var d1 = new Date('Fri Dec 20 2013 16:21:18 GMT-0800 (PST)'); expect(deepEquals(d0, d1)).toBe(true) expect(deepEquals(null, void 0)).toBe(false) expect(deepEquals(void 0, void 0)).toBe(true) expect(deepEquals(null, 111)).toBe(false) expect(deepEquals([1, 2, 3], [4, 5, 6, 7, 8])).toBe(false) expect(deepEquals([{ a: 1 }, { b: 1 }], [{ a: 1 }, { b: 1 }])).toBe(true) expect(deepEquals([{ a: 1 }, { b: 1 }], [{ a: 1 }, { b: 2 }])).toBe(false) expect(deepEquals([], true)).toBe(false) expect(deepEquals({ a: 1 }, null)).toBe(false) expect(deepEquals(null, null)).toBe(true) expect(deepEquals({a:1,b:2}, {})).toBe(false) expect(deepEquals({a:1,b:2}, {d:1,c:2})).toBe(false) }) })