Skip to content

Commit

Permalink
chore: fix tests - remove refs to config agg
Browse files Browse the repository at this point in the history
  • Loading branch information
peternhale committed Dec 4, 2023
1 parent 13ad63e commit 0c8c356
Show file tree
Hide file tree
Showing 5 changed files with 145 additions and 55 deletions.
3 changes: 2 additions & 1 deletion src/i18n/i18n.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,5 +91,6 @@ export const messages = {
covIdFormatErr: 'Cannot specify code coverage with a TestRunId result',
startHandshake: 'Attempting StreamingClient handshake',
finishHandshake: 'Finished StreamingClient handshake',
subscribeStarted: 'Subscribing to ApexLog events'
subscribeStarted: 'Subscribing to ApexLog events',
invalidCountQueryResult: 'Invalid query result for count query ("%s")'
};
20 changes: 13 additions & 7 deletions src/tests/asyncTests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/

import { ConfigAggregator, Connection } from '@salesforce/core';
import { Connection } from '@salesforce/core';
import { CancellationToken, Progress } from '../common';
import { nls } from '../i18n';
import { AsyncTestRun, StreamingClient } from '../streaming';
Expand All @@ -28,7 +28,11 @@ import {
TestResult,
TestRunIdResult
} from './types';
import { calculatePercentage, isValidTestRunID } from './utils';
import {
calculatePercentage,
isValidTestRunID,
verifyCountQueries
} from './utils';
import * as util from 'util';
import { QUERY_RECORD_LIMIT } from './constants';
import { CodeCoverage } from './codeCoverage';
Expand Down Expand Up @@ -293,7 +297,6 @@ export class AsyncTests {
public async getAsyncTestResults(
testQueueResult: ApexTestQueueItem
): Promise<ApexTestResult[]> {
const config = await ConfigAggregator.create();
let apexTestResultQuery = 'SELECT Id, QueueItemId, StackTrace, Message, ';
apexTestResultQuery +=
'RunTime, TestTimestamp, AsyncApexJobId, MethodName, Outcome, ApexLogId, ';
Expand Down Expand Up @@ -324,17 +327,20 @@ export class AsyncTests {
}

const countQueryPromises = countQueries.map(query => {
return this.connection.singleRecordQuery<{ expr0: number }>(query);
return this.connection.singleRecordQuery<{
expr0: number;
tooling: true;
}>(query);
});

const countQueryResult = await Promise.all(countQueryPromises);

verifyCountQueries(countQueryResult, countQueries);

const queryPromises = queries.map((query, index) => {
return this.connection.tooling.query<ApexTestResultRecord>(query, {
autoFetch: true,
maxFetch:
countQueryResult[index]?.expr0 ??
config.getPropertyValue(OrgConfigProperties.ORG_MAX_QUERY_LIMIT)
maxFetch: countQueryResult[index].expr0
});
});
const apexTestResults = await Promise.all(queryPromises);
Expand Down
5 changes: 4 additions & 1 deletion src/tests/codeCoverage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ import {
PerClassCoverage
} from './types';
import * as util from 'util';
import { calculatePercentage } from './utils';
import { calculatePercentage, verifyCountQueries } from './utils';
import { QUERY_RECORD_LIMIT } from './constants';
import { OrgConfigProperties } from '@salesforce/core/lib/org/orgConfigProperties';
import { nls } from '../i18n';

export class CodeCoverage {
public readonly connection: Connection;
Expand Down Expand Up @@ -198,6 +199,8 @@ export class CodeCoverage {

const countQueryResult = await Promise.all(countQueryPromises);

verifyCountQueries(countQueryResult, countQueries);

const queryPromises = queries.map((query, index) => {
// The query method returns a type QueryResult from jsforce
// that has takes a type that extends the jsforce Record.
Expand Down
21 changes: 21 additions & 0 deletions src/tests/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import { Connection } from '@salesforce/core';
import { CLASS_ID_PREFIX, TEST_RUN_ID_PREFIX } from './constants';
import { NamespaceInfo } from './types';
import { nls } from '../i18n';

export function isValidTestRunID(testRunId: string): boolean {
return (
Expand Down Expand Up @@ -54,3 +55,23 @@ export async function queryNamespaces(

return [...orgNamespaces, ...installedNamespaces];
}

export function verifyCountQueries(
countQueryResult: { expr0: number }[],
countQueries: string[]
) {
// check count query results to ensure that there are results that can be used to set maxFetch
countQueryResult.forEach((result, index) => {
if (!result?.expr0 || result?.expr0 <= 0) {
throw new Error(
nls.localize(
'invalidCountQueryResult',
countQueries[index].substring(
0,
countQueries[index].indexOf('IN (') + 30
)
)
);
}
});
}
Loading

0 comments on commit 0c8c356

Please sign in to comment.