UNPKG

6.24 kBJavaScriptView Raw
1import match from 'MATCH/match';
2const expect = require('chai').expect;
3
4
5// 直接匹配
6var params = {
7 abc: 1
8};
9var data = match.parse(params, {
10 title: '$${{abc}}'
11});
12expect(data).to.be.eql({
13 title: 1
14});
15
16
17// 匹配对象嵌套
18var params = {
19 abc: 1,
20 name: {
21 id: 100
22 }
23};
24var data = match.parse(params, {
25 title: '$${{abc}}',
26 id: {
27 id: '$${{name.id}}'
28 }
29});
30expect(data).to.be.eql({
31 title: 1,
32 id: {
33 id: 100
34 }
35});
36var params = {
37};
38var data = match.parse(params, {
39 title: '$${{abc}}',
40 data: {
41 id: '$${{name.id}}'
42 },
43 text: {
44 title: '$${{name.abc}}'
45 }
46});
47expect(data).to.be.eql({
48 data: {
49 },
50 text: {
51 }
52});
53
54// 匹配默认值
55var params = {
56 abcd: 1
57};
58var data = match.parse(params, {
59 title: '$${{abc}} || 123'
60});
61expect(data).to.be.eql({
62 title: 123
63});
64
65var data = match.parse(params, {
66 title: '$${{abc}} || true'
67});
68expect(data).to.be.eql({
69 title: true
70});
71
72var data = match.parse(params, {
73 title: '$${{abc}} || false'
74});
75expect(data).to.be.eql({
76 title: false
77});
78
79var data = match.parse(params, {
80 title: '$${{abc}} || "123"'
81});
82expect(data).to.be.eql({
83 title: '123'
84});
85
86var data = match.parse(params, {
87 title: "$${{abc}} || '123'"
88});
89expect(data).to.be.eql({
90 title: '123'
91});
92var data = match.parse(params, {
93 title: '$${{abc}} || []'
94});
95expect(data).to.be.eql({
96 title: []
97});
98var data = match.parse(params, {
99 title: '$${{abc}} || {}'
100});
101expect(data).to.be.eql({
102 title: {}
103});
104
105
106// 暂时没有完成的匹配
107var b = 1;
108var data = match.parse(params, {
109 title: '$${{abc}} || {{b}}'
110});
111// console.log(data);
112
113
114// 匹配function
115var params = {
116 pid: 1,
117 id: 2
118};
119var data = match.parse(params, {
120 pid: 1,
121 id: function (data) {
122 // this 指向自身 data 指向params
123 return data.pid + data.id + this.pid;
124 }
125});
126expect(data).to.be.eql({
127 pid: 1,
128 id: 4
129});
130
131
132
133// 匹配对象数组
134var params = [
135 {
136 id: 1,
137 type: 2
138 },
139 {
140 id: 2
141 }
142];
143var data = match.parse(params, [{
144 id: '$${{id}}',
145 title: 'string',
146 type: "$${{type}} || 'abc'"
147}]);
148expect(data).to.be.eql([
149 {
150 id: 1,
151 title: 'string',
152 type: 2
153 },
154 {
155 id: 2,
156 title: 'string',
157 type: 'abc'
158 }
159]);
160var params = null;
161var data = match.parse(params, [{
162 id: '$${{id}}',
163 title: 'string',
164 type: "$${{type}} || 'abc'"
165}]);
166expect(data).to.be.eql([]);
167
168var params = {
169};
170var data = match.parse(params, ['data', {
171 id: '$${{id}}',
172 title: 'string',
173 type: "$${{type}} || 'abc'"
174}]);
175expect(data).to.be.eql([]);
176
177var params = {
178 data: [
179 {
180 id: 1,
181 type: 2
182 },
183 {
184 id: 2
185 }
186 ]
187};
188var data = match.parse(params, ['data', {
189 id: '$${{id}}',
190 title: 'string',
191 type: "$${{type}} || 'abc'"
192}]);
193expect(data).to.be.eql([
194 {
195 id: 1,
196 title: 'string',
197 type: 2
198 },
199 {
200 id: 2,
201 title: 'string',
202 type: 'abc'
203 }
204]);
205var params = {
206 data: {
207 table: [
208 {
209 id: 1,
210 type: 2
211 },
212 {
213 id: 2
214 }
215 ]
216 }
217};
218var data = match.parse(params, ['data.table', {
219 id: '$${{id}}',
220 title: 'string',
221 type: "$${{type}} || 'abc'"
222}]);
223expect(data).to.be.eql([
224 {
225 id: 1,
226 title: 'string',
227 type: 2
228 },
229 {
230 id: 2,
231 title: 'string',
232 type: 'abc'
233 }
234]);
235
236// 映射对象数组
237var params = {
238 code: 200,
239 msg: 'ok',
240 data: [
241 {
242 id: 1,
243 type: 'a'
244 },
245 {
246 id: 2
247 }
248 ]
249};
250var data = match.parse(params, {
251 code: '$${{code}}',
252 msg: '$${{msg}}',
253 data: ['data', {
254 id: '$${{id}}',
255 title: 'string',
256 type: "$${{type}} || 'abc'"
257 }]
258});
259expect(data).to.be.eql({
260 code: 200,
261 msg: 'ok',
262 data: [
263 {
264 id: 1,
265 title: 'string',
266 type: 'a'
267 },
268 {
269 id: 2,
270 title: 'string',
271 type: 'abc'
272 }
273 ]
274});
275
276var params = {
277 code: 200,
278 msg: 'ok',
279 data: null
280};
281var data = match.parse(params, {
282 code: '$${{code}}',
283 msg: '$${{msg}}',
284 data: ['data', {
285 id: '$${{id}}',
286 title: 'string',
287 type: "$${{type}} || 'abc'"
288 }]
289});
290expect(data).to.be.eql({
291 code: 200,
292 msg: 'ok',
293 data: [
294 ]
295});
296
297// 注册辅助函数或全局变量
298var params = {
299 pid: 1,
300 id: 2
301};
302var format = {
303 a: function () {
304 return 1;
305 },
306 b: function () {
307 return 2;
308 }
309};
310
311// 测试register为一个对象
312match.register(format, 'format');
313var data = match.parse(params, {
314 pid: 1,
315 id: function (data, format) {
316 // this 指向自身 data 指向params
317 return data.pid + data.id + this.pid + format.b();
318 }
319});
320expect(data).to.be.eql({
321 pid: 1,
322 id: 6
323});
324
325// 测试register为一个数组
326match.register([format], 'format');
327var data = match.parse(params, {
328 pid: 1,
329 id: function (data, format) {
330 // this 指向自身 data 指向params
331 return data.pid + data.id + this.pid + format.b();
332 }
333});
334expect(data).to.be.eql({
335 pid: 1,
336 id: 6
337});
338
339// 测试update
340var format = {
341 a: function () {
342 return 11;
343 },
344 b: function () {
345 return 22;
346 }
347};
348match.update(format, 'format');
349var data = match.parse(params, {
350 pid: 1,
351 id: function (data, format) {
352 // this 指向自身 data 指向params
353 return data.pid + data.id + this.pid + format.b();
354 }
355});
356expect(data).to.be.eql({
357 pid: 1,
358 id: 26
359});
360
361
362// 移除format 抛出异常
363match.remove('format');
364var data = match.parse(params, {
365 pid: 1,
366 id: function (data, format) {
367 // this 指向自身 data 指向params
368 return data.pid + data.id + this.pid + format.b();
369 }
370});
371expect(data).to.be.eql({
372 pid: 1
373});
374
375
376// 测试过滤undefined
377var data = match.parse(params, {
378 id: '$${{xx}}'
379});
380expect(data).to.be.eql({
381});