Skip to content

Commit 740f177

Browse files
committed
Add assertNotLogged test helper
1 parent 0393130 commit 740f177

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
@@ -272,6 +272,32 @@ export function getRecordingLogger(
272272
};
273273
}
274274

275+
/**
276+
* Checks whether `messages` contains `messageOrRegExp`.
277+
*
278+
* If `messageOrRegExp` is a string, this function returns true as long as
279+
* `messageOrRegExp` appears as part of one of the `messages`.
280+
*
281+
* If `messageOrRegExp` is a regular expression, this function returns true as long as
282+
* one of the `messages` matches `messageOrRegExp`.
283+
*/
284+
function hasLoggedMessage(
285+
messages: LoggedMessage[],
286+
messageOrRegExp: string | RegExp,
287+
): boolean {
288+
const check = (val: string) =>
289+
typeof messageOrRegExp === "string"
290+
? val.includes(messageOrRegExp)
291+
: messageOrRegExp.test(val);
292+
293+
return messages.some(
294+
(msg) => typeof msg.message === "string" && check(msg.message),
295+
);
296+
}
297+
298+
/**
299+
* Checks that `messages` contains all of `expectedMessages`.
300+
*/
275301
export function checkExpectedLogMessages(
276302
t: ExecutionContext<any>,
277303
messages: LoggedMessage[],
@@ -280,13 +306,7 @@ export function checkExpectedLogMessages(
280306
const missingMessages: string[] = [];
281307

282308
for (const expectedMessage of expectedMessages) {
283-
if (
284-
!messages.some(
285-
(msg) =>
286-
typeof msg.message === "string" &&
287-
msg.message.includes(expectedMessage),
288-
)
289-
) {
309+
if (!hasLoggedMessage(messages, expectedMessage)) {
290310
missingMessages.push(expectedMessage);
291311
}
292312
}
@@ -303,6 +323,20 @@ export function checkExpectedLogMessages(
303323
}
304324
}
305325

326+
/**
327+
* Asserts that `message` should not have been logged to `logger`.
328+
*/
329+
export function assertNotLogged(
330+
t: ExecutionContext<any>,
331+
logger: RecordingLogger,
332+
message: string | RegExp,
333+
) {
334+
t.false(
335+
hasLoggedMessage(logger.messages, message),
336+
`'${message}' should not have been logged, but was.`,
337+
);
338+
}
339+
306340
/**
307341
* Initialises a recording logger and calls `body` with it.
308342
*

0 commit comments

Comments
 (0)