JSFiddle - React, Tailwind, and code Playground
by Vladymyr Shevchuk
JavaScript
export default (fixturesPattern, options = { startTime: Date.now() }) => {
const fixtures = [];
checkExpectIndexes();
fixturesPattern.events.forEach((interval, index) => {
const currentIntervalMode = Object.keys(interval)[0];
const prevInterval = fixturesPattern.events[index + 1] || { UNKNOWN: Infinity };
const prevIntervalMode = Object.keys(prevInterval)[0];
const prevIntervalDuration = prevInterval[prevIntervalMode];
const obj = {
ts: 0,
event: currentIntervalMode,
previous: prevIntervalMode,
previousDuration: hoursToMiliseconds(prevIntervalDuration)
};
fixtures.push(obj);
});
fixtures.forEach((fixture, index) => {
if (index === 0) {
fixture.ts = options.startTime;
} else {
const prevFixture = fixtures[index - 1];
fixture.ts = prevFixture.ts - prevFixture.previousDuration;
}
});
function checkExpectIndexes() {
const len = fixturesPattern.events.length - 1;
if (fixturesPattern.expect) {
fixturesPattern.expect.forEach(item => {
if (item > len || item < 0) {
throw Error(`Expect array has incorrect index: ${item}`);
}
});
}
}
const expected = fixturesPattern.expect ?
fixtures.filter((fixture, index) => fixturesPattern.expect.indexOf(index) >= 0) :
[];
return {
fixtures,
expected
};
};