in src/components/CompareResults/subtestsOverTimeLoader.tsx [8:124]
function checkValues({
baseRepo,
newRev,
newRepo,
framework,
interval,
baseParentSignature,
newParentSignature,
}: {
baseRepo: Repository['name'] | null;
newRev: string | null;
newRepo: Repository['name'] | null;
framework: string | number | null;
interval: string | number | null;
baseParentSignature: string | null;
newParentSignature: string | null;
}): {
baseRepo: Repository['name'];
newRev: string;
newRepo: Repository['name'];
frameworkId: Framework['id'];
frameworkName: Framework['name'];
intervalValue: TimeRange['value'];
intervalText: TimeRange['text'];
baseParentSignature: string;
newParentSignature: string;
} {
if (baseRepo === null) {
throw new Error('The parameter baseRepo is missing.');
}
if (newRev === null) {
throw new Error('The parameter newRev is missing.');
}
if (newRepo === null) {
throw new Error('The parameter newRepo is missing.');
}
const validRepoValues = Object.values(repoMap);
if (!validRepoValues.includes(baseRepo)) {
throw new Error(
`The parameter baseRepo "${baseRepo}" should be one of ${validRepoValues.join(
', ',
)}.`,
);
}
if (!validRepoValues.includes(newRepo)) {
throw new Error(
`The parameter newRepo "${newRepo}" should be one of ${validRepoValues.join(
', ',
)}.`,
);
}
if (baseParentSignature === null) {
throw new Error('The parameter baseParentSignature is missing.');
}
if (newParentSignature === null) {
throw new Error('The parameter newParentSignature is missing.');
}
if (framework === null) {
framework = 1; // default to talos so that manually typing the URL is easier
}
const frameworkId = +framework as Framework['id'];
if (Number.isNaN(frameworkId)) {
throw new Error(
`The parameter framework should be a number, but it is "${framework}".`,
);
}
const frameworkName = frameworks.find(
(entry) => entry.id === frameworkId,
)?.name;
if (!frameworkName) {
throw new Error(
`The parameter framework isn't a valid value: "${framework}".`,
);
}
if (interval === null) {
throw new Error(
'The parameter interval is missing. (Comparing over time results)',
);
}
const intervalValue = +interval as TimeRange['value'];
if (Number.isNaN(intervalValue)) {
throw new Error(
`The parameter interval should be a number, but it is "${interval}".`,
);
}
const intervalText = timeRanges.find(
(entry) => entry.value === intervalValue,
)?.text;
if (!intervalText) {
throw new Error(
`The parameter interval isn't a valid value: "${interval}".`,
);
}
return {
baseRepo,
newRev,
newRepo,
frameworkId,
frameworkName,
intervalText,
intervalValue,
baseParentSignature,
newParentSignature,
};
}