| 
									
										
										
										
											2017-10-12 14:47:17 +08:00
										 |  |  | "use strict"; | 
					
						
							| 
									
										
										
										
											2018-01-24 20:17:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-13 00:13:53 +08:00
										 |  |  | const { createFsFromVolume, Volume } = require("memfs"); | 
					
						
							| 
									
										
										
										
											2017-10-12 14:47:17 +08:00
										 |  |  | const ContextModuleFactory = require("../lib/ContextModuleFactory"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-24 20:17:21 +08:00
										 |  |  | describe("ContextModuleFactory", () => { | 
					
						
							|  |  |  | 	describe("resolveDependencies", () => { | 
					
						
							| 
									
										
										
										
											2017-10-12 14:47:17 +08:00
										 |  |  | 		let factory, memfs; | 
					
						
							| 
									
										
										
										
											2018-01-24 20:17:21 +08:00
										 |  |  | 		beforeEach(() => { | 
					
						
							| 
									
										
										
										
											2017-10-12 14:47:17 +08:00
										 |  |  | 			factory = new ContextModuleFactory([]); | 
					
						
							| 
									
										
										
										
											2020-02-15 13:54:52 +08:00
										 |  |  | 			memfs = createFsFromVolume(new Volume()); | 
					
						
							| 
									
										
										
										
											2017-10-12 14:47:17 +08:00
										 |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2018-02-25 18:46:17 +08:00
										 |  |  | 		it("should not report an error when ENOENT errors happen", done => { | 
					
						
							| 
									
										
										
										
											2017-10-12 14:47:17 +08:00
										 |  |  | 			memfs.readdir = (dir, callback) => { | 
					
						
							|  |  |  | 				setTimeout(() => callback(null, ["/file"])); | 
					
						
							|  |  |  | 			}; | 
					
						
							|  |  |  | 			memfs.stat = (file, callback) => { | 
					
						
							|  |  |  | 				let err = new Error("fake ENOENT error"); | 
					
						
							|  |  |  | 				err.code = "ENOENT"; | 
					
						
							|  |  |  | 				setTimeout(() => callback(err, null)); | 
					
						
							|  |  |  | 			}; | 
					
						
							| 
									
										
										
										
											2018-02-25 18:46:17 +08:00
										 |  |  | 			factory.resolveDependencies( | 
					
						
							|  |  |  | 				memfs, | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					resource: "/", | 
					
						
							|  |  |  | 					recursive: true, | 
					
						
							|  |  |  | 					regExp: /.*/ | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 				(err, res) => { | 
					
						
							|  |  |  | 					expect(err).toBeFalsy(); | 
					
						
							|  |  |  | 					expect(Array.isArray(res)).toBe(true); | 
					
						
							|  |  |  | 					expect(res.length).toBe(0); | 
					
						
							|  |  |  | 					done(); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			); | 
					
						
							| 
									
										
										
										
											2017-10-12 14:47:17 +08:00
										 |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2018-02-25 18:46:17 +08:00
										 |  |  | 		it("should report an error when non-ENOENT errors happen", done => { | 
					
						
							| 
									
										
										
										
											2017-10-12 14:47:17 +08:00
										 |  |  | 			memfs.readdir = (dir, callback) => { | 
					
						
							|  |  |  | 				setTimeout(() => callback(null, ["/file"])); | 
					
						
							|  |  |  | 			}; | 
					
						
							|  |  |  | 			memfs.stat = (file, callback) => { | 
					
						
							|  |  |  | 				let err = new Error("fake EACCES error"); | 
					
						
							|  |  |  | 				err.code = "EACCES"; | 
					
						
							|  |  |  | 				setTimeout(() => callback(err, null)); | 
					
						
							|  |  |  | 			}; | 
					
						
							| 
									
										
										
										
											2018-02-25 18:46:17 +08:00
										 |  |  | 			factory.resolveDependencies( | 
					
						
							|  |  |  | 				memfs, | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					resource: "/", | 
					
						
							|  |  |  | 					recursive: true, | 
					
						
							|  |  |  | 					regExp: /.*/ | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 				(err, res) => { | 
					
						
							|  |  |  | 					expect(err).toBeInstanceOf(Error); | 
					
						
							|  |  |  | 					expect(res).toBeFalsy(); | 
					
						
							|  |  |  | 					done(); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			); | 
					
						
							| 
									
										
										
										
											2017-10-12 14:47:17 +08:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | }); |