Remove redundant params

This commit is contained in:
Madison Caldwell 2021-07-15 11:12:42 -04:00
parent 3daa823fad
commit 87aff9c810
14 changed files with 98 additions and 223 deletions

View file

@ -62,16 +62,16 @@ export function WorkspacePanelWrapper({
},
[dispatchLens, activeVisualization]
);
const warningMessages: React.ReactNode[] = [];
const warnings: React.ReactNode[] = [];
if (activeVisualization?.getWarningMessages) {
warningMessages.push(
warnings.push(
...(activeVisualization.getWarningMessages(visualizationState, framePublicAPI) || [])
);
}
Object.entries(datasourceStates).forEach(([datasourceId, datasourceState]) => {
const datasource = datasourceMap[datasourceId];
if (!datasourceState.isLoading && datasource.getWarningMessages) {
warningMessages.push(
warnings.push(
...(datasource.getWarningMessages(datasourceState.state, framePublicAPI) || [])
);
}
@ -120,9 +120,7 @@ export function WorkspacePanelWrapper({
</EuiFlexItem>
) : null}
<EuiFlexItem grow={false}>
{warningMessages && warningMessages.length ? (
<WarningsPopover>{warningMessages}</WarningsPopover>
) : null}
{warnings && warnings.length ? <WarningsPopover>{warnings}</WarningsPopover> : null}
</EuiFlexItem>
</EuiFlexGroup>
</div>

View file

@ -148,7 +148,7 @@ export function getStateTimeShiftWarningMessages(
{ activeData }: FramePublicAPI
) {
if (!state) return;
const warningMessages: React.ReactNode[] = [];
const warnings: React.ReactNode[] = [];
Object.entries(state.layers).forEach(([layerId, layer]) => {
const dateHistogramInterval = getDateHistogramInterval(
layer,
@ -189,7 +189,7 @@ export function getStateTimeShiftWarningMessages(
if (timeShift === 0) return;
if (timeShift < shiftInterval) {
timeShiftMap[timeShift].forEach((columnId) => {
warningMessages.push(
warnings.push(
<FormattedMessage
key={`small-${columnId}`}
id="xpack.lens.indexPattern.timeShiftSmallWarning"
@ -204,7 +204,7 @@ export function getStateTimeShiftWarningMessages(
});
} else if (!Number.isInteger(timeShift / shiftInterval)) {
timeShiftMap[timeShift].forEach((columnId) => {
warningMessages.push(
warnings.push(
<FormattedMessage
key={`multiple-${columnId}`}
id="xpack.lens.indexPattern.timeShiftMultipleWarning"
@ -220,7 +220,7 @@ export function getStateTimeShiftWarningMessages(
}
});
});
return warningMessages;
return warnings;
}
export function getColumnTimeShiftWarnings(

View file

@ -963,7 +963,7 @@ describe('xy_visualization', () => {
(frame.datasourceLayers.first.getOperationForColumnId as jest.Mock).mockReturnValue({
label: 'Label B',
});
const warningMessages = xyVisualization.getWarningMessages!(
const warnings = xyVisualization.getWarningMessages!(
{
...exampleState(),
layers: [
@ -977,8 +977,8 @@ describe('xy_visualization', () => {
},
frame
);
expect(warningMessages).toHaveLength(1);
expect(warningMessages && warningMessages[0]).toMatchInlineSnapshot(`
expect(warnings).toHaveLength(1);
expect(warnings && warnings[0]).toMatchInlineSnapshot(`
<FormattedMessage
defaultMessage="{label} contains array values. Your visualization may not render as expected."
id="xpack.lens.xyVisualization.arrayValues"

View file

@ -81,7 +81,7 @@ describe('eql_executor', () => {
wrapHits: jest.fn(),
wrapSequences: jest.fn(),
});
expect(response.warningMessages.length).toEqual(1);
expect(response.warnings.length).toEqual(1);
});
});
});

View file

@ -61,10 +61,9 @@ export const eqlExecutor = async ({
const result = createSearchAfterReturnType();
const ruleParams = rule.attributes.params;
if (hasLargeValueItem(exceptionItems)) {
result.warningMessages.push(
result.warnings.push(
'Exceptions that use "is in list" or "is not in list" operators are not applied to EQL rules'
);
result.warning = true;
}
try {
const signalIndexVersion = await getIndexVersion(
@ -123,7 +122,6 @@ export const eqlExecutor = async ({
if (newSignals?.length) {
const insertResult = await bulkCreate(newSignals);
result.bulkCreateTimes.push(insertResult.bulkCreateDuration);
result.createdSignalsCount += insertResult.createdItemsCount;
result.createdSignals = insertResult.createdItems;
}
result.success = true;

View file

@ -96,7 +96,7 @@ describe('ml_executor', () => {
});
expect(logger.warn).toHaveBeenCalled();
expect(logger.warn.mock.calls[0][0]).toContain('Machine learning job(s) are not started');
expect(response.warningMessages.length).toEqual(1);
expect(response.warnings.length).toEqual(1);
});
it('should record a partial failure if Machine learning job was not started', async () => {
@ -122,6 +122,6 @@ describe('ml_executor', () => {
});
expect(logger.warn).toHaveBeenCalled();
expect(logger.warn.mock.calls[0][0]).toContain('Machine learning job(s) are not started');
expect(response.warningMessages.length).toEqual(1);
expect(response.warnings.length).toEqual(1);
});
});

View file

@ -77,9 +77,8 @@ export const mlExecutor = async ({
].join(', ')
)
);
result.warningMessages.push(warningMessage);
result.warnings.push(warningMessage);
logger.warn(warningMessage);
result.warning = true;
}
const anomalyResults = await findMlSignals({
@ -107,13 +106,7 @@ export const mlExecutor = async ({
if (anomalyCount) {
logger.info(buildRuleMessage(`Found ${anomalyCount} signals from ML anomalies.`));
}
const {
success,
errors,
bulkCreateDuration,
createdItemsCount,
createdItems,
} = await bulkCreateMlSignals({
const { success, errors, bulkCreateDuration, createdItems } = await bulkCreateMlSignals({
someResult: filteredAnomalyResults,
ruleSO: rule,
services,
@ -137,7 +130,6 @@ export const mlExecutor = async ({
createSearchAfterReturnType({
success: success && filteredAnomalyResults._shards.failed === 0,
errors: [...errors, ...searchErrors],
createdSignalsCount: createdItemsCount,
createdSignals: createdItems,
bulkCreateTimes: bulkCreateDuration ? [bulkCreateDuration] : [],
}),

View file

@ -84,7 +84,7 @@ describe('threshold_executor', () => {
})),
wrapHits: jest.fn(),
});
expect(response.warningMessages.length).toEqual(1);
expect(response.warnings.length).toEqual(1);
});
});
});

View file

@ -63,10 +63,9 @@ export const thresholdExecutor = async ({
let result = createSearchAfterReturnType();
const ruleParams = rule.attributes.params;
if (hasLargeValueItem(exceptionItems)) {
result.warningMessages.push(
result.warnings.push(
'Exceptions that use "is in list" or "is not in list" operators are not applied to Threshold rules'
);
result.warning = true;
}
const inputIndex = await getInputIndex(services, version, ruleParams.index);
@ -117,13 +116,7 @@ export const thresholdExecutor = async ({
buildRuleMessage,
});
const {
success,
bulkCreateDuration,
createdItemsCount,
createdItems,
errors,
} = await bulkCreateThresholdSignals({
const { success, bulkCreateDuration, createdItems, errors } = await bulkCreateThresholdSignals({
someResult: thresholdResults,
ruleSO: rule,
filter: esFilter,
@ -147,7 +140,6 @@ export const thresholdExecutor = async ({
createSearchAfterReturnType({
success,
errors: [...errors, ...previousSearchErrors, ...searchErrors],
createdSignalsCount: createdItemsCount,
createdSignals: createdItems,
bulkCreateTimes: bulkCreateDuration ? [bulkCreateDuration] : [],
searchAfterTimes: [thresholdSearchDuration],

View file

@ -178,7 +178,7 @@ describe('searchAfterAndBulkCreate', () => {
},
];
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
tuple,
ruleSO,
listClient,
@ -197,7 +197,7 @@ describe('searchAfterAndBulkCreate', () => {
});
expect(success).toEqual(true);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(5);
expect(createdSignalsCount).toEqual(4);
expect(createdSignals.length).toEqual(4);
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -282,7 +282,7 @@ describe('searchAfterAndBulkCreate', () => {
},
},
];
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
ruleSO,
tuple,
listClient,
@ -301,7 +301,7 @@ describe('searchAfterAndBulkCreate', () => {
});
expect(success).toEqual(true);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(4);
expect(createdSignalsCount).toEqual(3);
expect(createdSignals.length).toEqual(3);
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -360,7 +360,7 @@ describe('searchAfterAndBulkCreate', () => {
},
},
];
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
ruleSO,
tuple,
listClient,
@ -379,7 +379,7 @@ describe('searchAfterAndBulkCreate', () => {
});
expect(success).toEqual(true);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(2);
expect(createdSignalsCount).toEqual(4);
expect(createdSignals.length).toEqual(4);
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -419,7 +419,7 @@ describe('searchAfterAndBulkCreate', () => {
},
},
];
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
ruleSO,
tuple,
listClient,
@ -438,7 +438,7 @@ describe('searchAfterAndBulkCreate', () => {
});
expect(success).toEqual(true);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(2);
expect(createdSignalsCount).toEqual(0); // should not create any signals because all events were in the allowlist
expect(createdSignals.length).toEqual(0); // should not create any signals because all events were in the allowlist
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -498,7 +498,7 @@ describe('searchAfterAndBulkCreate', () => {
)
);
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
ruleSO,
tuple,
listClient,
@ -517,7 +517,7 @@ describe('searchAfterAndBulkCreate', () => {
});
expect(success).toEqual(true);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(2);
expect(createdSignalsCount).toEqual(4);
expect(createdSignals.length).toEqual(4);
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -553,7 +553,7 @@ describe('searchAfterAndBulkCreate', () => {
},
},
];
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
ruleSO,
tuple,
listClient,
@ -572,7 +572,7 @@ describe('searchAfterAndBulkCreate', () => {
});
expect(success).toEqual(true);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(1);
expect(createdSignalsCount).toEqual(0); // should not create any signals because all events were in the allowlist
expect(createdSignals.length).toEqual(0); // should not create any signals because all events were in the allowlist
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -625,7 +625,7 @@ describe('searchAfterAndBulkCreate', () => {
},
},
];
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
ruleSO,
tuple,
listClient,
@ -644,7 +644,7 @@ describe('searchAfterAndBulkCreate', () => {
});
expect(success).toEqual(true);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(1);
expect(createdSignalsCount).toEqual(4);
expect(createdSignals.length).toEqual(4);
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -699,7 +699,7 @@ describe('searchAfterAndBulkCreate', () => {
}))
)
);
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
ruleSO,
tuple,
listClient,
@ -718,7 +718,7 @@ describe('searchAfterAndBulkCreate', () => {
});
expect(success).toEqual(true);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(2);
expect(createdSignalsCount).toEqual(4);
expect(createdSignals.length).toEqual(4);
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -750,7 +750,7 @@ describe('searchAfterAndBulkCreate', () => {
)
)
);
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
listClient,
exceptionsList: [exceptionItem],
tuple,
@ -769,7 +769,7 @@ describe('searchAfterAndBulkCreate', () => {
});
expect(mockLogger.error).toHaveBeenCalled();
expect(success).toEqual(false);
expect(createdSignalsCount).toEqual(0);
expect(createdSignals.length).toEqual(0);
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -797,7 +797,7 @@ describe('searchAfterAndBulkCreate', () => {
}))
)
);
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
listClient,
exceptionsList: [exceptionItem],
tuple,
@ -815,7 +815,7 @@ describe('searchAfterAndBulkCreate', () => {
wrapHits,
});
expect(success).toEqual(true);
expect(createdSignalsCount).toEqual(0);
expect(createdSignals.length).toEqual(0);
expect(lastLookBackDate).toEqual(null);
});
@ -858,7 +858,7 @@ describe('searchAfterAndBulkCreate', () => {
},
},
];
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
listClient,
exceptionsList: [exceptionItem],
tuple,
@ -876,7 +876,7 @@ describe('searchAfterAndBulkCreate', () => {
wrapHits,
});
expect(success).toEqual(false);
expect(createdSignalsCount).toEqual(0); // should not create signals if search threw error
expect(createdSignals.length).toEqual(0); // should not create signals if search threw error
expect(lastLookBackDate).toEqual(null);
});
@ -979,12 +979,7 @@ describe('searchAfterAndBulkCreate', () => {
sampleDocSearchResultsNoSortIdNoHits()
)
);
const {
success,
createdSignalsCount,
lastLookBackDate,
errors,
} = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate, errors } = await searchAfterAndBulkCreate({
ruleSO,
tuple,
listClient,
@ -1004,7 +999,7 @@ describe('searchAfterAndBulkCreate', () => {
expect(success).toEqual(false);
expect(errors).toEqual(['error on creation']);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(5);
expect(createdSignalsCount).toEqual(4);
expect(createdSignals.length).toEqual(4);
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
@ -1079,7 +1074,7 @@ describe('searchAfterAndBulkCreate', () => {
);
const mockEnrichment = jest.fn((a) => a);
const { success, createdSignalsCount, lastLookBackDate } = await searchAfterAndBulkCreate({
const { success, createdSignals, lastLookBackDate } = await searchAfterAndBulkCreate({
enrichment: mockEnrichment,
ruleSO,
tuple,
@ -1112,7 +1107,7 @@ describe('searchAfterAndBulkCreate', () => {
);
expect(success).toEqual(true);
expect(mockService.scopedClusterClient.asCurrentUser.search).toHaveBeenCalledTimes(4);
expect(createdSignalsCount).toEqual(3);
expect(createdSignals.length).toEqual(3);
expect(lastLookBackDate).toEqual(new Date('2020-04-20T21:27:45+0000'));
});
});

View file

@ -132,13 +132,13 @@ export const createThreatSignals = async ({
threatListCount -= threatList.hits.hits.length;
logger.debug(
buildRuleMessage(
`Concurrent indicator match searches completed with ${results.createdSignalsCount} signals found`,
`Concurrent indicator match searches completed with ${results.createdSignals.length} signals found`,
`search times of ${results.searchAfterTimes}ms,`,
`bulk create times ${results.bulkCreateTimes}ms,`,
`all successes are ${results.success}`
)
);
if (results.createdSignalsCount >= params.maxSignals) {
if (results.createdSignals.length >= params.maxSignals) {
logger.debug(
buildRuleMessage(
`Indicator match has reached its max signals count ${params.maxSignals}. Additional indicator items not checked are ${threatListCount}`

View file

@ -51,26 +51,22 @@ describe('utils', () => {
test('it should combine two results with success set to "true" if both are "true"', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineResults(existingResult, newResult);
expect(combinedResults.success).toEqual(true);
@ -79,26 +75,22 @@ describe('utils', () => {
test('it should combine two results with success set to "false" if one of them is "false"', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: false,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineResults(existingResult, newResult);
expect(combinedResults.success).toEqual(false);
@ -107,26 +99,22 @@ describe('utils', () => {
test('it should use the latest date if it is set in the new result', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: false,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'),
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineResults(existingResult, newResult);
expect(combinedResults.lastLookBackDate?.toISOString()).toEqual('2020-09-16T03:34:32.390Z');
@ -135,26 +123,22 @@ describe('utils', () => {
test('it should combine the searchAfterTimes and the bulkCreateTimes', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: false,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'),
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineResults(existingResult, newResult);
expect(combinedResults).toEqual(
@ -168,26 +152,22 @@ describe('utils', () => {
test('it should combine errors together without duplicates', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: false,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: ['error 1', 'error 2', 'error 3'],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'),
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: ['error 4', 'error 1', 'error 3', 'error 5'],
warningMessages: [],
warnings: [],
};
const combinedResults = combineResults(existingResult, newResult);
expect(combinedResults).toEqual(
@ -292,25 +272,21 @@ describe('utils', () => {
test('it should use the maximum found if given an empty array for newResults', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const expectedResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['30'], // max value from existingResult.searchAfterTimes
bulkCreateTimes: ['25'], // max value from existingResult.bulkCreateTimes
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, []);
expect(combinedResults).toEqual(expectedResult);
@ -319,36 +295,30 @@ describe('utils', () => {
test('it should work with empty arrays for searchAfterTimes and bulkCreateTimes and createdSignals', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: [],
bulkCreateTimes: [],
lastLookBackDate: undefined,
createdSignalsCount: 0,
createdSignals: [],
errors: [],
warningMessages: [],
warnings: [],
};
const expectedResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['30'], // max value from existingResult.searchAfterTimes
bulkCreateTimes: ['25'], // max value from existingResult.bulkCreateTimes
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, [newResult]);
@ -358,48 +328,40 @@ describe('utils', () => {
test('it should get the max of two new results and then combine the result with an existingResult correctly', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'], // max is 30
bulkCreateTimes: ['5', '15', '25'], // max is 25
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult1: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'),
createdSignalsCount: 5,
createdSignals: Array(5).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult2: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['40', '5', '15'],
bulkCreateTimes: ['50', '5', '15'],
lastLookBackDate: new Date('2020-09-16T04:34:32.390Z'),
createdSignalsCount: 8,
createdSignals: Array(8).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const expectedResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['70'], // max value between newResult1 and newResult2 + max array value of existingResult (40 + 30 = 70)
bulkCreateTimes: ['75'], // max value between newResult1 and newResult2 + max array value of existingResult (50 + 25 = 75)
lastLookBackDate: new Date('2020-09-16T04:34:32.390Z'), // max lastLookBackDate
createdSignalsCount: 16, // all the signals counted together (8 + 5 + 3)
createdSignals: Array(16).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, [newResult1, newResult2]);
@ -409,48 +371,40 @@ describe('utils', () => {
test('it should get the max of two new results and then combine the result with an existingResult correctly when the results are flipped around', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'], // max is 30
bulkCreateTimes: ['5', '15', '25'], // max is 25
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult1: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'),
createdSignalsCount: 5,
createdSignals: Array(5).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult2: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['40', '5', '15'],
bulkCreateTimes: ['50', '5', '15'],
lastLookBackDate: new Date('2020-09-16T04:34:32.390Z'),
createdSignalsCount: 8,
createdSignals: Array(8).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const expectedResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['70'], // max value between newResult1 and newResult2 + max array value of existingResult (40 + 30 = 70)
bulkCreateTimes: ['75'], // max value between newResult1 and newResult2 + max array value of existingResult (50 + 25 = 75)
lastLookBackDate: new Date('2020-09-16T04:34:32.390Z'), // max lastLookBackDate
createdSignalsCount: 16, // all the signals counted together (8 + 5 + 3)
createdSignals: Array(16).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, [newResult2, newResult1]); // two array elements are flipped
@ -460,48 +414,40 @@ describe('utils', () => {
test('it should return the max date correctly if one date contains a null', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'], // max is 30
bulkCreateTimes: ['5', '15', '25'], // max is 25
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult1: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'),
createdSignalsCount: 5,
createdSignals: Array(5).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult2: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['40', '5', '15'],
bulkCreateTimes: ['50', '5', '15'],
lastLookBackDate: null,
createdSignalsCount: 8,
createdSignals: Array(8).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const expectedResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['70'], // max value between newResult1 and newResult2 + max array value of existingResult (40 + 30 = 70)
bulkCreateTimes: ['75'], // max value between newResult1 and newResult2 + max array value of existingResult (50 + 25 = 75)
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'), // max lastLookBackDate
createdSignalsCount: 16, // all the signals counted together (8 + 5 + 3)
createdSignals: Array(16).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, [newResult1, newResult2]);
@ -511,26 +457,22 @@ describe('utils', () => {
test('it should combine two results with success set to "true" if both are "true"', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, [newResult]);
expect(combinedResults.success).toEqual(true);
@ -539,26 +481,22 @@ describe('utils', () => {
test('it should combine two results with success set to "false" if one of them is "false"', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: false,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, [newResult]);
expect(combinedResults.success).toEqual(false);
@ -567,26 +505,22 @@ describe('utils', () => {
test('it should use the latest date if it is set in the new result', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: false,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'),
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, [newResult]);
expect(combinedResults.lastLookBackDate?.toISOString()).toEqual('2020-09-16T03:34:32.390Z');
@ -595,26 +529,22 @@ describe('utils', () => {
test('it should combine the searchAfterTimes and the bulkCreateTimes', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: false,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'),
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: [],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, [newResult]);
expect(combinedResults).toEqual(
@ -628,26 +558,22 @@ describe('utils', () => {
test('it should combine errors together without duplicates', () => {
const existingResult: SearchAfterAndBulkCreateReturnType = {
success: false,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: undefined,
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: ['error 1', 'error 2', 'error 3'],
warningMessages: [],
warnings: [],
};
const newResult: SearchAfterAndBulkCreateReturnType = {
success: true,
warning: false,
searchAfterTimes: ['10', '20', '30'],
bulkCreateTimes: ['5', '15', '25'],
lastLookBackDate: new Date('2020-09-16T03:34:32.390Z'),
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: ['error 4', 'error 1', 'error 3', 'error 5'],
warningMessages: [],
warnings: [],
};
const combinedResults = combineConcurrentResults(existingResult, [newResult]);
expect(combinedResults).toEqual(

View file

@ -66,16 +66,14 @@ export const combineResults = (
newResult: SearchAfterAndBulkCreateReturnType
): SearchAfterAndBulkCreateReturnType => ({
success: currentResult.success === false ? false : newResult.success,
warning: currentResult.warning || newResult.warning,
bulkCreateTimes: calculateAdditiveMax(currentResult.bulkCreateTimes, newResult.bulkCreateTimes),
searchAfterTimes: calculateAdditiveMax(
currentResult.searchAfterTimes,
newResult.searchAfterTimes
),
lastLookBackDate: newResult.lastLookBackDate,
createdSignalsCount: currentResult.createdSignalsCount + newResult.createdSignalsCount,
createdSignals: [...currentResult.createdSignals, ...newResult.createdSignals],
warningMessages: [...currentResult.warningMessages, ...newResult.warningMessages],
warnings: [...currentResult.warnings, ...newResult.warnings],
errors: [...new Set([...currentResult.errors, ...newResult.errors])],
});
@ -95,26 +93,22 @@ export const combineConcurrentResults = (
const lastLookBackDate = calculateMaxLookBack(accum.lastLookBackDate, item.lastLookBackDate);
return {
success: accum.success && item.success,
warning: accum.warning || item.warning,
searchAfterTimes: [maxSearchAfterTime],
bulkCreateTimes: [maxBulkCreateTimes],
lastLookBackDate,
createdSignalsCount: accum.createdSignalsCount + item.createdSignalsCount,
createdSignals: [...accum.createdSignals, ...item.createdSignals],
warningMessages: [...accum.warningMessages, ...item.warningMessages],
warnings: [...accum.warnings, ...item.warnings],
errors: [...new Set([...accum.errors, ...item.errors])],
};
},
{
success: true,
warning: false,
searchAfterTimes: [],
bulkCreateTimes: [],
lastLookBackDate: undefined,
createdSignalsCount: 0,
createdSignals: [],
errors: [],
warningMessages: [],
warnings: [],
}
);

View file

@ -1076,14 +1076,12 @@ describe('utils', () => {
});
const expected: SearchAfterAndBulkCreateReturnType = {
bulkCreateTimes: [],
createdSignalsCount: 0,
createdSignals: [],
errors: [],
lastLookBackDate: null,
searchAfterTimes: [],
success: true,
warning: false,
warningMessages: [],
warnings: [],
};
expect(newSearchResult).toEqual(expected);
});
@ -1096,14 +1094,12 @@ describe('utils', () => {
});
const expected: SearchAfterAndBulkCreateReturnType = {
bulkCreateTimes: [],
createdSignalsCount: 0,
createdSignals: [],
errors: [],
lastLookBackDate: new Date('2020-04-20T21:27:45.000Z'),
searchAfterTimes: [],
success: true,
warning: false,
warningMessages: [],
warnings: [],
};
expect(newSearchResult).toEqual(expected);
});
@ -1414,14 +1410,12 @@ describe('utils', () => {
const searchAfterReturnType = createSearchAfterReturnType();
const expected: SearchAfterAndBulkCreateReturnType = {
bulkCreateTimes: [],
createdSignalsCount: 0,
createdSignals: [],
errors: [],
lastLookBackDate: null,
searchAfterTimes: [],
success: true,
warning: false,
warningMessages: [],
warnings: [],
};
expect(searchAfterReturnType).toEqual(expected);
});
@ -1429,45 +1423,38 @@ describe('utils', () => {
test('createSearchAfterReturnType can override all values', () => {
const searchAfterReturnType = createSearchAfterReturnType({
bulkCreateTimes: ['123'],
createdSignalsCount: 5,
createdSignals: Array(5).fill(sampleSignalHit()),
errors: ['error 1'],
lastLookBackDate: new Date('2020-09-21T18:51:25.193Z'),
searchAfterTimes: ['123'],
success: false,
warning: true,
warningMessages: ['test warning'],
warnings: ['test warning'],
});
const expected: SearchAfterAndBulkCreateReturnType = {
bulkCreateTimes: ['123'],
createdSignalsCount: 5,
createdSignals: Array(5).fill(sampleSignalHit()),
errors: ['error 1'],
lastLookBackDate: new Date('2020-09-21T18:51:25.193Z'),
searchAfterTimes: ['123'],
success: false,
warning: true,
warningMessages: ['test warning'],
warnings: ['test warning'],
};
expect(searchAfterReturnType).toEqual(expected);
});
test('createSearchAfterReturnType can override select values', () => {
const searchAfterReturnType = createSearchAfterReturnType({
createdSignalsCount: 5,
createdSignals: Array(5).fill(sampleSignalHit()),
errors: ['error 1'],
});
const expected: SearchAfterAndBulkCreateReturnType = {
bulkCreateTimes: [],
createdSignalsCount: 5,
createdSignals: Array(5).fill(sampleSignalHit()),
errors: ['error 1'],
lastLookBackDate: null,
searchAfterTimes: [],
success: true,
warning: false,
warningMessages: [],
warnings: [],
};
expect(searchAfterReturnType).toEqual(expected);
});
@ -1478,14 +1465,12 @@ describe('utils', () => {
const merged = mergeReturns([createSearchAfterReturnType(), createSearchAfterReturnType()]);
const expected: SearchAfterAndBulkCreateReturnType = {
bulkCreateTimes: [],
createdSignalsCount: 0,
createdSignals: [],
errors: [],
lastLookBackDate: null,
searchAfterTimes: [],
success: true,
warning: false,
warningMessages: [],
warnings: [],
};
expect(merged).toEqual(expected);
});
@ -1534,36 +1519,31 @@ describe('utils', () => {
const merged = mergeReturns([
createSearchAfterReturnType({
bulkCreateTimes: ['123'],
createdSignalsCount: 3,
createdSignals: Array(3).fill(sampleSignalHit()),
errors: ['error 1', 'error 2'],
lastLookBackDate: new Date('2020-08-21T18:51:25.193Z'),
searchAfterTimes: ['123'],
success: true,
warningMessages: ['warning1'],
warnings: ['warning1'],
}),
createSearchAfterReturnType({
bulkCreateTimes: ['456'],
createdSignalsCount: 2,
createdSignals: Array(2).fill(sampleSignalHit()),
errors: ['error 3'],
lastLookBackDate: new Date('2020-09-21T18:51:25.193Z'),
searchAfterTimes: ['567'],
success: true,
warningMessages: ['warning2'],
warning: true,
warnings: ['warning2'],
}),
]);
const expected: SearchAfterAndBulkCreateReturnType = {
bulkCreateTimes: ['123', '456'], // concatenates the prev and next together
createdSignalsCount: 5, // Adds the 3 and 2 together
createdSignals: Array(5).fill(sampleSignalHit()),
errors: ['error 1', 'error 2', 'error 3'], // concatenates the prev and next together
lastLookBackDate: new Date('2020-09-21T18:51:25.193Z'), // takes the next lastLookBackDate
searchAfterTimes: ['123', '567'], // concatenates the searchAfterTimes together
success: true, // Defaults to success true is all of it was successful
warning: true,
warningMessages: ['warning1', 'warning2'],
warnings: ['warning1', 'warning2'],
};
expect(merged).toEqual(expected);
});