mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			266 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			266 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
"use strict";
 | 
						|
 | 
						|
const packageJSON = require("../package.json");
 | 
						|
const MultiStats = require("../lib/MultiStats");
 | 
						|
 | 
						|
const createStat = overrides => {
 | 
						|
	return Object.assign(
 | 
						|
		{
 | 
						|
			hash: "foo",
 | 
						|
			compilation: {
 | 
						|
				name: "bar"
 | 
						|
			},
 | 
						|
			hasErrors: () => false,
 | 
						|
			hasWarnings: () => false,
 | 
						|
			toJson: () =>
 | 
						|
				Object.assign(
 | 
						|
					{
 | 
						|
						hash: "foo",
 | 
						|
						version: "version",
 | 
						|
						warnings: [],
 | 
						|
						errors: []
 | 
						|
					},
 | 
						|
					overrides
 | 
						|
				)
 | 
						|
		},
 | 
						|
		overrides
 | 
						|
	);
 | 
						|
};
 | 
						|
 | 
						|
describe("MultiStats", () => {
 | 
						|
	let packageVersion, stats, myMultiStats, result;
 | 
						|
 | 
						|
	beforeEach(() => {
 | 
						|
		packageVersion = packageJSON.version;
 | 
						|
		packageJSON.version = "1.2.3";
 | 
						|
	});
 | 
						|
 | 
						|
	afterEach(() => {
 | 
						|
		packageJSON.version = packageVersion;
 | 
						|
	});
 | 
						|
 | 
						|
	describe("created", () => {
 | 
						|
		beforeEach(() => {
 | 
						|
			stats = [
 | 
						|
				createStat({
 | 
						|
					hash: "abc123"
 | 
						|
				}),
 | 
						|
				createStat({
 | 
						|
					hash: "xyz890"
 | 
						|
				})
 | 
						|
			];
 | 
						|
			myMultiStats = new MultiStats(stats);
 | 
						|
		});
 | 
						|
 | 
						|
		it("creates a hash string", () => {
 | 
						|
			expect(myMultiStats.hash).toBe("abc123xyz890");
 | 
						|
		});
 | 
						|
	});
 | 
						|
 | 
						|
	describe("hasErrors", () => {
 | 
						|
		describe("when both have errors", () => {
 | 
						|
			beforeEach(() => {
 | 
						|
				stats = [
 | 
						|
					createStat({
 | 
						|
						hasErrors: () => true
 | 
						|
					}),
 | 
						|
					createStat({
 | 
						|
						hasErrors: () => true
 | 
						|
					})
 | 
						|
				];
 | 
						|
				myMultiStats = new MultiStats(stats);
 | 
						|
			});
 | 
						|
 | 
						|
			it("returns true", () => {
 | 
						|
				expect(myMultiStats.hasErrors()).toBe(true);
 | 
						|
			});
 | 
						|
		});
 | 
						|
 | 
						|
		describe("when one has an error", () => {
 | 
						|
			beforeEach(() => {
 | 
						|
				stats = [
 | 
						|
					createStat({
 | 
						|
						hasErrors: () => true
 | 
						|
					}),
 | 
						|
					createStat()
 | 
						|
				];
 | 
						|
				myMultiStats = new MultiStats(stats);
 | 
						|
			});
 | 
						|
 | 
						|
			it("returns true", () => {
 | 
						|
				expect(myMultiStats.hasErrors()).toBe(true);
 | 
						|
			});
 | 
						|
		});
 | 
						|
 | 
						|
		describe("when none have errors", () => {
 | 
						|
			beforeEach(() => {
 | 
						|
				stats = [createStat(), createStat()];
 | 
						|
				myMultiStats = new MultiStats(stats);
 | 
						|
			});
 | 
						|
 | 
						|
			it("returns false", () => {
 | 
						|
				expect(myMultiStats.hasErrors()).toBe(false);
 | 
						|
			});
 | 
						|
		});
 | 
						|
	});
 | 
						|
 | 
						|
	describe("hasWarnings", () => {
 | 
						|
		describe("when both have warnings", () => {
 | 
						|
			beforeEach(() => {
 | 
						|
				stats = [
 | 
						|
					createStat({
 | 
						|
						hasWarnings: () => true
 | 
						|
					}),
 | 
						|
					createStat({
 | 
						|
						hasWarnings: () => true
 | 
						|
					})
 | 
						|
				];
 | 
						|
				myMultiStats = new MultiStats(stats);
 | 
						|
			});
 | 
						|
 | 
						|
			it("returns true", () => {
 | 
						|
				expect(myMultiStats.hasWarnings()).toBe(true);
 | 
						|
			});
 | 
						|
		});
 | 
						|
 | 
						|
		describe("when one has a warning", () => {
 | 
						|
			beforeEach(() => {
 | 
						|
				stats = [
 | 
						|
					createStat({
 | 
						|
						hasWarnings: () => true
 | 
						|
					}),
 | 
						|
					createStat()
 | 
						|
				];
 | 
						|
				myMultiStats = new MultiStats(stats);
 | 
						|
			});
 | 
						|
 | 
						|
			it("returns true", () => {
 | 
						|
				expect(myMultiStats.hasWarnings()).toBe(true);
 | 
						|
			});
 | 
						|
		});
 | 
						|
 | 
						|
		describe("when none have warnings", () => {
 | 
						|
			beforeEach(() => {
 | 
						|
				stats = [createStat(), createStat()];
 | 
						|
				myMultiStats = new MultiStats(stats);
 | 
						|
			});
 | 
						|
 | 
						|
			it("returns false", () => {
 | 
						|
				expect(myMultiStats.hasWarnings()).toBe(false);
 | 
						|
			});
 | 
						|
		});
 | 
						|
	});
 | 
						|
 | 
						|
	describe("toJson", () => {
 | 
						|
		beforeEach(() => {
 | 
						|
			stats = [
 | 
						|
				createStat({
 | 
						|
					hash: "abc123",
 | 
						|
					compilation: {
 | 
						|
						name: "abc123-compilation"
 | 
						|
					},
 | 
						|
					toJson: () => ({
 | 
						|
						warnings: ["abc123-warning"],
 | 
						|
						errors: ["abc123-error"]
 | 
						|
					})
 | 
						|
				}),
 | 
						|
				createStat({
 | 
						|
					hash: "xyz890",
 | 
						|
					compilation: {
 | 
						|
						name: "xyz890-compilation"
 | 
						|
					},
 | 
						|
					toJson: () => ({
 | 
						|
						warnings: ["xyz890-warning-1", "xyz890-warning-2"],
 | 
						|
						errors: []
 | 
						|
					})
 | 
						|
				})
 | 
						|
			];
 | 
						|
		});
 | 
						|
 | 
						|
		it("returns plain object representation", () => {
 | 
						|
			myMultiStats = new MultiStats(stats);
 | 
						|
			result = myMultiStats.toJson({
 | 
						|
				version: false,
 | 
						|
				hash: false
 | 
						|
			});
 | 
						|
			expect(result).toEqual({
 | 
						|
				errors: ["(abc123-compilation) abc123-error"],
 | 
						|
				warnings: [
 | 
						|
					"(abc123-compilation) abc123-warning",
 | 
						|
					"(xyz890-compilation) xyz890-warning-1",
 | 
						|
					"(xyz890-compilation) xyz890-warning-2"
 | 
						|
				],
 | 
						|
				children: [
 | 
						|
					{
 | 
						|
						errors: ["abc123-error"],
 | 
						|
						name: "abc123-compilation",
 | 
						|
						warnings: ["abc123-warning"]
 | 
						|
					},
 | 
						|
					{
 | 
						|
						errors: [],
 | 
						|
						name: "xyz890-compilation",
 | 
						|
						warnings: ["xyz890-warning-1", "xyz890-warning-2"]
 | 
						|
					}
 | 
						|
				]
 | 
						|
			});
 | 
						|
		});
 | 
						|
 | 
						|
		it("returns plain object representation with json set to true", () => {
 | 
						|
			myMultiStats = new MultiStats(stats);
 | 
						|
			result = myMultiStats.toJson(true);
 | 
						|
			expect(result).toEqual({
 | 
						|
				errors: ["(abc123-compilation) abc123-error"],
 | 
						|
				warnings: [
 | 
						|
					"(abc123-compilation) abc123-warning",
 | 
						|
					"(xyz890-compilation) xyz890-warning-1",
 | 
						|
					"(xyz890-compilation) xyz890-warning-2"
 | 
						|
				],
 | 
						|
				children: [
 | 
						|
					{
 | 
						|
						warnings: ["abc123-warning"],
 | 
						|
						errors: ["abc123-error"],
 | 
						|
						name: "abc123-compilation"
 | 
						|
					},
 | 
						|
					{
 | 
						|
						warnings: ["xyz890-warning-1", "xyz890-warning-2"],
 | 
						|
						errors: [],
 | 
						|
						name: "xyz890-compilation"
 | 
						|
					}
 | 
						|
				]
 | 
						|
			});
 | 
						|
		});
 | 
						|
	});
 | 
						|
 | 
						|
	describe("toString", () => {
 | 
						|
		beforeEach(() => {
 | 
						|
			stats = [
 | 
						|
				createStat({
 | 
						|
					hash: "abc123",
 | 
						|
					compilation: {
 | 
						|
						name: "abc123-compilation"
 | 
						|
					}
 | 
						|
				}),
 | 
						|
				createStat({
 | 
						|
					hash: "xyz890",
 | 
						|
					compilation: {
 | 
						|
						name: "xyz890-compilation"
 | 
						|
					}
 | 
						|
				})
 | 
						|
			];
 | 
						|
			myMultiStats = new MultiStats(stats);
 | 
						|
			result = myMultiStats.toString();
 | 
						|
		});
 | 
						|
 | 
						|
		it("returns string representation", () => {
 | 
						|
			expect(result).toEqual(
 | 
						|
				"Hash: abc123xyz890\n" +
 | 
						|
					"Version: webpack 1.2.3\n" +
 | 
						|
					"Child abc123-compilation:\n" +
 | 
						|
					"    Hash: abc123\n" +
 | 
						|
					"Child xyz890-compilation:\n" +
 | 
						|
					"    Hash: xyz890"
 | 
						|
			);
 | 
						|
		});
 | 
						|
	});
 | 
						|
});
 |