Skip to content

Commit 59b99d5

Browse files
committed
Add unit tests for Auditor visibility on Accounting flags
Cover the new (isAdmin || isAuditor) branch in getSuggestedSearchesVisibility for: - unapprovedCash (Auditor passes, User does not) - unapprovedCard (Auditor passes, User does not) - reconciliation (Auditor passes via Expensify-Card branch) Plus regression checks that User stays excluded and Admin behaviour is unchanged.
1 parent 383e409 commit 59b99d5

1 file changed

Lines changed: 90 additions & 0 deletions

File tree

tests/unit/Search/SearchUIUtilsTest.ts

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7769,6 +7769,96 @@ describe('SearchUIUtils', () => {
77697769
const response = SearchUIUtils.getSuggestedSearchesVisibility(regularEmail, {}, policies, undefined);
77707770
expect(response.visibility.topSpenders).toBe(false);
77717771
});
7772+
7773+
test('Should show Unapproved Cash for Auditor role in paid policy with approvals and payments enabled', () => {
7774+
const auditorEmail = 'auditor@policy.com';
7775+
const policyKey = `policy_${policyID}`;
7776+
7777+
const policies: OnyxCollection<OnyxTypes.Policy> = {
7778+
[policyKey]: {
7779+
id: policyID,
7780+
type: CONST.POLICY.TYPE.TEAM,
7781+
role: CONST.POLICY.ROLE.AUDITOR,
7782+
approvalMode: CONST.POLICY.APPROVAL_MODE.ADVANCED,
7783+
} as OnyxTypes.Policy,
7784+
};
7785+
7786+
const response = SearchUIUtils.getSuggestedSearchesVisibility(auditorEmail, {}, policies, undefined);
7787+
expect(response.visibility.unapprovedCash).toBe(true);
7788+
});
7789+
7790+
test('Should show Unapproved Card for Auditor role in paid policy with approvals enabled and a default Expensify card', () => {
7791+
const auditorEmail = 'auditor@policy.com';
7792+
const policyKey = `policy_${policyID}`;
7793+
7794+
const policies: OnyxCollection<OnyxTypes.Policy> = {
7795+
[policyKey]: {
7796+
id: policyID,
7797+
type: CONST.POLICY.TYPE.TEAM,
7798+
role: CONST.POLICY.ROLE.AUDITOR,
7799+
approvalMode: CONST.POLICY.APPROVAL_MODE.ADVANCED,
7800+
} as OnyxTypes.Policy,
7801+
};
7802+
7803+
const response = SearchUIUtils.getSuggestedSearchesVisibility(auditorEmail, {}, policies, {} as CardFeedForDisplay);
7804+
expect(response.visibility.unapprovedCard).toBe(true);
7805+
});
7806+
7807+
test('Should show Reconciliation for Auditor role in paid policy with Expensify Cards enabled', () => {
7808+
const auditorEmail = 'auditor@policy.com';
7809+
const policyKey = `policy_${policyID}`;
7810+
7811+
const policies: OnyxCollection<OnyxTypes.Policy> = {
7812+
[policyKey]: {
7813+
id: policyID,
7814+
type: CONST.POLICY.TYPE.TEAM,
7815+
role: CONST.POLICY.ROLE.AUDITOR,
7816+
areExpensifyCardsEnabled: true,
7817+
} as OnyxTypes.Policy,
7818+
};
7819+
7820+
const response = SearchUIUtils.getSuggestedSearchesVisibility(auditorEmail, {}, policies, undefined);
7821+
expect(response.visibility.reconciliation).toBe(true);
7822+
});
7823+
7824+
test('Should hide Unapproved Cash, Unapproved Card, and Reconciliation for User role even when prerequisites are met', () => {
7825+
const userEmail = 'user@policy.com';
7826+
const policyKey = `policy_${policyID}`;
7827+
7828+
const policies: OnyxCollection<OnyxTypes.Policy> = {
7829+
[policyKey]: {
7830+
id: policyID,
7831+
type: CONST.POLICY.TYPE.TEAM,
7832+
role: CONST.POLICY.ROLE.USER,
7833+
approvalMode: CONST.POLICY.APPROVAL_MODE.ADVANCED,
7834+
areExpensifyCardsEnabled: true,
7835+
} as OnyxTypes.Policy,
7836+
};
7837+
7838+
const response = SearchUIUtils.getSuggestedSearchesVisibility(userEmail, {}, policies, {} as CardFeedForDisplay);
7839+
expect(response.visibility.unapprovedCash).toBe(false);
7840+
expect(response.visibility.unapprovedCard).toBe(false);
7841+
expect(response.visibility.reconciliation).toBe(false);
7842+
});
7843+
7844+
test('Should still show Unapproved Cash, Unapproved Card, and Reconciliation for Admin role when prerequisites are met (regression)', () => {
7845+
const policyKey = `policy_${policyID}`;
7846+
7847+
const policies: OnyxCollection<OnyxTypes.Policy> = {
7848+
[policyKey]: {
7849+
id: policyID,
7850+
type: CONST.POLICY.TYPE.TEAM,
7851+
role: CONST.POLICY.ROLE.ADMIN,
7852+
approvalMode: CONST.POLICY.APPROVAL_MODE.ADVANCED,
7853+
areExpensifyCardsEnabled: true,
7854+
} as OnyxTypes.Policy,
7855+
};
7856+
7857+
const response = SearchUIUtils.getSuggestedSearchesVisibility(adminEmail, {}, policies, {} as CardFeedForDisplay);
7858+
expect(response.visibility.unapprovedCash).toBe(true);
7859+
expect(response.visibility.unapprovedCard).toBe(true);
7860+
expect(response.visibility.reconciliation).toBe(true);
7861+
});
77727862
});
77737863

77747864
describe('Test getSuggestedSearches sort defaults', () => {

0 commit comments

Comments
 (0)