mirror of
				https://github.com/NativeScript/NativeScript.git
				synced 2025-11-04 12:58:38 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { printExpected, printReceived } from 'jest-matcher-utils';
 | 
						|
import dedent from 'ts-dedent';
 | 
						|
 | 
						|
expect.extend({
 | 
						|
	toHaveBeenWarned(received: string) {
 | 
						|
		asserted.add(received);
 | 
						|
		const passed = warnSpy.mock.calls
 | 
						|
			.map((args) => args[1])
 | 
						|
			.some((arg) => arg.indexOf(received) > -1);
 | 
						|
		if (passed) {
 | 
						|
			return {
 | 
						|
				pass: true,
 | 
						|
				message() {
 | 
						|
					return `expected ${printReceived(received)} not to have been warned`;
 | 
						|
				},
 | 
						|
			};
 | 
						|
		}
 | 
						|
 | 
						|
		const warnings = warnSpy.mock.calls.map((args) => args[1]).join('\n\n');
 | 
						|
		return {
 | 
						|
			pass: false,
 | 
						|
			message() {
 | 
						|
				return dedent`
 | 
						|
					expected ${printExpected(received)} to have been warned.
 | 
						|
 | 
						|
					Actual warnings:
 | 
						|
 | 
						|
					${warnings}
 | 
						|
				`;
 | 
						|
			},
 | 
						|
		};
 | 
						|
	},
 | 
						|
});
 | 
						|
 | 
						|
let warnSpy: any;
 | 
						|
let asserted = new Set([]);
 | 
						|
beforeEach(() => {
 | 
						|
	asserted.clear();
 | 
						|
 | 
						|
	warnSpy = jest.spyOn(console, 'warn');
 | 
						|
 | 
						|
	warnSpy.mockImplementation(() => {});
 | 
						|
});
 | 
						|
 | 
						|
afterEach(() => {
 | 
						|
	const assertedArray = Array.from(asserted);
 | 
						|
	const nonAssertedWarns = warnSpy.mock.calls
 | 
						|
		.map((args) => args[1])
 | 
						|
		.filter((received) => {
 | 
						|
			return !assertedArray.some((assertedMessage) => {
 | 
						|
				return received.indexOf(assertedMessage) > -1;
 | 
						|
			});
 | 
						|
		});
 | 
						|
 | 
						|
	warnSpy.mockRestore();
 | 
						|
 | 
						|
	if (nonAssertedWarns.length) {
 | 
						|
		throw new Error(dedent`
 | 
						|
			Test case printed unexpected warnings:
 | 
						|
 | 
						|
			${printReceived(nonAssertedWarns.join('\n\n'))}
 | 
						|
		`);
 | 
						|
	}
 | 
						|
});
 |