forked from urfu-2016/javascript-task-4
-
Notifications
You must be signed in to change notification settings - Fork 0
/
lego.spec.js
110 lines (104 loc) · 3.25 KB
/
lego.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* eslint-env mocha */
'use strict';
var assert = require('assert');
var lego = require('./lego');
var friends = [
{
name: 'Сэм',
age: 29,
gender: 'Мужской',
email: '[email protected]',
phone: '+7 (555) 505-3570',
favoriteFruit: 'Картофель'
},
{
name: 'Эмили',
age: 30,
gender: 'Женский',
email: '[email protected]',
phone: '+7 (555) 539-2625',
favoriteFruit: 'Яблоко'
},
{
name: 'Мэт',
age: 27,
gender: 'Мужской',
email: '[email protected]',
phone: '+7 (555) 526-2845',
favoriteFruit: 'Яблоко'
},
{
name: 'Брэд',
age: 28,
gender: 'Мужской',
email: '[email protected]',
phone: '+7 (555) 519-3304',
favoriteFruit: 'Банан'
},
{
name: 'Шерри',
age: 27,
gender: 'Женский',
email: '[email protected]',
phone: '+7 (555) 526-2845',
favoriteFruit: 'Картофель'
},
{
name: 'Керри',
age: 36,
gender: 'Женский',
email: '[email protected]',
phone: '+7 (555) 526-2845',
favoriteFruit: 'Апельсин'
},
{
name: 'Стелла',
age: 25,
gender: 'Женский',
email: '[email protected]',
phone: '+7 (555) 415-3100',
favoriteFruit: 'Картофель'
}
];
describe('lego.query', function () {
it('должен вернуть отобранные и отсортированные записи', function () {
var result = lego.query(
friends,
lego.select('name', 'gender', 'email'),
lego.filterIn('favoriteFruit', ['Яблоко', 'Картофель']),
lego.sortBy('age', 'asc'),
lego.format('gender', function (value) {
return value[0];
}),
lego.limit(4)
);
assert.deepStrictEqual(result, [
{ name: 'Стелла', gender: 'Ж', email: '[email protected]' },
{ name: 'Мэт', gender: 'М', email: '[email protected]' },
{ name: 'Шерри', gender: 'Ж', email: '[email protected]' },
{ name: 'Сэм', gender: 'М', email: '[email protected]' }
]);
});
if (lego.isStar) {
it('должен поддерживать операторы or и and', function () {
var result = lego.query(
friends,
lego.select('name'),
lego.or(
lego.and(
lego.filterIn('gender', ['Мужской']),
lego.filterIn('favoriteFruit', ['Картофель'])
),
lego.and(
lego.filterIn('gender', ['Женский']),
lego.filterIn('favoriteFruit', ['Яблоко'])
)
)
);
assert.deepStrictEqual(result, [
{ name: 'Сэм' },
{ name: 'Эмили' }
]);
});
}
});