|
6 | 6 | resolveDuplicationConflictAction, |
7 | 7 | resolveEditCommentWithNewAddCommentRequest, |
8 | 8 | resolveEnableFeatureConflicts, |
| 9 | + resolveOpenReportDuplicationConflictAction, |
9 | 10 | } from '@libs/actions/RequestConflictUtils'; |
10 | 11 | import {WRITE_COMMANDS} from '@libs/API/types'; |
11 | 12 | import type {WriteCommand} from '@libs/API/types'; |
@@ -163,6 +164,44 @@ describe('RequestConflictUtils', () => { |
163 | 164 | }); |
164 | 165 | }); |
165 | 166 |
|
| 167 | + describe('resolveOpenReportDuplicationConflictAction', () => { |
| 168 | + it('returns push when no matching OpenReport for the reportID exists in the queue', () => { |
| 169 | + const persistedRequests = [{command: 'OpenApp'}, {command: WRITE_COMMANDS.OPEN_REPORT, data: {reportID: '2'}}]; |
| 170 | + const result = resolveOpenReportDuplicationConflictAction(persistedRequests, {reportID: '1'} as never); |
| 171 | + expect(result).toEqual({conflictAction: {type: 'push'}}); |
| 172 | + }); |
| 173 | + |
| 174 | + it('returns noAction when the queued OpenReport carries guidedSetupData', () => { |
| 175 | + const persistedRequests = [{command: WRITE_COMMANDS.OPEN_REPORT, data: {reportID: '1', guidedSetupData: '[{}]'}}]; |
| 176 | + const result = resolveOpenReportDuplicationConflictAction(persistedRequests, {reportID: '1'} as never); |
| 177 | + expect(result).toEqual({conflictAction: {type: 'noAction'}}); |
| 178 | + }); |
| 179 | + |
| 180 | + it('returns noAction when the queued request carries accountIDList but the new one has no participants', () => { |
| 181 | + const persistedRequests = [{command: WRITE_COMMANDS.OPEN_REPORT, data: {reportID: '1', accountIDList: '10,20'}}]; |
| 182 | + const result = resolveOpenReportDuplicationConflictAction(persistedRequests, {reportID: '1'} as never); |
| 183 | + expect(result).toEqual({conflictAction: {type: 'noAction'}}); |
| 184 | + }); |
| 185 | + |
| 186 | + it('replaces when the new request also carries an accountIDList', () => { |
| 187 | + const persistedRequests = [{command: WRITE_COMMANDS.OPEN_REPORT, data: {reportID: '1', accountIDList: '10,20'}}]; |
| 188 | + const result = resolveOpenReportDuplicationConflictAction(persistedRequests, {reportID: '1', accountIDList: '10,20'} as never); |
| 189 | + expect(result).toEqual({conflictAction: {type: 'replace', index: 0}}); |
| 190 | + }); |
| 191 | + |
| 192 | + it('replaces when neither queued nor new request has participants', () => { |
| 193 | + const persistedRequests = [{command: 'OpenApp'}, {command: WRITE_COMMANDS.OPEN_REPORT, data: {reportID: '1'}}]; |
| 194 | + const result = resolveOpenReportDuplicationConflictAction(persistedRequests, {reportID: '1'} as never); |
| 195 | + expect(result).toEqual({conflictAction: {type: 'replace', index: 1}}); |
| 196 | + }); |
| 197 | + |
| 198 | + it('replaces when the queued request has no participants but the new request does', () => { |
| 199 | + const persistedRequests = [{command: WRITE_COMMANDS.OPEN_REPORT, data: {reportID: '1'}}]; |
| 200 | + const result = resolveOpenReportDuplicationConflictAction(persistedRequests, {reportID: '1', accountIDList: '10,20'} as never); |
| 201 | + expect(result).toEqual({conflictAction: {type: 'replace', index: 0}}); |
| 202 | + }); |
| 203 | + }); |
| 204 | + |
166 | 205 | describe('resolveDetachReceiptConflicts', () => { |
167 | 206 | it('returns push when no replace-receipt requests match transactionID', () => { |
168 | 207 | const persistedRequests = [{command: 'OpenReport'}, {command: WRITE_COMMANDS.REPLACE_RECEIPT, data: {transactionID: '2'}}, {command: 'CloseAccount'}]; |
|
0 commit comments