|
@@ -1,33 +1,39 @@
|
|
|
import { parseModel } from 'compiler/directives/model'
|
|
import { parseModel } from 'compiler/directives/model'
|
|
|
|
|
|
|
|
describe('model expression parser', () => {
|
|
describe('model expression parser', () => {
|
|
|
|
|
+ it('parse single path', () => {
|
|
|
|
|
+ const res = parseModel('foo')
|
|
|
|
|
+ expect(res.exp).toBe('foo')
|
|
|
|
|
+ expect(res.key).toBe(null)
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
it('parse object dot notation', () => {
|
|
it('parse object dot notation', () => {
|
|
|
const res = parseModel('a.b.c')
|
|
const res = parseModel('a.b.c')
|
|
|
- expect(res.exp).toBe('a.b.c')
|
|
|
|
|
- expect(res.idx).toBe(null)
|
|
|
|
|
|
|
+ expect(res.exp).toBe('a.b')
|
|
|
|
|
+ expect(res.key).toBe('"c"')
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
it('parse string in brackets', () => {
|
|
it('parse string in brackets', () => {
|
|
|
const res = parseModel('a["b"][c]')
|
|
const res = parseModel('a["b"][c]')
|
|
|
expect(res.exp).toBe('a["b"]')
|
|
expect(res.exp).toBe('a["b"]')
|
|
|
- expect(res.idx).toBe('c')
|
|
|
|
|
|
|
+ expect(res.key).toBe('c')
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
it('parse brackets with object dot notation', () => {
|
|
it('parse brackets with object dot notation', () => {
|
|
|
const res = parseModel('a["b"][c].xxx')
|
|
const res = parseModel('a["b"][c].xxx')
|
|
|
- expect(res.exp).toBe('a["b"][c].xxx')
|
|
|
|
|
- expect(res.idx).toBe(null)
|
|
|
|
|
|
|
+ expect(res.exp).toBe('a["b"][c]')
|
|
|
|
|
+ expect(res.key).toBe('"xxx"')
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
it('parse nested brackets', () => {
|
|
it('parse nested brackets', () => {
|
|
|
const res = parseModel('a[i[c]]')
|
|
const res = parseModel('a[i[c]]')
|
|
|
expect(res.exp).toBe('a')
|
|
expect(res.exp).toBe('a')
|
|
|
- expect(res.idx).toBe('i[c]')
|
|
|
|
|
|
|
+ expect(res.key).toBe('i[c]')
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
it('combined', () => {
|
|
it('combined', () => {
|
|
|
- const res = parseModel('test.xxx.a["asa"][test1[idx]]')
|
|
|
|
|
|
|
+ const res = parseModel('test.xxx.a["asa"][test1[key]]')
|
|
|
expect(res.exp).toBe('test.xxx.a["asa"]')
|
|
expect(res.exp).toBe('test.xxx.a["asa"]')
|
|
|
- expect(res.idx).toBe('test1[idx]')
|
|
|
|
|
|
|
+ expect(res.key).toBe('test1[key]')
|
|
|
})
|
|
})
|
|
|
})
|
|
})
|