Skip to content

Commit

Permalink
chore: remove chai dependency (#9241)
Browse files Browse the repository at this point in the history
Replaced our usage of outdated chai (chai 5 is out) with expect from
jest.
  • Loading branch information
domoritz authored Jan 31, 2024
1 parent c654cd5 commit f979c8f
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 111 deletions.
2 changes: 0 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,13 @@
"@rollup/plugin-json": "^6.1.0",
"@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-terser": "^0.4.4",
"@types/chai": "^4.3.11",
"@types/d3": "^7.4.3",
"@types/jest": "^29.5.11",
"@types/pako": "^2.0.3",
"@typescript-eslint/eslint-plugin": "^6.20.0",
"@typescript-eslint/parser": "^6.20.0",
"ajv": "^8.12.0",
"ajv-formats": "^2.1.1",
"chai": "^4.3.10",
"cheerio": "^1.0.0-rc.12",
"conventional-changelog-cli": "^4.1.0",
"d3": "^7.8.5",
Expand Down
63 changes: 31 additions & 32 deletions test-runtime/translate.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
/* eslint-disable jest/expect-expect */
/* eslint-disable jest/valid-expect */

import {assert} from 'chai';
import {
bound,
brush,
Expand Down Expand Up @@ -34,7 +33,7 @@ describe('Translate interval selections at runtime', () => {

const hits = hitsMaster.interval;

for (const bind of [bound, unbound]) {
for (const bind of [bound, unbound] as const) {
describe(`${bind} intervals`, () => {
beforeAll(() => {
testRender = testRenderFn(page, `interval/translate/${bind}`);
Expand All @@ -45,25 +44,25 @@ describe('Translate interval selections at runtime', () => {

const assertExtent = {
[unbound]: {
x: ['isAbove', 'isBelow'],
y: ['isBelow', 'isAbove']
x: ['toBeGreaterThan', 'toBeLessThan'],
y: ['toBeLessThan', 'toBeGreaterThan']
},
[bound]: {
x: ['isBelow', 'isAbove'],
y: ['isAbove', 'isBelow']
x: ['toBeLessThan', 'toBeGreaterThan'],
y: ['toBeGreaterThan', 'toBeLessThan']
}
};
} as const;

it('should move back-and-forth', async () => {
for (let i = 0; i < hits.translate.length; i++) {
await embed(spec('unit', i, {type, ...binding}));
const drag = (await page.evaluate(brush('drag', i)))[0];
await testRender(`${i}-0`);
const translate = (await page.evaluate(brush('translate', i, null, bind === unbound)))[0];
assert[assertExtent[bind].x[i]](translate.values[0][0], drag.values[0][0]);
assert[assertExtent[bind].x[i]](translate.values[0][1], drag.values[0][1]);
assert[assertExtent[bind].y[i]](translate.values[1][0], drag.values[1][0]);
assert[assertExtent[bind].y[i]](translate.values[1][1], drag.values[1][1]);
expect(translate.values[0][0])[assertExtent[bind].x[i]](drag.values[0][0]);
expect(translate.values[0][1])[assertExtent[bind].x[i]](drag.values[0][1]);
expect(translate.values[1][0])[assertExtent[bind].y[i]](drag.values[1][0]);
expect(translate.values[1][1])[assertExtent[bind].y[i]](drag.values[1][1]);
await testRender(`${i}-1`);
}
});
Expand All @@ -85,8 +84,8 @@ describe('Translate interval selections at runtime', () => {
const drag = (await page.evaluate(brush('bins', i)))[0];
await testRender(`bins_${i}-0`);
const translate = (await page.evaluate(brush('bins_translate', i, null, bind === unbound)))[0];
assert[assertExtent[bind].y[i]](translate.values[0][0], drag.values[0][0]);
assert[assertExtent[bind].y[i]](translate.values[0][1], drag.values[0][1]);
expect(translate.values[0][0])[assertExtent[bind].y[i]](drag.values[0][0]);
expect(translate.values[0][1])[assertExtent[bind].y[i]](drag.values[0][1]);
await testRender(`bins_${i}-1`);
}
});
Expand All @@ -101,8 +100,8 @@ describe('Translate interval selections at runtime', () => {
const drag = toNumber(await page.evaluate(brush('drag', i)));
await testRender(`temporal_${i}-0`);
const translate = toNumber(await page.evaluate(brush('translate', i, null, bind === unbound)));
assert[assertExtent[bind].x[i]](translate[0], drag[0]);
assert[assertExtent[bind].x[i]](translate[1], drag[1]);
expect(translate[0])[assertExtent[bind].x[i]](drag[0]);
expect(translate[1])[assertExtent[bind].x[i]](drag[1]);
await testRender(`temporal_${i}-1`);
}
});
Expand All @@ -123,10 +122,10 @@ describe('Translate interval selections at runtime', () => {
const drag = (await page.evaluate(brush('drag', i)))[0];
await testRender(`logpow_${i}-0`);
const translate = (await page.evaluate(brush('translate', i, null, bind === unbound)))[0];
assert[assertExtent[bind].x[i]](translate.values[0][0], drag.values[0][0]);
assert[assertExtent[bind].x[i]](translate.values[0][1], drag.values[0][1]);
assert[assertExtent[bind].y[i]](translate.values[1][0], drag.values[1][0]);
assert[assertExtent[bind].y[i]](translate.values[1][1], drag.values[1][1]);
expect(translate.values[0][0])[assertExtent[bind].x[i]](drag.values[0][0]);
expect(translate.values[0][1])[assertExtent[bind].x[i]](drag.values[0][1]);
expect(translate.values[1][0])[assertExtent[bind].y[i]](drag.values[1][0]);
expect(translate.values[1][1])[assertExtent[bind].y[i]](drag.values[1][1]);
await testRender(`logpow_${i}-1`);
}
});
Expand All @@ -148,23 +147,23 @@ describe('Translate interval selections at runtime', () => {
const drag = (await page.evaluate(brush('drag', i)))[0];
await testRender(`ord_${i}-0`);
const translate = (await page.evaluate(brush('translate', i, null, true)))[0];
assert[assertExtent[bind].x[i]](translate.values[0][0], drag.values[0][0]);
assert[assertExtent[bind].x[i]](translate.values[0][1], drag.values[0][1]);
assert[assertExtent[bind].y[i]](translate.values[1][0], drag.values[1][0]);
assert[assertExtent[bind].y[i]](translate.values[1][1], drag.values[1][1]);
expect(translate.values[0][0])[assertExtent[bind].x[i]](drag.values[0][0]);
expect(translate.values[0][1])[assertExtent[bind].x[i]](drag.values[0][1]);
expect(translate.values[1][0])[assertExtent[bind].y[i]](drag.values[1][0]);
expect(translate.values[1][1])[assertExtent[bind].y[i]](drag.values[1][1]);
await testRender(`ord_${i}-1`);
}
});
} else {
for (const specType of compositeTypes) {
const assertExtents = {
repeat: {
x: ['isBelow', 'isBelow', 'isBelow'],
y: ['isAbove', 'isAbove', 'isAbove']
x: ['toBeLessThan', 'toBeLessThan', 'toBeLessThan'],
y: ['toBeGreaterThan', 'toBeGreaterThan', 'toBeGreaterThan']
},
facet: {
x: ['isBelow', 'isBelow', 'isBelow'],
y: ['isBelow', 'isAbove', 'isBelow']
x: ['toBeLessThan', 'toBeLessThan', 'toBeLessThan'],
y: ['toBeLessThan', 'toBeGreaterThan', 'toBeLessThan']
}
};
it(`should work with shared scales in ${specType} views`, async () => {
Expand All @@ -174,10 +173,10 @@ describe('Translate interval selections at runtime', () => {
const xscale = await page.evaluate('view._runtime.scales.x.value.domain()');
const yscale = await page.evaluate('view._runtime.scales.y.value.domain()');
const drag = (await page.evaluate(brush(specType, i, parent)))[0];
assert[assertExtents[specType].x[i]](drag.values[0][0], xscale[0], `iter: ${i}`);
assert[assertExtents[specType].x[i]](drag.values[0][1], xscale[1], `iter: ${i}`);
assert[assertExtents[specType].y[i]](drag.values[1][0], yscale[0], `iter: ${i}`);
assert[assertExtents[specType].y[i]](drag.values[1][1], yscale[1], `iter: ${i}`);
expect(drag.values[0][0])[assertExtents[specType].x[i]](xscale[0]);
expect(drag.values[0][1])[assertExtents[specType].x[i]](xscale[1]);
expect(drag.values[1][0])[assertExtents[specType].y[i]](yscale[0]);
expect(drag.values[1][1])[assertExtents[specType].y[i]](yscale[1]);
await testRender(`${specType}_${i}`);
}
});
Expand Down
43 changes: 21 additions & 22 deletions test-runtime/zoom.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
/* eslint-disable jest/expect-expect */

import {assert} from 'chai';
import {
bound,
brush,
Expand Down Expand Up @@ -42,7 +41,7 @@ describe('Zoom interval selections at runtime', () => {
await page.close();
});

for (const bind of [bound, unbound]) {
for (const bind of [bound, unbound] as const) {
describe(`Zoom ${bind} interval selections at runtime`, () => {
beforeAll(() => {
testRender = testRenderFn(page, `interval/zoom/${bind}`);
Expand All @@ -53,9 +52,9 @@ describe('Zoom interval selections at runtime', () => {
const cmp = (a: number, b: number) => a - b;

const assertExtent = {
in: ['isAtLeast', 'isAtMost'],
out: ['isAtMost', 'isAtLeast']
};
in: ['toBeGreaterThanOrEqual', 'toBeLessThanOrEqual'],
out: ['toBeLessThanOrEqual', 'toBeGreaterThanOrEqual']
} as const;

async function setup(brushKey: string, idx: number, encodings: string[], parent?: string) {
const inOut: InOut = idx % 2 ? 'out' : 'in';
Expand Down Expand Up @@ -84,10 +83,10 @@ describe('Zoom interval selections at runtime', () => {
const xnew = zoomed.values[0].sort(cmp);
const ynew = zoomed.values[1].sort(cmp);
await testRender(`${inOut}-1`);
assert[assertExtent[inOut][0]](xnew[0], xold[0]);
assert[assertExtent[inOut][1]](xnew[1], xold[1]);
assert[assertExtent[inOut][0]](ynew[0], yold[0]);
assert[assertExtent[inOut][1]](ynew[1], yold[1]);
expect(xnew[0])[assertExtent[inOut][0]](xold[0]);
expect(xnew[1])[assertExtent[inOut][1]](xold[1]);
expect(ynew[0])[assertExtent[inOut][0]](yold[0]);
expect(ynew[1])[assertExtent[inOut][1]](yold[1]);
}
});

Expand All @@ -112,8 +111,8 @@ describe('Zoom interval selections at runtime', () => {

const zoomed = (await page.evaluate(zoom('bins', i, inOut, null, bind === unbound)))[0];
const ynew = zoomed.values[0].sort(cmp);
assert[assertExtent[inOut][0]](ynew[0], yold[0]);
assert[assertExtent[inOut][1]](ynew[1], yold[1]);
expect(ynew[0])[assertExtent[inOut][0]](yold[0]);
expect(ynew[1])[assertExtent[inOut][1]](yold[1]);
await testRender(`bins_${inOut}-1`);
}
});
Expand All @@ -129,8 +128,8 @@ describe('Zoom interval selections at runtime', () => {

const zoomed = (await page.evaluate(zoom('zoom', i, inOut, null, bind === unbound)))[0];
const xnew = zoomed.values[0].sort(cmp);
assert[assertExtent[inOut][0]](+xnew[0], +new Date(xold[0]));
assert[assertExtent[inOut][1]](+xnew[1], +new Date(xold[1]));
expect(+xnew[0])[assertExtent[inOut][0]](+new Date(xold[0]));
expect(+xnew[1])[assertExtent[inOut][1]](+new Date(xold[1]));
await testRender(`temporal_${inOut}-1`);
}
});
Expand All @@ -154,10 +153,10 @@ describe('Zoom interval selections at runtime', () => {
const zoomed = (await page.evaluate(zoom('zoom', i, inOut, null, bind === unbound)))[0];
const xnew = zoomed.values[0].sort(cmp);
const ynew = zoomed.values[1].sort(cmp);
assert[assertExtent[inOut][0]](xnew[0], xold[0]);
assert[assertExtent[inOut][1]](xnew[1], xold[1]);
assert[assertExtent[inOut][0]](ynew[0], yold[0]);
assert[assertExtent[inOut][1]](ynew[1], yold[1]);
expect(xnew[0])[assertExtent[inOut][0]](xold[0]);
expect(xnew[1])[assertExtent[inOut][1]](xold[1]);
expect(ynew[0])[assertExtent[inOut][0]](yold[0]);
expect(ynew[1])[assertExtent[inOut][1]](yold[1]);
await testRender(`logpow_${inOut}-1`);
}
});
Expand Down Expand Up @@ -201,13 +200,13 @@ describe('Zoom interval selections at runtime', () => {
await embed(spec(specType, 0, {type, ...binding}, {resolve: {scale: {x: 'shared', y: 'shared'}}}));
const parent = parentSelector(specType, i);
const {inOut, xold, yold} = await setup(specType, i, ['x', 'y'], parent);
const zoomed = (await page.evaluate(zoom('bins', i, inOut, null, bind === unbound)))[0];
const zoomed = (await page.evaluate(zoom('bins', i, inOut, null, false /* bind === unbound */)))[0];
const xnew = zoomed.values[0].sort(cmp);
const ynew = zoomed.values[1].sort(cmp);
assert[assertExtent[inOut][0]](xnew[0], xold[0]);
assert[assertExtent[inOut][1]](xnew[1], xold[1]);
assert[assertExtent[inOut][0]](ynew[0], yold[0]);
assert[assertExtent[inOut][1]](ynew[1], yold[1]);
expect(xnew[0])[assertExtent[inOut][0]](xold[0]);
expect(xnew[1])[assertExtent[inOut][1]](xold[1]);
expect(ynew[0])[assertExtent[inOut][0]](yold[0]);
expect(ynew[1])[assertExtent[inOut][1]](yold[1]);
await testRender(`${specType}_${inOut}`);
}
});
Expand Down
56 changes: 1 addition & 55 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1778,11 +1778,6 @@
dependencies:
"@babel/types" "^7.20.7"

"@types/chai@^4.3.11":
version "4.3.11"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.11.tgz#e95050bf79a932cb7305dd130254ccdf9bde671c"
integrity sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==

"@types/d3-array@*":
version "3.2.1"
resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5"
Expand Down Expand Up @@ -2495,11 +2490,6 @@ arrify@^1.0.1:
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==

assertion-error@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==

ast-types@^0.13.4:
version "0.13.4"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782"
Expand Down Expand Up @@ -2831,19 +2821,6 @@ canvas@^2.11.2:
nan "^2.17.0"
simple-get "^3.0.3"

chai@^4.3.10:
version "4.4.1"
resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1"
integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==
dependencies:
assertion-error "^1.1.0"
check-error "^1.0.3"
deep-eql "^4.1.3"
get-func-name "^2.0.2"
loupe "^2.3.6"
pathval "^1.1.1"
type-detect "^4.0.8"

[email protected]:
version "0.4.0"
resolved "https://registry.yarnpkg.com/chalk-template/-/chalk-template-0.4.0.tgz#692c034d0ed62436b9062c1707fadcd0f753204b"
Expand Down Expand Up @@ -2899,13 +2876,6 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==

check-error@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694"
integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==
dependencies:
get-func-name "^2.0.2"

cheerio-select@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4"
Expand Down Expand Up @@ -3704,13 +3674,6 @@ dedent@^1.0.0:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff"
integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==

deep-eql@^4.1.3:
version "4.1.3"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d"
integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
dependencies:
type-detect "^4.0.0"

deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
Expand Down Expand Up @@ -4577,11 +4540,6 @@ get-east-asian-width@^1.0.0:
resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e"
integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==

get-func-name@^2.0.1, get-func-name@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41"
integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==

get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b"
Expand Down Expand Up @@ -6131,13 +6089,6 @@ log-symbols@^6.0.0:
chalk "^5.3.0"
is-unicode-supported "^1.3.0"

loupe@^2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697"
integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==
dependencies:
get-func-name "^2.0.1"

lowercase-keys@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2"
Expand Down Expand Up @@ -6878,11 +6829,6 @@ path-type@^5.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8"
integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==

pathval@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==

pend@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
Expand Down Expand Up @@ -8073,7 +8019,7 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"

[email protected], type-detect@^4.0.0, type-detect@^4.0.8:
[email protected]:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
Expand Down

0 comments on commit f979c8f

Please sign in to comment.