Skip to content

Commit

Permalink
(test):Common utils test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
gitcliff committed Jul 2, 2024
1 parent 1620df6 commit 94fd206
Showing 1 changed file with 173 additions and 0 deletions.
173 changes: 173 additions & 0 deletions src/utils/common-utils.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
import { flattenObsList, hasRendering, clearSubmission, gracefullySetSubmission, hasSubmission } from './common-utils';
import { isEmpty } from '../validators/form-validator';
import { type FormField, type OpenmrsObs } from '../types';

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 obsList: OpenmrsObs[] = [
{
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: '',
},
];

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);
});
});
});

0 comments on commit 94fd206

Please sign in to comment.