mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			179 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			179 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /* globals describe, it, beforeEach */
 | |
| "use strict";
 | |
| 
 | |
| const should = require("should");
 | |
| const HarmonyModulesHelpers = require("../lib/dependencies/HarmonyModulesHelpers");
 | |
| 
 | |
| describe("HarmonyModulesHelpers", () => {
 | |
| 
 | |
| 	describe("getModuleVar", () => {
 | |
| 		it("returns a module var without special characters", () => {
 | |
| 			should(HarmonyModulesHelpers.getModuleVar({}, 'w*thspeci@lcharact#rs')).be.eql("__WEBPACK_IMPORTED_MODULE_0_w_thspeci_lcharact_rs__");
 | |
| 		});
 | |
| 
 | |
| 		it("returns a module var without double underscore", () => {
 | |
| 			should(HarmonyModulesHelpers.getModuleVar({}, 'without__double__underscore')).be.eql("__WEBPACK_IMPORTED_MODULE_0_without_double_underscore__");
 | |
| 		});
 | |
| 
 | |
| 		it("returns a module var without spaces", () => {
 | |
| 			should(HarmonyModulesHelpers.getModuleVar({}, '    without spaces')).be.eql("__WEBPACK_IMPORTED_MODULE_0__without_spaces__");
 | |
| 		});
 | |
| 
 | |
| 		describe("when has harmonyModules information", () => {
 | |
| 			let request, state, harmonyModuleVarInformation;
 | |
| 			before(() => {
 | |
| 				request = 'requested module';
 | |
| 				state = {
 | |
| 					harmonyModules: ['sample test', request]
 | |
| 				};
 | |
| 				harmonyModuleVarInformation = HarmonyModulesHelpers.getModuleVar(state, request);
 | |
| 			});
 | |
| 
 | |
| 			it("returns a module based on request position in state harmonyModules array", () => {
 | |
| 				should(harmonyModuleVarInformation).be.containEql(1);
 | |
| 			});
 | |
| 
 | |
| 			it("returns a module based on harmonyModules information", () => {
 | |
| 				should(harmonyModuleVarInformation).be.eql("__WEBPACK_IMPORTED_MODULE_1_requested_module__");
 | |
| 			});
 | |
| 		});
 | |
| 	});
 | |
| 
 | |
| 	describe("getNewModuleVar", () => {
 | |
| 		it("returns module var based on `getModuleVar` method", () => {
 | |
| 			const request = 'sample test';
 | |
| 			const state = {
 | |
| 				harmonyModules: []
 | |
| 			};
 | |
| 			should(HarmonyModulesHelpers.getNewModuleVar(state, request)).be.eql('__WEBPACK_IMPORTED_MODULE_0_sample_test__');
 | |
| 		});
 | |
| 
 | |
| 		it("returns null if has request information inside state harmonyModules", () => {
 | |
| 			const request = 'sample test';
 | |
| 			const state = {
 | |
| 				harmonyModules: [request]
 | |
| 			};
 | |
| 			should(HarmonyModulesHelpers.getNewModuleVar(state, request)).be.eql(null);
 | |
| 		});
 | |
| 	});
 | |
| 
 | |
| 	describe("checkModuleVar", () => {
 | |
| 		it("returns null if has current dependency and module dependency are different", () => {
 | |
| 			should(HarmonyModulesHelpers.checkModuleVar({
 | |
| 				harmonyModules: ['sample test']
 | |
| 			}, 'other sample test')).be.eql(null);
 | |
| 		});
 | |
| 
 | |
| 		it("returns null if has NOT request information inside state harmonyModules", () => {
 | |
| 			should(HarmonyModulesHelpers.checkModuleVar({
 | |
| 				harmonyModules: []
 | |
| 			}, 'sample test')).be.eql(null);
 | |
| 		});
 | |
| 
 | |
| 		it("returns module var based on `getModuleVar` method", () => {
 | |
| 			const request = 'sample test';
 | |
| 			const state = {
 | |
| 				harmonyModules: []
 | |
| 			};
 | |
| 			should(HarmonyModulesHelpers.getNewModuleVar(state, request)).be.eql('__WEBPACK_IMPORTED_MODULE_0_sample_test__');
 | |
| 		});
 | |
| 	});
 | |
| 
 | |
| 	describe("isActive", () => {
 | |
| 		it("returns `true` if module has NOT dependencies", () => {
 | |
| 			const currentDependency = {
 | |
| 				describeHarmonyExport: () => {
 | |
| 					return {
 | |
| 						exportedName: '',
 | |
| 						precedence: 1
 | |
| 					};
 | |
| 				}
 | |
| 			};
 | |
| 			const module = {
 | |
| 				dependencies: []
 | |
| 			};
 | |
| 			should(HarmonyModulesHelpers.isActive(module, currentDependency)).be.eql(true);
 | |
| 		});
 | |
| 
 | |
| 		it("returns `false` if module currentDependency has precedence greater than module dependency", () => {
 | |
| 			const currentDependency = {
 | |
| 				describeHarmonyExport: () => {
 | |
| 					return {
 | |
| 						exportedName: 'first dependency',
 | |
| 						precedence: 2
 | |
| 					};
 | |
| 				}
 | |
| 			};
 | |
| 			const module = {
 | |
| 				dependencies: [{
 | |
| 					describeHarmonyExport: () => {
 | |
| 						return {
 | |
| 							exportedName: 'first dependency',
 | |
| 							precedence: 1
 | |
| 						};
 | |
| 					}
 | |
| 				}]
 | |
| 			};
 | |
| 			should(HarmonyModulesHelpers.isActive(module, currentDependency)).be.eql(false);
 | |
| 		});
 | |
| 
 | |
| 		describe("getActiveExports", () => {
 | |
| 			it("returns an empty array with modules has no dependency", () => {
 | |
| 				const currentDependency = {
 | |
| 					describeHarmonyExport: () => {}
 | |
| 				};
 | |
| 				const module = {
 | |
| 					dependencies: []
 | |
| 				};
 | |
| 				should(HarmonyModulesHelpers.getActiveExports(module, currentDependency)).be.eql([]);
 | |
| 			});
 | |
| 
 | |
| 			it("returns an empty array if the precedence of current dependency is less than module dependency", () => {
 | |
| 				const currentDependency = {
 | |
| 					describeHarmonyExport: () => {
 | |
| 						return {
 | |
| 							exportedName: 'first dependency',
 | |
| 							precedence: 1
 | |
| 						};
 | |
| 					}
 | |
| 				};
 | |
| 				const module = {
 | |
| 					dependencies: [{
 | |
| 						describeHarmonyExport: () => {
 | |
| 							return {
 | |
| 								exportedName: 'first dependency',
 | |
| 								precedence: 2
 | |
| 							};
 | |
| 						}
 | |
| 					}]
 | |
| 				};
 | |
| 				should(HarmonyModulesHelpers.getActiveExports(module, currentDependency)).be.eql([]);
 | |
| 			});
 | |
| 
 | |
| 			it("returns an array with modules if currentDependency has precedence greater than module dependency", () => {
 | |
| 				const currentDependency = {
 | |
| 					describeHarmonyExport: () => {
 | |
| 						return {
 | |
| 							exportedName: 'first dependency',
 | |
| 							precedence: 2
 | |
| 						};
 | |
| 					}
 | |
| 				};
 | |
| 				const module = {
 | |
| 					dependencies: [{
 | |
| 						describeHarmonyExport: () => {
 | |
| 							return {
 | |
| 								exportedName: 'first dependency',
 | |
| 								precedence: 1
 | |
| 							};
 | |
| 						}
 | |
| 					}]
 | |
| 				};
 | |
| 				should(HarmonyModulesHelpers.getActiveExports(module, currentDependency)).be.eql(['first dependency']);
 | |
| 			});
 | |
| 		});
 | |
| 
 | |
| 	});
 | |
| 
 | |
| });
 |