forked from openmrs/openmrs-esm-form-engine-lib
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
(test):Common utils test coverage (openmrs#339)
* (test):Common utils test coverage * move obs list to the mocks folder
- Loading branch information
1 parent
fa30035
commit 60b57b7
Showing
2 changed files
with
173 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
export const obsList = [ | ||
{ | ||
concept: '7e43b05b-b6d8-4eb5-8f37-0b14f5347368', | ||
obsDatetime: '2023-07-01', | ||
obsGroup: null, | ||
groupMembers: [ | ||
{ | ||
concept: '4c43b05b-b6d8-4eb5-8f37-0b14f5347548', | ||
obsDatetime: '2023-07-02', | ||
obsGroup: null, | ||
groupMembers: [], | ||
comment: '', | ||
location: null, | ||
order: null, | ||
encounter: null, | ||
voided: false, | ||
value: null, | ||
formFieldPath: '', | ||
formFieldNamespace: '', | ||
status: '', | ||
interpretation: '', | ||
uuid: '', | ||
}, | ||
], | ||
comment: '', | ||
location: null, | ||
order: null, | ||
encounter: null, | ||
voided: false, | ||
value: null, | ||
formFieldPath: '', | ||
formFieldNamespace: '', | ||
status: '', | ||
interpretation: '', | ||
uuid: '', | ||
}, | ||
]; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,136 @@ | ||
import { flattenObsList, hasRendering, clearSubmission, gracefullySetSubmission, hasSubmission } from './common-utils'; | ||
import { isEmpty } from '../validators/form-validator'; | ||
import { type FormField, type OpenmrsObs } from '../types'; | ||
import { obsList } from '__mocks__/forms/rfe-forms/obs-list-data'; | ||
|
||
jest.mock('@openmrs/esm-framework', () => ({ | ||
formatDate: jest.fn(), | ||
restBaseUrl: 'http://openmrs.com/rest', | ||
})); | ||
|
||
jest.mock('../validators/form-validator', () => ({ | ||
isEmpty: jest.fn(), | ||
})); | ||
|
||
describe('utils functions', () => { | ||
describe('flattenObsList', () => { | ||
it('should flatten a nested obs list', () => { | ||
const result = flattenObsList(obsList); | ||
expect(result).toHaveLength(2); | ||
}); | ||
}); | ||
|
||
describe('hasRendering', () => { | ||
it('should return true if the field has the specified rendering', () => { | ||
const field: FormField = { | ||
label: 'Test Field', | ||
type: 'obs', | ||
questionOptions: { rendering: 'text' }, | ||
id: 'testFieldId', | ||
} as FormField; | ||
|
||
expect(hasRendering(field, 'text')).toBe(true); | ||
}); | ||
|
||
it('should return false if the field does not have the specified rendering', () => { | ||
const field: FormField = { | ||
label: 'Test Field', | ||
type: 'obs', | ||
questionOptions: { rendering: 'textarea' }, | ||
id: 'testFieldId', | ||
} as FormField; | ||
|
||
expect(hasRendering(field, 'text')).toBe(false); | ||
}); | ||
}); | ||
|
||
describe('clearSubmission', () => { | ||
it('should initialize the submission object if not present and clear values', () => { | ||
const field: FormField = { | ||
label: 'Test Field', | ||
type: 'obs', | ||
questionOptions: {}, | ||
id: 'testFieldId', | ||
meta: {}, | ||
} as FormField; | ||
|
||
clearSubmission(field); | ||
|
||
expect(field.meta.submission).toEqual({ | ||
voidedValue: null, | ||
newValue: null, | ||
}); | ||
}); | ||
}); | ||
|
||
describe('gracefullySetSubmission', () => { | ||
it('should set the newValue and voidedValue correctly', () => { | ||
const field: FormField = { | ||
label: 'Test Field', | ||
type: 'obs', | ||
questionOptions: {}, | ||
id: 'testFieldId', | ||
meta: {}, | ||
} as FormField; | ||
|
||
(isEmpty as jest.Mock).mockReturnValueOnce(false).mockReturnValueOnce(false); | ||
|
||
const newValue = 'new value'; | ||
const voidedValue = 'voided value'; | ||
|
||
gracefullySetSubmission(field, newValue, voidedValue); | ||
|
||
expect(field.meta.submission).toEqual({ | ||
voidedValue: 'voided value', | ||
newValue: 'new value', | ||
}); | ||
}); | ||
|
||
it('should not set values if they are empty', () => { | ||
const field: FormField = { | ||
label: 'Test Field', | ||
type: 'obs', | ||
questionOptions: {}, | ||
id: 'testFieldId', | ||
meta: {}, | ||
} as FormField; | ||
|
||
(isEmpty as jest.Mock).mockReturnValueOnce(true).mockReturnValueOnce(true); | ||
|
||
gracefullySetSubmission(field, '', ''); | ||
|
||
expect(field.meta.submission).toEqual({}); | ||
}); | ||
}); | ||
|
||
describe('hasSubmission', () => { | ||
it('should return true if there is a newValue or voidedValue', () => { | ||
const field: FormField = { | ||
label: 'Test Field', | ||
type: 'obs', | ||
questionOptions: {}, | ||
id: 'testFieldId', | ||
meta: { | ||
submission: { | ||
newValue: 'new value', | ||
voidedValue: 'voided value', | ||
}, | ||
}, | ||
} as FormField; | ||
|
||
expect(hasSubmission(field)).toBe(true); | ||
}); | ||
|
||
it('should return false if there is no newValue or voidedValue', () => { | ||
const field: FormField = { | ||
label: 'Test Field', | ||
type: 'obs', | ||
questionOptions: {}, | ||
id: 'testFieldId', | ||
meta: {}, | ||
} as FormField; | ||
|
||
expect(hasSubmission(field)).toBe(false); | ||
}); | ||
}); | ||
}); |