diff --git a/tests/tx/search.test.js b/tests/tx/search.test.js index 0a7af62..ebecde6 100644 --- a/tests/tx/search.test.js +++ b/tests/tx/search.test.js @@ -236,6 +236,32 @@ describe('Search Worker', () => { expect(response.body.link).toBeUndefined(); }); + test('should return only count with _summary=count for ValueSet', async () => { + const response = await request(app) + .get('/tx/r5/ValueSet') + .query({ _summary: 'count' }) + .set('Accept', 'application/json'); + + expect(response.status).toBe(200); + expect(response.body.resourceType).toBe('Bundle'); + expect(response.body.type).toBe('searchset'); + expect(response.body.total).toBeGreaterThan(0); + expect(response.body.entry).toBeUndefined(); + }); + + test('bundleFromR5 handles bundle without entries', () => { + const { bundleFromR5 } = require('../../tx/xversion/xv-bundle'); + const r5Bundle = { + resourceType: 'Bundle', + type: 'searchset', + total: 42 + }; + const r4Bundle = bundleFromR5(r5Bundle, '4.0.1'); + expect(r4Bundle.resourceType).toBe('Bundle'); + expect(r4Bundle.total).toBe(42); + expect(r4Bundle.entry).toBeUndefined(); + }); + test('should return full resources with _summary=false', async () => { const response = await request(app) .get('/tx/r5/CodeSystem') diff --git a/tx/xversion/xv-bundle.js b/tx/xversion/xv-bundle.js index 9f27fb6..ebc6d88 100644 --- a/tx/xversion/xv-bundle.js +++ b/tx/xversion/xv-bundle.js @@ -15,7 +15,7 @@ function bundleToR5(jsonObj, sourceVersion) { return jsonObj; // No conversion needed } - for (let be of jsonObj.entry) { + for (let be of jsonObj.entry || []) { convertResourceToR5(be.resource, sourceVersion); } @@ -51,7 +51,7 @@ function bundleFromR5(r5Obj, targetVersion) { } bundle.total = r5Obj.total; bundle.link = r5Obj.link; - for (let be5 of r5Obj.entry) { + for (let be5 of r5Obj.entry || []) { let be = {}; if (!bundle.entry) { bundle.entry = []; @@ -68,4 +68,4 @@ function bundleFromR5(r5Obj, targetVersion) { return bundle; } -module.exports = { bundleToR5, bundleFromR5 }; \ No newline at end of file +module.exports = { bundleToR5, bundleFromR5 };