Browse Source

fixing public issues

pull/989/head
miguel 2 years ago
parent
commit
970d873a43
  1. 36
      dom/pick-and-click_test.js
  2. 8
      js/tests/is-winner_test.js
  3. 10
      js/tests/throttle_test.js
  4. 7
      subjects/is-winner/README.md
  5. 2
      subjects/keep-trying-or-giveup/README.md
  6. 1
      subjects/manipulate-values/README.md

36
dom/pick-and-click_test.js

@ -5,7 +5,7 @@ const between = (expected, min, max) => expected >= min && expected <= max
export const setup = async ({ page, rgbToHsl }) => {
return {
bodyBgRgb: async () =>
rgbToHsl(await page.$eval("body", (body) => body.style.background)),
rgbToHsl(await page.$eval('body', (body) => body.style.background)),
}
}
@ -19,8 +19,8 @@ tests.push(async ({ page, eq }) => {
const x = move
const y = move * 2
await page.mouse.move(x, y)
const bodyBg = await page.$eval("body", (body) => body.style.background)
const validColor = bodyBg.includes("rgb")
const bodyBg = await page.$eval('body', (body) => body.style.background)
const validColor = bodyBg.includes('rgb')
if (!validColor) continue
bgs.push(bodyBg)
}
@ -29,7 +29,7 @@ tests.push(async ({ page, eq }) => {
})
const near = (a, b) => a < b + 2.5 && a > b - 2.5
const numVal = (n) => n.textContent.replace(/[^0-9,]/g, "")
const numVal = (n) => n.textContent.replace(/[^0-9,]/g, '')
const generateCoords = (random) => [
[random(125, 500), random(125, 400)],
[random(125, 500), random(125, 400)],
@ -41,7 +41,7 @@ tests.push(async ({ page, eq, bodyBgRgb, random }) => {
for (const move of generateCoords(random)) {
await page.mouse.move(...move)
const a = await bodyBgRgb()
const b = (await page.$eval(".hsl", numVal)).split(",")
const b = (await page.$eval('.hsl', numVal)).split(',')
if (a.every((v, i) => near(v, Number(b[i])))) continue
throw Error(`hsl(${a.map(Math.round)}) to far from hsl(${b})`)
}
@ -52,7 +52,7 @@ tests.push(async ({ page, eq, bodyBgRgb, random }) => {
for (const move of generateCoords(random)) {
await page.mouse.move(...move)
const [h] = await bodyBgRgb()
const hue = await page.$eval(".hue", numVal)
const hue = await page.$eval('.hue', numVal)
if (!near(h, Number(hue))) {
console.log({ h, hue, c: near(h, Number(hue)) })
@ -66,7 +66,7 @@ tests.push(async ({ page, eq, bodyBgRgb, random }) => {
for (const move of generateCoords(random)) {
await page.mouse.move(...move)
const [, , l] = await bodyBgRgb()
const lum = await page.$eval(".luminosity", numVal)
const lum = await page.$eval('.luminosity', numVal)
if (!near(l, Number(lum))) {
throw Error(`luminosity ${Math.round(l)} to far from ${lum}`)
@ -79,16 +79,16 @@ tests.push(async ({ page, eq, bodyBgRgb, random }) => {
for (const move of generateCoords(random)) {
await page.evaluate(() => {
let clipboardText = null
window.navigator.clipboard.readText = () =>
new Promise((resolve) => resolve(clipboardText))
window.navigator.clipboard.writeText = (text) =>
new Promise(() => (clipboardText = text))
window.navigator.clipboard.readText = async () => clipboardText
window.navigator.clipboard.writeText = async (text) => {
clipboardText = text
}
})
await page.mouse.click(...move)
const clipboard = await page.evaluate(() =>
window.navigator.clipboard.readText()
)
const hslValue = await page.$eval(".hsl", (hsl) => hsl.textContent)
const hslValue = await page.$eval('.hsl', (hsl) => hsl.textContent)
eq(hslValue, clipboard)
}
})
@ -97,13 +97,13 @@ tests.push(async ({ page, eq, bodyBgRgb, random }) => {
// check that each svg axis is following the mouse
const [[mouseX, mouseY]] = generateCoords(random)
await page.mouse.move(mouseX, mouseY)
const axisX = await page.$eval("#axisX", (line) => [
line.getAttribute("x1"),
line.getAttribute("x2"),
const axisX = await page.$eval('#axisX', (line) => [
line.getAttribute('x1'),
line.getAttribute('x2'),
])
const axisY = await page.$eval("#axisY", (line) => [
line.getAttribute("y1"),
line.getAttribute("y2"),
const axisY = await page.$eval('#axisY', (line) => [
line.getAttribute('y1'),
line.getAttribute('y2'),
])
const checkAxisCoords = (coords) => Number([...new Set(coords)].join())

8
js/tests/is-winner_test.js

@ -99,6 +99,14 @@ t(async ({ eq }) =>
)
)
t(async ({ eq }) =>
// testing France
eq(
await isWinner('France'),
'France is not what we are looking for because of the number of times it was champion'
)
)
t(async ({ eq, ctx }) =>
// testing correct number of times and correct continent, for the fake country
eq(

10
js/tests/throttle_test.js

@ -1,7 +1,7 @@
export const tests = []
const t = (f) => tests.push(f)
const add = (arr, el) => arr.push(el)
const add = (arr, el) => arr?.push(el)
const run = (callback, callLimit, nbr) =>
new Promise((r) => {
let arr = []
@ -28,13 +28,13 @@ t(async ({ eq }) =>
)
t(async ({ eq }) =>
// it works concurently
// it works concurrently
eq(
await Promise.all([
run(throttle(add, 16), 26, 5),
run(throttle(add, 16), 26, 5),
run(throttle(add, 16), 26, 6),
run(throttle(add, 16), 26, 6),
]),
[4, 4]
[5, 5]
)
)

7
subjects/is-winner/README.md

@ -16,12 +16,13 @@ return a resolved Promise with the string:
- `<country> + ' won the FIFA World Cup in ' + <year(s)> + 'winning by ' + <results>`, otherwise.
If the country was champion in more than one year, the years should be
displayed like : '1000, 1004, 1008'. The same goes for the results
The years and results should be displayed like bellow:
```<country> + ' won the FIFA World Cup in 1000, 1004, 1008 winning by 4-3, 5-2, 1-0```
### Code provided
> all code provided will be added to your solution and doesn't need to be submited.
> all code provided will be added to your solution and doesn't need to be submitted.
```js
const db = (() => {

2
subjects/keep-trying-or-giveup/README.md

@ -27,5 +27,5 @@ resolve before `delay` time has reached.
### Notions
- [nan-academy.github.io/js-training/examples/promise.js](https://nan-academy.github.io/js-training/examples/promises.js)
- [devdocs.io/dom/windoworworkerglobalscope/settimeout](https://devdocs.io/dom/windoworworkerglobalscope/settimeout)
- [devdocs.io/dom/settimeout]( https://devdocs.io/dom/settimeout)
- [devdocs.io/javascript/global_objects/promise/race](https://devdocs.io/javascript/global_objects/promise/race)

1
subjects/manipulate-values/README.md

@ -47,6 +47,7 @@ You will have a small database to help you with the groceries.
```js
// small database with nutrition facts, per 100 grams
// In this exercise this is used for testing purposes only
// prettier-ignore
const nutritionDB = {
tomato: { calories: 18, protein: 0.9, carbs: 3.9, sugar: 2.6, fiber: 1.2, fat: 0.2 },

Loading…
Cancel
Save