mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.2 KiB
127 lines
3.2 KiB
import { people } from './subjects/get-them-all/get-them-all.data.js' |
|
|
|
const getIds = predicate => |
|
people |
|
.filter(predicate) |
|
.map(e => e.id) |
|
.sort((a, b) => a.localeCompare(b)) |
|
|
|
const architects = getIds(p => p.tag === 'a') |
|
const notArchitects = getIds(p => p.tag !== 'a') |
|
|
|
const classical = getIds(p => p.classe === 'classical') |
|
const notClassical = getIds(p => p.tag === 'a' && p.classe !== 'classical') |
|
|
|
const active = getIds(p => p.classe === 'classical' && p.active) |
|
const notActive = getIds( |
|
p => p.tag === 'a' && p.classe === 'classical' && p.active === false, |
|
) |
|
|
|
const bonanno = people.find(p => p.id === 'BonannoPisano').id |
|
const notBonanno = getIds( |
|
p => |
|
p.tag === 'a' && |
|
p.classe === 'classical' && |
|
p.active && |
|
p.id !== 'BonannoPisano', |
|
) |
|
|
|
export const tests = [] |
|
|
|
tests.push(async ({ eq, page }) => { |
|
// get architects |
|
const btnArchitect = await page.$(`#btnArchitect`) |
|
btnArchitect.click() |
|
await page.waitForTimeout(150) |
|
|
|
const selected = await page.$$eval('a', nodes => |
|
nodes |
|
.filter(node => node.textContent === 'Architect') |
|
.map(node => node.id) |
|
.sort((a, b) => a.localeCompare(b)), |
|
) |
|
|
|
eq(selected, architects) |
|
|
|
const eliminated = await page.$$eval('span', nodes => |
|
nodes |
|
.filter(node => node.style.opacity === '0.2') |
|
.map(node => node.id) |
|
.sort((a, b) => a.localeCompare(b)), |
|
) |
|
|
|
eq(eliminated, notArchitects) |
|
}) |
|
|
|
tests.push(async ({ page, eq }) => { |
|
// get classical |
|
const btnClassical = await page.$(`#btnClassical`) |
|
btnClassical.click() |
|
await page.waitForTimeout(150) |
|
|
|
const selected = await page.$$eval('.classical', nodes => |
|
nodes |
|
.filter(node => node.textContent === 'Classical') |
|
.map(node => node.id) |
|
.sort((a, b) => a.localeCompare(b)), |
|
) |
|
|
|
eq(selected, classical) |
|
|
|
const eliminated = await page.$$eval('a:not(.classical)', nodes => |
|
nodes |
|
.filter(node => node.style.opacity === '0.2') |
|
.map(node => node.id) |
|
.sort((a, b) => a.localeCompare(b)), |
|
) |
|
|
|
eq(eliminated, notClassical) |
|
}) |
|
|
|
tests.push(async ({ page, eq }) => { |
|
// check active |
|
const btnActive = await page.$(`#btnActive`) |
|
btnActive.click() |
|
await page.waitForTimeout(150) |
|
|
|
const selected = await page.$$eval('.classical.active', nodes => |
|
nodes |
|
.filter(node => node.textContent === 'Active') |
|
.map(node => node.id) |
|
.sort((a, b) => a.localeCompare(b)), |
|
) |
|
eq(selected, active) |
|
|
|
const eliminated = await page.$$eval('.classical:not(.active)', nodes => |
|
nodes |
|
.filter(node => node.style.opacity === '0.2') |
|
.map(node => node.id) |
|
.sort((a, b) => a.localeCompare(b)), |
|
) |
|
|
|
eq(eliminated, notActive) |
|
}) |
|
|
|
tests.push(async ({ page, eq }) => { |
|
// get bonanno |
|
const btnBonanno = await page.$(`#btnBonanno`) |
|
btnBonanno.click() |
|
await page.waitForTimeout(150) |
|
|
|
const selected = await page.$eval('#BonannoPisano', node => { |
|
if (node.textContent === 'Bonanno Pisano') return node.id |
|
}) |
|
|
|
eq(`bonanno: ${selected}`, `bonanno: ${bonanno}`) |
|
|
|
const eliminated = await page.$$eval( |
|
'a.classical.active:not(#BonannoPisano)', |
|
nodes => |
|
nodes |
|
.filter(node => node.style.opacity === '0.2') |
|
.map(node => node.id) |
|
.sort((a, b) => a.localeCompare(b)), |
|
) |
|
|
|
eq(eliminated, notBonanno) |
|
})
|
|
|