Skip to content

Commit 33276bf

Browse files
committed
Add assertNotLogged test helper
1 parent 16adc4e commit 33276bf

File tree

1 file changed

+41
-7
lines changed

1 file changed

+41
-7
lines changed

src/testing-utils.ts

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,32 @@ export function getRecordingLogger(
245245
};
246246
}
247247

248+
/**
249+
* Checks whether `messages` contains `messageOrRegExp`.
250+
*
251+
* If `messageOrRegExp` is a string, this function returns true as long as
252+
* `messageOrRegExp` appears as part of one of the `messages`.
253+
*
254+
* If `messageOrRegExp` is a regular expression, this function returns true as long as
255+
* one of the `messages` matches `messageOrRegExp`.
256+
*/
257+
function hasLoggedMessage(
258+
messages: LoggedMessage[],
259+
messageOrRegExp: string | RegExp,
260+
): boolean {
261+
const check = (val: string) =>
262+
typeof messageOrRegExp === "string"
263+
? val.includes(messageOrRegExp)
264+
: messageOrRegExp.test(val);
265+
266+
return messages.some(
267+
(msg) => typeof msg.message === "string" && check(msg.message),
268+
);
269+
}
270+
271+
/**
272+
* Checks that `messages` contains all of `expectedMessages`.
273+
*/
248274
export function checkExpectedLogMessages(
249275
t: ExecutionContext<any>,
250276
messages: LoggedMessage[],
@@ -253,13 +279,7 @@ export function checkExpectedLogMessages(
253279
const missingMessages: string[] = [];
254280

255281
for (const expectedMessage of expectedMessages) {
256-
if (
257-
!messages.some(
258-
(msg) =>
259-
typeof msg.message === "string" &&
260-
msg.message.includes(expectedMessage),
261-
)
262-
) {
282+
if (!hasLoggedMessage(messages, expectedMessage)) {
263283
missingMessages.push(expectedMessage);
264284
}
265285
}
@@ -276,6 +296,20 @@ export function checkExpectedLogMessages(
276296
}
277297
}
278298

299+
/**
300+
* Asserts that `message` should not have been logged to `logger`.
301+
*/
302+
export function assertNotLogged(
303+
t: ExecutionContext<any>,
304+
logger: RecordingLogger,
305+
message: string | RegExp,
306+
) {
307+
t.false(
308+
hasLoggedMessage(logger.messages, message),
309+
`'${message}' should not have been logged, but was.`,
310+
);
311+
}
312+
279313
/**
280314
* Initialises a recording logger and calls `body` with it.
281315
*

0 commit comments

Comments
 (0)