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.

44 lines
1.7 KiB

5 years ago
export const tests = []
const t = (f) => tests.push(f)
t(({ eq, ctx }) => eq(pick(ctx.agent, ['firstName', 'lastName']), ctx.newAgent))
t(({ eq, ctx }) => eq(pick(ctx.car, ['brand', 'year']), ctx.newCar))
t(({ eq, ctx }) => eq(pick(ctx.user, 'ageVerified'), ctx.newUser))
t(({ eq, ctx }) => eq(pick(ctx.computer, 'graphic'), {}))
t(({ eq, ctx }) => eq(omit(ctx.tools, ['grinders', 'saws']), ctx.newtool))
t(({ eq, ctx }) => eq(omit(ctx.games, ['board', 'cards']), ctx.newgames))
t(({ eq, ctx }) => eq(omit(ctx.language, 'Spain'), ctx.newlanguage))
t(({ eq, ctx }) => eq(omit(ctx.phone, 'iphone'), ctx.phone))
// It should ignore properties from the prototype chain
t(({ eq }) =>
eq(pick({ something: 5, __proto__: { d: 6 } }, ['proto', 'something']), {
something: 5,
}),
)
t(({ eq }) => eq(omit({ something: 5, __proto__: { d: 6 } }, 'something'), {}))
Object.freeze(tests)
export const setup = () => ({
agent: {
firstName: 'James',
lastName: 'Bond',
age: 25,
email: 'jamesbond@hotmail.com',
},
newAgent: { firstName: 'James', lastName: 'Bond' },
car: { brand: 'ford', motor: 'v8', year: 2000 },
newCar: { brand: 'ford', year: 2000 },
user: { firstName: 'John', lastName: 'Doe', age: 32, ageVerified: false },
newUser: { ageVerified: false },
computer: { brand: 'lenovo', ram: '32GB', processor: 'i7 8th Gen' },
tools: { drill: 'bosh', grinders: 'DeWalt', saws: ' Makita' },
newtool: { drill: 'bosh' },
games: { board: 'monopoly', cards: 'poker', dice: 'roulette' },
newgames: { dice: 'roulette' },
language: { England: 'english', Spain: 'spanish', Portugal: 'portuguese' },
newlanguage: { England: 'english', Portugal: 'portuguese' },
phone: { samsung: 'galaxy', asus: 'zenphone', nokia: 'lumia' },
})