fix(UnitTest): run was failing due to JS tests importing TS modules (#5145)
This commit is contained in:
1 parent
f6337e0970
commit
268d62e991
2 files changed
+96
-49
No files matched your search
@@ -0,0 +1,207 @@
|
||||
import getDirectURL from './getDirectURL';
|
||||
import getBulkdataValue from './getBulkdataValue';
|
||||
import createRenderedRetrieve from './createRenderedRetrieve';
|
||||
|
||||
const mockedGetBulkdataValue = getBulkdataValue as jest.Mock;
|
||||
const mockedCreateRenderedRetrieve = createRenderedRetrieve as jest.Mock;
|
||||
|
||||
jest.mock('@ohif/core');
|
||||
jest.mock('./getBulkdataValue');
|
||||
jest.mock('./createRenderedRetrieve');
|
||||
|
||||
global.URL.createObjectURL = jest.fn(() => 'blob:') as jest.Mock;
|
||||
|
||||
describe('getDirectURL', () => {
|
||||
interface GetDirectURLConfig {
|
||||
singlepart: boolean | string[];
|
||||
defaultType: string;
|
||||
}
|
||||
|
||||
interface GetDirectURLParams {
|
||||
tag: string;
|
||||
defaultPath: string;
|
||||
instance: {
|
||||
StudyInstanceUID: string;
|
||||
SeriesInstanceUID: string;
|
||||
SOPInstanceUID: string;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
url?: string;
|
||||
}
|
||||
|
||||
const config: GetDirectURLConfig = {
|
||||
singlepart: true,
|
||||
defaultType: 'video/mp4',
|
||||
};
|
||||
|
||||
const params: GetDirectURLParams = {
|
||||
tag: 'PixelData',
|
||||
defaultPath: '/path/to/pixeldata',
|
||||
instance: {
|
||||
StudyInstanceUID: 'study-uid',
|
||||
SeriesInstanceUID: 'series-uid',
|
||||
SOPInstanceUID: 'sop-uid',
|
||||
},
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
mockedGetBulkdataValue.mockClear();
|
||||
mockedCreateRenderedRetrieve.mockClear();
|
||||
(global.URL.createObjectURL as jest.Mock).mockClear();
|
||||
});
|
||||
|
||||
it('should return the provided URL if it exists', () => {
|
||||
const url = 'https://example.com/direct-retrieve';
|
||||
|
||||
const result = getDirectURL(config, {
|
||||
...params,
|
||||
url: 'https://example.com/direct-retrieve',
|
||||
});
|
||||
|
||||
expect(result).toBe(url);
|
||||
});
|
||||
|
||||
it('should return the DirectRetrieveURL if it exists', () => {
|
||||
const value = {
|
||||
DirectRetrieveURL: 'https://example.com/direct-retrieve',
|
||||
};
|
||||
|
||||
const result = getDirectURL(config, {
|
||||
...params,
|
||||
tag: 'PixelData',
|
||||
instance: {
|
||||
...params.instance,
|
||||
PixelData: value,
|
||||
} as GetDirectURLParams['instance'],
|
||||
});
|
||||
|
||||
expect(result).toBe(value.DirectRetrieveURL);
|
||||
});
|
||||
|
||||
it('should return the URL for InlineBinary', () => {
|
||||
const value = {
|
||||
InlineBinary: 'base64-encoded-data',
|
||||
};
|
||||
|
||||
const result = getDirectURL(config, {
|
||||
...params,
|
||||
tag: 'PixelData',
|
||||
instance: {
|
||||
...params.instance,
|
||||
PixelData: value,
|
||||
} as GetDirectURLParams['instance'],
|
||||
});
|
||||
|
||||
expect(result).toContain('blob:');
|
||||
});
|
||||
|
||||
it('should return the BulkDataURI with defaultType if singlepart is false and there is no retrieveBulkData', () => {
|
||||
const value = {
|
||||
BulkDataURI: 'https://example.com/bulkdata',
|
||||
};
|
||||
|
||||
const result = getDirectURL(
|
||||
{
|
||||
...config,
|
||||
singlepart: false,
|
||||
},
|
||||
{
|
||||
...params,
|
||||
tag: 'PixelData',
|
||||
instance: {
|
||||
...params.instance,
|
||||
PixelData: value,
|
||||
} as GetDirectURLParams['instance'],
|
||||
}
|
||||
);
|
||||
|
||||
expect(result).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should return the BulkDataURI with defaultType if singlepart is false with retrieveBulkData', async () => {
|
||||
interface PixelDataValueWithRetrieveBulkData {
|
||||
BulkDataURI: string;
|
||||
retrieveBulkData: jest.Mock<Promise<Uint8Array>, []>;
|
||||
}
|
||||
|
||||
const value: PixelDataValueWithRetrieveBulkData = {
|
||||
BulkDataURI: 'https://example.com/bulkdata',
|
||||
retrieveBulkData: jest.fn().mockResolvedValueOnce(new Uint8Array([0, 1, 2])),
|
||||
};
|
||||
|
||||
const result = await getDirectURL(
|
||||
{
|
||||
...config,
|
||||
singlepart: false,
|
||||
},
|
||||
{
|
||||
...params,
|
||||
tag: 'PixelData',
|
||||
instance: {
|
||||
...params.instance,
|
||||
PixelData: value,
|
||||
} as GetDirectURLParams['instance'],
|
||||
}
|
||||
);
|
||||
|
||||
expect(result).toContain('blob:');
|
||||
});
|
||||
|
||||
it('should return the BulkDataURI with defaultType if singlepart does not include fetchPart', async () => {
|
||||
const arr = new Uint8Array([0, 1, 2]);
|
||||
|
||||
interface PixelDataValueWithRetrieveBulkData {
|
||||
BulkDataURI: string;
|
||||
retrieveBulkData: jest.Mock<Promise<Uint8Array>, []>;
|
||||
}
|
||||
|
||||
const value: PixelDataValueWithRetrieveBulkData = {
|
||||
BulkDataURI: 'https://example.com/bulkdata',
|
||||
retrieveBulkData: jest.fn().mockResolvedValueOnce(arr),
|
||||
};
|
||||
|
||||
const result = await getDirectURL(
|
||||
{
|
||||
...config,
|
||||
singlepart: ['audio'],
|
||||
},
|
||||
{
|
||||
...params,
|
||||
tag: 'PixelData',
|
||||
instance: {
|
||||
...params.instance,
|
||||
PixelData: value,
|
||||
} as GetDirectURLParams['instance'],
|
||||
}
|
||||
);
|
||||
|
||||
expect(result).toContain('blob:');
|
||||
expect(global.URL.createObjectURL).toHaveBeenCalledWith(
|
||||
new Blob([arr], { type: 'accept=video/mp4' })
|
||||
);
|
||||
});
|
||||
|
||||
it('should return the URL from getBulkdataValue if it exists', () => {
|
||||
const bulkDataURL = 'https://example.com/bulkdata';
|
||||
|
||||
mockedGetBulkdataValue.mockReturnValueOnce(bulkDataURL);
|
||||
|
||||
const result = getDirectURL(config, params);
|
||||
|
||||
expect(mockedGetBulkdataValue).toHaveBeenCalledWith(config, params);
|
||||
expect(result).toBe(bulkDataURL);
|
||||
});
|
||||
|
||||
it('should return the URL from createRenderedRetrieve if getBulkdataValue returns falsy', () => {
|
||||
const renderedRetrieveURL = 'https://example.com/rendered-retrieve';
|
||||
|
||||
mockedGetBulkdataValue.mockReturnValueOnce(null);
|
||||
mockedCreateRenderedRetrieve.mockReturnValueOnce(renderedRetrieveURL);
|
||||
|
||||
const result = getDirectURL(config, params);
|
||||
|
||||
expect(mockedGetBulkdataValue).toHaveBeenCalledWith(config, params);
|
||||
expect(mockedCreateRenderedRetrieve).toHaveBeenCalledWith(config, params);
|
||||
expect(result).toBe(renderedRetrieveURL);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user