poui
Version:
A React component for designating partial orders
45 lines (39 loc) • 1.66 kB
JavaScript
import PartialOrder from '../../PartialOrder';
import ListItems from '../../ListItems';
import ListItemsFixtures from '../../fixtures/ListItemsFixtures';
describe("PartialOrder encompassItems", () => {
const items = ListItemsFixtures.salad;
it('completes the order with items not included', () => {
const parto = ['R','T','M'];
const order = PartialOrder.encompassItems(items, parto);
expect(order.length).toEqual(parto.length + 1);
const keys = ListItems.keys(items);
const rest = keys.filter(key => !parto.includes(key));
expect(order[parto.length].length).toEqual(rest.length);
expect(order[parto.length].sort()).toEqual(rest.sort());
});
it('skips keys in the order not found in items', () => {
const falseKey = 'X';
const parto = ['R','T','M',falseKey,'C'];
const order = PartialOrder.encompassItems(items, parto);
expect(order.length).toBe(parto.length);
expect(order.includes(falseKey)).toBe(false);
});
it('eliminates groups that contain only one item', () => {
const falseKey = 'X';
const goodKey = 'M';
const parto = ['R','T',[goodKey,falseKey],'C'];
const order = PartialOrder.encompassItems(items, parto);
expect(order.length).toBe(parto.length + 1);
expect(Array.isArray(order[2])).toBe(false);
expect(order[2]).toBe(goodKey);
});
it('correctly handles all items in one group', () => {
const keys = ListItems.keys(items);
const parto = new Array(keys);
const order = PartialOrder.encompassItems(items, parto);
expect(order.length).toBe(1);
expect(Array.isArray(order[0])).toBe(true);
expect(order).toStrictEqual(parto);
});
});