UNPKG

3.24 kBJavaScriptView Raw
1
2import { compose } from './fswquery-compose';
3it('should compose generic queries', () => {
4 expect(compose({
5 query: true
6 })).toBe('Q');
7 expect(compose({
8 query: true,
9 style: true
10 })).toBe('Q-');
11})
12
13it('should compose prefix queries', () => {
14 expect(compose({
15 query: true,
16 prefix: { required: true }
17 })).toBe('QT');
18 expect(compose({
19 query: true,
20 prefix: { required: true },
21 style: true
22 })).toBe('QT-');
23 expect(compose({
24 query: true,
25 prefix: {
26 required: true,
27 parts: [
28 'S10000',
29 ['100', '204'],
30 'S20500'
31 ]
32 }
33 })).toBe('QAS10000R100t204S20500T');
34 expect(compose({
35 query: true,
36 prefix: {
37 required: true,
38 parts: [
39 'S10000',
40 [
41 'or',
42 ['100', '204'],
43 'S20500'
44 ]
45 ]
46 }
47 })).toBe('QAS10000R100t204oS20500T');
48})
49
50it('should compose signbox queries', () => {
51 expect(compose({
52 query: true,
53 signbox: [
54 { symbol: 'S20000' }
55 ]
56 })).toBe('QS20000');
57 expect(compose({
58 query: true,
59 signbox: [
60 {
61 symbol: 'S20000',
62 coord: [500, 500]
63 }
64 ]
65 })).toBe('QS20000500x500');
66 expect(compose({
67 query: true,
68 signbox: [
69 { range: ['100', '105'] }
70 ]
71 })).toBe('QR100t105');
72 expect(compose({
73 query: true,
74 signbox: [
75 {
76 range: ['100', '105'],
77 coord: [500, 500]
78 }
79 ]
80 })).toBe('QR100t105500x500');
81 expect(compose({
82 query: true,
83 signbox: [
84 { symbol: 'S20000' },
85 {
86 range: ['100', '105'],
87 coord: [500, 500]
88 }
89 ]
90 })).toBe('QS20000R100t105500x500');
91 expect(compose({
92 query: true,
93 signbox: [
94 {
95 or: [
96 'S20000',
97 ['100', '105']
98 ],
99 coord: [500, 500]
100 }
101 ]
102 })).toBe('QS20000oR100t105500x500');
103})
104
105it('should not break on invalid input', () => {
106 expect(compose()).toBe(undefined);
107 expect(compose('a')).toBe(undefined);
108 expect(compose({ 'a': 5 })).toBe(undefined);
109 expect(compose(['a'])).toBe(undefined);
110})
111
112it('should not break on mangled input', () => {
113 expect(compose({
114 query: true,
115 prefix: {
116 required: true,
117 parts: [
118 'x',
119 ['100', '204'],
120 'S20500'
121 ]
122 }
123 })).toBe('Q');
124 expect(compose({
125 query: true,
126 prefix: {
127 required: true,
128 parts: [
129 ['444', '204'],
130 'S20500'
131 ]
132 }
133 })).toBe('Q');
134 expect(compose({
135 query: true,
136 prefix: {
137 required: true,
138 parts: 'xx'
139 }
140 })).toBe('QT');
141 expect(compose({
142 query: true,
143 prefix: {
144 required: true,
145 parts: [{ a: 'xx' }]
146 }
147 })).toBe('Q');
148 expect(compose({
149 query: true,
150 signbox: [
151 { symbolx: 'S20000' },
152 {
153 rangex: ['100', '105'],
154 coord: [500, 500]
155 }
156 ]
157 })).toBe('Q');
158 expect(compose({
159 query: true,
160 signbox: [
161 { symbol: 'x' },
162 {
163 rangex: ['100', '105'],
164 coord: [500, 500]
165 }
166 ]
167 })).toBe('Q');
168})