mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	js: Use jQuery as a module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		@@ -12,8 +12,7 @@ const stub_i18n = require("./i18n");
 | 
			
		||||
const namespace = require("./namespace");
 | 
			
		||||
const test = require("./test");
 | 
			
		||||
const {make_zblueslip} = require("./zblueslip");
 | 
			
		||||
 | 
			
		||||
global.$ = require("./zjquery");
 | 
			
		||||
const zjquery = require("./zjquery");
 | 
			
		||||
 | 
			
		||||
require("@babel/register")({
 | 
			
		||||
    extensions: [".es6", ".es", ".jsx", ".js", ".mjs", ".ts"],
 | 
			
		||||
@@ -71,7 +70,7 @@ function short_tb(tb) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function run_one_module(file) {
 | 
			
		||||
    global.$.clear_all_elements();
 | 
			
		||||
    zjquery.clear_all_elements();
 | 
			
		||||
    console.info("running test " + path.basename(file, ".js"));
 | 
			
		||||
    test.set_current_file_name(file);
 | 
			
		||||
    require(file);
 | 
			
		||||
 
 | 
			
		||||
@@ -12,12 +12,20 @@ let actual_load;
 | 
			
		||||
const module_mocks = new Map();
 | 
			
		||||
const used_module_mocks = new Set();
 | 
			
		||||
 | 
			
		||||
const jquery_path = require.resolve("jquery");
 | 
			
		||||
const real_jquery_path = require.resolve("../zjsunit/real_jquery.js");
 | 
			
		||||
 | 
			
		||||
function load(request, parent, isMain) {
 | 
			
		||||
    const filename = Module._resolveFilename(request, parent, isMain);
 | 
			
		||||
    if (module_mocks.has(filename)) {
 | 
			
		||||
        used_module_mocks.add(filename);
 | 
			
		||||
        return module_mocks.get(filename);
 | 
			
		||||
    }
 | 
			
		||||
    if (filename === jquery_path && parent.filename !== real_jquery_path) {
 | 
			
		||||
        // jQuery exposes an incompatible API to Node vs. browser, so
 | 
			
		||||
        // this wouldn't work.
 | 
			
		||||
        throw new Error("This test will need jquery mocked using zjquery or real_jquery");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return actual_load(request, parent, isMain);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								frontend_tests/zjsunit/real_jquery.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								frontend_tests/zjsunit/real_jquery.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
const jquery = require("jquery");
 | 
			
		||||
 | 
			
		||||
// so the tests can mock jQuery
 | 
			
		||||
delete require.cache[require.resolve("jquery")];
 | 
			
		||||
 | 
			
		||||
module.exports = jquery;
 | 
			
		||||
		Reference in New Issue
	
	Block a user