@orchestrator-ui/orchestrator-ui-components
Version:
Library of UI Components used to display the workflow orchestrator frontend
140 lines (135 loc) • 4.78 kB
text/typescript
import { ProcessDetail, ProcessStatus, StepStatus } from '../types';
import { getProductNamesFromProcess } from './getProductNamesFromProcess';
const getProcessDetail = (data: Partial<ProcessDetail> = {}): ProcessDetail => {
return {
processId: 'processId',
createdBy: 'createdBy',
startedAt: 'startedAt',
lastStatus: ProcessStatus.CREATED,
lastStep: 'lastStep',
lastModifiedAt: 'lastModifiedAt',
workflowName: 'workflowName',
isTask: false,
traceback: null,
userPermissions: {
retryAllowed: true,
resumeAllowed: true,
},
steps: [
{
name: 'step name',
status: StepStatus.RUNNING,
stepId: 'step id',
started: 'started',
completed: 'completed',
state: {},
stateDelta: {},
},
],
subscriptions: {
page: [
{
product: { name: 'productName' },
subscriptionId: 'id',
description: 'description',
},
],
},
customer: {
fullname: 'customer',
},
...data,
};
};
describe('getProductNamesFromProcess()', () => {
it('returns empty string when process has no subscriptions', () => {
const result = getProductNamesFromProcess(
getProcessDetail({ subscriptions: undefined }),
);
expect(result).toEqual('');
});
it('returns 1 productName when process has 1 subscriptions', () => {
const result = getProductNamesFromProcess(
getProcessDetail({
subscriptions: {
page: [
{
product: { name: 'TEST NAME' },
subscriptionId: 'id',
description: 'description',
},
],
},
}),
);
expect(result).toEqual('TEST NAME');
});
it('returns 2 productNames concatenated when process has 2 subscriptions with different products', () => {
const result = getProductNamesFromProcess(
getProcessDetail({
subscriptions: {
page: [
{
product: { name: 'TEST NAME' },
subscriptionId: 'id',
description: 'description',
},
{
product: { name: 'TEST NAME 2' },
subscriptionId: 'id',
description: 'description',
},
],
},
}),
);
expect(result).toEqual('TEST NAME, TEST NAME 2');
});
it('returns 1 productName when process has 2 subscriptions with same products', () => {
const result = getProductNamesFromProcess(
getProcessDetail({
subscriptions: {
page: [
{
product: { name: 'TEST NAME' },
subscriptionId: 'id',
description: 'description',
},
{
product: { name: 'TEST NAME' },
subscriptionId: 'id',
description: 'description',
},
],
},
}),
);
expect(result).toEqual('TEST NAME');
});
it('returns correct string when process has these subscriptions', () => {
const result = getProductNamesFromProcess(
getProcessDetail({
subscriptions: {
page: [
{
product: { name: 'TEST NAME' },
subscriptionId: 'id',
description: 'description',
},
{
product: { name: 'TEST NAME' },
subscriptionId: 'id',
description: 'description',
},
{
product: { name: 'TEST NAME 2' },
subscriptionId: 'id',
description: 'description',
},
],
},
}),
);
expect(result).toEqual('TEST NAME, TEST NAME 2');
});
});