| 
									
										
										
										
											2017-01-19 02:28:57 +08:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-15 21:08:11 +08:00
										 |  |  | require("should"); | 
					
						
							| 
									
										
										
										
											2017-01-17 23:03:39 +08:00
										 |  |  | const CaseSensitiveModulesWarning = require("../lib/CaseSensitiveModulesWarning"); | 
					
						
							| 
									
										
										
										
											2017-01-04 14:22:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 23:03:39 +08:00
										 |  |  | const createModule = function(identifier, numberOfReasons) { | 
					
						
							|  |  |  | 	const reasons = new Array(numberOfReasons || 0).fill(null).map((value, index) => { | 
					
						
							| 
									
										
										
										
											2017-01-04 14:22:19 +08:00
										 |  |  | 		return { | 
					
						
							|  |  |  | 			module: createModule(`${identifier}-reason-${index}`) | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return { | 
					
						
							|  |  |  | 		identifier: () => identifier, | 
					
						
							|  |  |  | 		reasons | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 23:03:39 +08:00
										 |  |  | describe("CaseSensitiveModulesWarning", () => { | 
					
						
							|  |  |  | 	let myCaseSensitiveModulesWarning; | 
					
						
							|  |  |  | 	let modules; | 
					
						
							| 
									
										
										
										
											2017-01-04 14:22:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 23:03:39 +08:00
										 |  |  | 	beforeEach(() => { | 
					
						
							| 
									
										
										
										
											2017-01-04 14:22:19 +08:00
										 |  |  | 		modules = [ | 
					
						
							| 
									
										
										
										
											2017-01-17 23:03:39 +08:00
										 |  |  | 			createModule("FOOBAR"), | 
					
						
							|  |  |  | 			createModule("FooBar", 1), | 
					
						
							|  |  |  | 			createModule("foobar", 2) | 
					
						
							| 
									
										
										
										
											2017-01-04 14:22:19 +08:00
										 |  |  | 		]; | 
					
						
							|  |  |  | 		myCaseSensitiveModulesWarning = new CaseSensitiveModulesWarning(modules); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-19 02:28:57 +08:00
										 |  |  | 	it("has the a name", () => myCaseSensitiveModulesWarning.name.should.be.exactly("CaseSensitiveModulesWarning")); | 
					
						
							| 
									
										
										
										
											2017-01-04 14:22:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 23:03:39 +08:00
										 |  |  | 	it("has the a message", () => { | 
					
						
							| 
									
										
										
										
											2017-01-04 14:22:19 +08:00
										 |  |  | 		myCaseSensitiveModulesWarning.message.should.be.exactly(`
 | 
					
						
							|  |  |  | There are multiple modules with names that only differ in casing. | 
					
						
							|  |  |  | This can lead to unexpected behavior when compiling on a filesystem with other case-semantic. | 
					
						
							|  |  |  | Use equal casing. Compare these module identifiers: | 
					
						
							|  |  |  | * FOOBAR | 
					
						
							|  |  |  | * FooBar | 
					
						
							|  |  |  |     Used by 1 module(s), i. e. | 
					
						
							|  |  |  |     FooBar-reason-0 | 
					
						
							|  |  |  | * foobar | 
					
						
							|  |  |  |     Used by 2 module(s), i. e. | 
					
						
							|  |  |  |     foobar-reason-0 | 
					
						
							|  |  |  | `.trim());
 | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 23:03:39 +08:00
										 |  |  | 	it("has the an origin", () => | 
					
						
							|  |  |  | 		myCaseSensitiveModulesWarning.origin.should.be.exactly(modules[0])); | 
					
						
							| 
									
										
										
										
											2017-01-04 14:22:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-15 21:08:11 +08:00
										 |  |  | 	it("has the a module", () => | 
					
						
							| 
									
										
										
										
											2017-01-17 23:03:39 +08:00
										 |  |  | 		myCaseSensitiveModulesWarning.module.should.be.exactly(modules[0])); | 
					
						
							| 
									
										
										
										
											2017-01-04 14:22:19 +08:00
										 |  |  | }); |