Skip to content

Commit 28791c4

Browse files
committed
[Tests] handle things missing in older envs
- node < 4 lacks `Array.from` - node < 1 lacks `Array#some` - node <= 0.12 lacks `Array#includes` - node <= 0.10 lacks `Symbol.iterator` - avoid `async`/`await` unless strictly necessary
1 parent 2106d5e commit 28791c4

File tree

8 files changed

+103
-46
lines changed

8 files changed

+103
-46
lines changed

__tests__/src/ariaPropsMaps-test.js

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import test from 'tape';
22
import deepEqual from 'deep-equal-json';
33
import inspect from 'object-inspect';
4+
import some from 'array.prototype.some';
45

56
import ariaPropsMap from 'aria-query/src/ariaPropsMap';
67
import rolesMap from 'aria-query/src/rolesMap';
@@ -59,7 +60,7 @@ const entriesList = [
5960
['aria-valuetext', {'type': 'string'}],
6061
];
6162

62-
test('ariaPropsMap API', async (t) => {
63+
test('ariaPropsMap API', (t) => {
6364
t.test('iteration', async (st) => {
6465
st.notEqual(ariaPropsMap[Symbol.iterator], undefined, 'has an iterator defined');
6566
st.equal([...ariaPropsMap].length, 51, 'has a specific length');
@@ -107,14 +108,18 @@ test('ariaPropsMap API', async (t) => {
107108
}
108109
});
109110

110-
t.test('get()', async (st) => {
111+
t.test('get()', (st) => {
111112
st.notEqual(ariaPropsMap.get('aria-label'), undefined, 'has a defined prop')
112113
st.equal(ariaPropsMap.get('fake prop'), undefined, 'returns undefined for a fake prop');
114+
115+
st.end();
113116
});
114117

115-
t.test('has()', async (st) => {
118+
t.test('has()', (st) => {
116119
st.equal(ariaPropsMap.has('aria-label'), true, 'has a defined prop');
117120
st.equal(ariaPropsMap.has('fake prop'), false, 'returns false for a fake prop');
121+
122+
st.end();
118123
});
119124

120125
t.test('keys(), iteration', async (st) => {
@@ -130,15 +135,15 @@ test('ariaPropsMap API', async (t) => {
130135

131136
t.test('values(), iteration', async (st) => {
132137
for (const values of ariaPropsMap.values()) {
133-
st.ok(entriesList.some(([, x]) => deepEqual(x, values)), `for-of has object values: ${inspect(values)}`);
138+
st.ok(some(entriesList, ([, x]) => deepEqual(x, values)), `for-of has object values: ${inspect(values)}`);
134139
}
135140

136141
[...ariaPropsMap.values()].forEach((values) => {
137-
st.ok(entriesList.some(([, x]) => deepEqual(x, values)), `spread has object values: ${inspect(values)}`);
142+
st.ok(some(entriesList, ([, x]) => deepEqual(x, values)), `spread has object values: ${inspect(values)}`);
138143
});
139144
});
140145

141-
t.test('props and role defintions', async (st) => {
146+
t.test('props and role defintions', (st) => {
142147
const usedProps = [];
143148
for (const roleDefinition of rolesMap.values()) {
144149
for (const prop of Object.keys(roleDefinition.props)) {
@@ -158,5 +163,9 @@ test('ariaPropsMap API', async (t) => {
158163
ariaPropsMap.forEach((value, key) => {
159164
st.ok(usedProps.filter(p => p === key)[0], `has prop: ${key}`);
160165
});
166+
167+
st.end();
161168
});
169+
170+
t.end();
162171
});

__tests__/src/domMap-test.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import test from 'tape';
22
import deepEqual from 'deep-equal-json';
33
import inspect from 'object-inspect';
4+
import some from 'array.prototype.some';
45

56
import domMap from 'aria-query/src/domMap';
67

@@ -136,7 +137,7 @@ const entriesList = [
136137
["xmp", {"reserved": false}],
137138
];
138139

139-
test('domMap API', async (t) => {
140+
test('domMap API', (t) => {
140141
t.test('iteration', async (st) => {
141142
st.notEqual(domMap[Symbol.iterator], undefined, 'has an iterator defined');
142143
st.equal([...domMap].length, 129, 'has a specific length');
@@ -178,20 +179,24 @@ test('domMap API', async (t) => {
178179
for (let i = 0; i < output.length; i++) {
179180
const [obj, roles] = output[i];
180181
const found = entriesList.filter(([o]) => deepEqual(o, obj))[0];
181-
182+
182183
st.ok(found, `\`forEach\` has element: ${inspect(obj)}`);
183184
st.deepEqual(roles, found[1], `\`forEach\` has object elements`);
184185
}
185186
});
186187

187-
t.test('get()', async (st) => {
188+
t.test('get()', (st) => {
188189
st.notEqual(domMap.get('a'), undefined, 'has a defined element')
189190
st.equal(domMap.get('fake element'), undefined, 'returns undefined for a fake element');
191+
192+
st.end();
190193
});
191194

192-
t.test('has()', async (st) => {
195+
t.test('has()', (st) => {
193196
st.equal(domMap.has('a'), true, 'has a defined element');
194197
st.equal(domMap.has('fake element'), false, 'returns false for a fake element');
198+
199+
st.end();
195200
});
196201

197202
t.test('keys(), iteration', async (st) => {
@@ -207,11 +212,13 @@ test('domMap API', async (t) => {
207212

208213
t.test('values(), iteration', async (st) => {
209214
for (const values of domMap.values()) {
210-
st.ok(entriesList.some(([, x]) => deepEqual(x, values)), `for-of has object values: ${inspect(values)}`);
215+
st.ok(some(entriesList, (([, x]) => deepEqual(x, values)), `for-of has object values: ${inspect(values)}`));
211216
}
212217

213218
[...domMap.values()].forEach((values) => {
214-
st.ok(entriesList.some(([, x]) => deepEqual(x, values)), `spread has object values: ${inspect(values)}`);
219+
st.ok(some(entriesList, (([, x]) => deepEqual(x, values)), `spread has object values: ${inspect(values)}`));
215220
});
216221
});
222+
223+
t.end();
217224
});

__tests__/src/elementRoleMap-test.js

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import test from 'tape';
22
import deepEqual from 'deep-equal-json';
33
import inspect from 'object-inspect';
4+
import some from 'array.prototype.some';
45

56
import elementRoleMap from 'aria-query/src/elementRoleMap';
67

@@ -125,7 +126,7 @@ const entriesList = [
125126
[{"name": "time"}, ["time"]],
126127
];
127128

128-
test('elementRoleMap API', async (t) => {
129+
test('elementRoleMap API', (t) => {
129130
t.test('iteration', async (st) => {
130131
st.notEqual(elementRoleMap[Symbol.iterator], undefined, 'has an iterator defined');
131132
st.equal([...elementRoleMap].length, 112, 'has a specific length');
@@ -154,7 +155,7 @@ test('elementRoleMap API', async (t) => {
154155
});
155156
});
156157

157-
t.test('forEach()', async (st) => {
158+
t.test('forEach()', (st) => {
158159
const output = [];
159160
let context;
160161
elementRoleMap.forEach((value, key, map) => {
@@ -171,28 +172,32 @@ test('elementRoleMap API', async (t) => {
171172
st.ok(found, `\`forEach\` has element: ${inspect(obj)}`);
172173
st.deepEqual(roles, found[1], `\`forEach\` has object elements`);
173174
}
175+
176+
st.end();
174177
});
175178

176-
t.test('get()', async (st) => {
177-
st.ok(
179+
t.test('get()', (st) => {
180+
st.ok(some(
178181
elementRoleMap.get({
179182
attributes: [
180183
{ constraints: ["set"], name: 'href' }
181184
],
182185
name: 'a'
183-
}).some(x => x.includes('link')),
184-
);
186+
}),
187+
x => x.indexOf('link') >= 0
188+
));
185189

186-
st.ok(
190+
st.ok(some(
187191
elementRoleMap.get({
188192
"attributes": [
189193
{
190194
"name": "type",
191195
"value": "radio"
192196
}
193197
], "name": "input"
194-
}).some(x => x.includes('radio')),
195-
);
198+
}),
199+
x => x.indexOf('radio') >= 0
200+
));
196201

197202
st.equal(
198203
elementRoleMap.get({
@@ -203,9 +208,11 @@ test('elementRoleMap API', async (t) => {
203208
}),
204209
undefined,
205210
);
211+
212+
st.end();
206213
});
207214

208-
t.test('has()', async (st) => {
215+
t.test('has()', (st) => {
209216
st.equal(
210217
elementRoleMap.has({
211218
attributes: [
@@ -225,9 +232,11 @@ test('elementRoleMap API', async (t) => {
225232
}),
226233
false,
227234
);
235+
236+
st.end();
228237
});
229238

230-
t.test('keys(), iteration', async (st) => {
239+
t.test('keys(), iteration', (st) => {
231240
const entriesKeys = entriesList.map(entry => entry[0]);
232241
for (const obj of elementRoleMap.keys()) {
233242
st.ok(entriesKeys.filter((k) => deepEqual(k, obj))[0], `for-of has key: ${inspect(obj)}`);
@@ -236,15 +245,21 @@ test('elementRoleMap API', async (t) => {
236245
[...elementRoleMap.keys()].forEach((obj) => {
237246
st.ok(entriesKeys.filter((k) => deepEqual(k, obj))[0], `spread has key: ${inspect(obj)}`);
238247
});
248+
249+
st.end();
239250
});
240251

241-
t.test('values(), iteration', async (st) => {
252+
t.test('values(), iteration', (st) => {
242253
for (const values of elementRoleMap.values()) {
243-
st.ok(entriesList.some(([, x]) => deepEqual(x, values)), `for-of has object values: ${inspect(values)}`);
254+
st.ok(some(entriesList, (([, x]) => deepEqual(x, values)), `for-of has object values: ${inspect(values)}`));
244255
}
245256

246257
[...elementRoleMap.values()].forEach((values) => {
247-
st.ok(entriesList.some(([, x]) => deepEqual(x, values)), `spread has object values: ${inspect(values)}`);
258+
st.ok(some(entriesList, (([, x]) => deepEqual(x, values)), `spread has object values: ${inspect(values)}`));
248259
});
260+
261+
st.end();
249262
});
263+
264+
t.end();
250265
});

__tests__/src/roleElementMap-test.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import test from 'tape';
22
import inspect from 'object-inspect';
33
import deepEqual from 'deep-equal-json';
4+
import some from 'array.prototype.some';
45

56
import roleElementMap from 'aria-query/src/roleElementMap';
67

@@ -65,7 +66,7 @@ const entriesList = [
6566
["time", [{"name": "time"}]],
6667
];
6768

68-
test('roleElementMap API', async (t) => {
69+
test('roleElementMap API', (t) => {
6970
t.test('iteration', async (st) => {
7071
st.notEqual(roleElementMap[Symbol.iterator], undefined, 'has an iterator defined');
7172
st.equal([...roleElementMap].length, 55, 'has a specific length');
@@ -114,7 +115,7 @@ test('roleElementMap API', async (t) => {
114115
}
115116
});
116117

117-
t.test('get()', async (st) => {
118+
t.test('get()', (st) => {
118119
const map = roleElementMap.get('button');
119120

120121
[
@@ -124,15 +125,19 @@ test('roleElementMap API', async (t) => {
124125
{"attributes": [{"name": "type", "value": "submit"}], "name": "input"},
125126
{"name": "button"}
126127
].forEach((element) => {
127-
st.ok(map.some((e) => deepEqual(e, element)), `has element: ${inspect(element)}`);
128+
st.ok(some(map, (e) => deepEqual(e, element)), `has element: ${inspect(element)}`);
128129
});
129130

130131
st.equal(roleElementMap.get('fake role'), undefined, 'returns undefined for a fake role');
132+
133+
st.end();
131134
});
132135

133-
t.test('has()', async (st) => {
136+
t.test('has()', (st) => {
134137
st.equal(roleElementMap.has('button'), true, 'has a defined role');
135138
st.equal(roleElementMap.has('fake role'), false, 'returns false for a fake role');
139+
140+
st.end();
136141
});
137142

138143
t.test('keys(), iteration', async (st) => {
@@ -148,11 +153,13 @@ test('roleElementMap API', async (t) => {
148153

149154
t.test('values(), iteration', async (st) => {
150155
for (const values of roleElementMap.values()) {
151-
st.ok(entriesList.some(([, x]) => deepEqual(x, values)), `for-of has object values: ${inspect(values)}`);
156+
st.ok(some(entriesList, ([, x]) => deepEqual(x, values)), `for-of has object values: ${inspect(values)}`);
152157
}
153158

154159
[...roleElementMap.values()].forEach((values) => {
155-
st.ok(entriesList.some(([, x]) => deepEqual(x, values)), `spread has object values: ${inspect(values)}`);
160+
st.ok(some(entriesList, ([, x]) => deepEqual(x, values)), `spread has object values: ${inspect(values)}`);
156161
});
157162
});
163+
164+
t.end();
158165
});

__tests__/src/rolesMap-test.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ const entriesList = [
146146
["graphics-symbol", null],
147147
];
148148

149-
test('rolesMap API', async (t) => {
149+
test('rolesMap API', (t) => {
150150
t.test('iteration', async (st) => {
151151
st.notEqual(rolesMap[Symbol.iterator], undefined, 'has an iterator defined');
152152
st.equal([...rolesMap].length, 139, 'has a specific length');
@@ -195,14 +195,18 @@ test('rolesMap API', async (t) => {
195195
}
196196
});
197197

198-
t.test('get()', async (st) => {
198+
t.test('get()', (st) => {
199199
st.notEqual(rolesMap.get('roletype'), undefined, 'has a defined role')
200200
st.equal(rolesMap.get('fake role'), undefined, 'returns undefined for a fake role');
201+
202+
st.end();
201203
});
202204

203-
t.test('has()', async (st) => {
205+
t.test('has()', (st) => {
204206
st.equal(rolesMap.has('roletype'), true, 'has a defined role');
205207
st.equal(rolesMap.has('fake role'), false, 'returns false for a fake role');
208+
209+
st.end();
206210
});
207211

208212
t.test('keys(), iteration', async (st) => {
@@ -226,21 +230,26 @@ test('rolesMap API', async (t) => {
226230
});
227231
});
228232

229-
t.test('props and ariaPropsMap', async (st) => {
233+
t.test('props and ariaPropsMap', (st) => {
230234
const roles = rolesMap.entries();
231235

232236
for (const [role, definition] of roles) {
233237
const unknownProps = Object.keys(definition.props).filter(prop => !ariaPropsMap.has(prop));
234238
st.deepEqual(unknownProps, [], `${role}: no unknown props`);
235239
}
240+
241+
st.end();
236242
});
237-
243+
238244
// dpub-aria
239-
t.test('doc-abstract role', async (st) => {
240-
const abstract = rolesMap.get('doc-abstract');
241-
const { props } = abstract;
245+
t.test('doc-abstract role', (st) => {
246+
const { props } = rolesMap.get('doc-abstract');
242247

243248
st.notOk('aria-describedat' in props, 'does not have aria-describedat property');
244249
st.equal(props['aria-details'], null, 'has aria-details property');
250+
251+
st.end();
245252
});
253+
254+
t.end();
246255
});

0 commit comments

Comments
 (0)