MCPcopy Create free account
hub / github.com/ampproject/amphtml / wrapper

Function wrapper

test/unit/core/context/test-node-values.js:90–112  ·  view source on GitHub ↗

* @param {Object} obj * @param {string} name

(obj, name)

Source from the content-addressed store, hash-verified

88 * @param {string} name
89 */
90 function wrapper(obj, name) {
91 const original = obj[name];
92 const stub = env.sandbox.stub(ContextNode.prototype, name);
93 const wrapperName = `__wrapper_${name}`;
94 stub.callsFake(function (...args) {
95 const obj = this;
96 const resolvers = obj[wrapperName] ?? (obj[wrapperName] = []);
97 const result = original.apply(this, args);
98 const current = resolvers.slice(0);
99 resolvers.length = 0;
100 current.forEach((resolver) => resolver(result));
101 return result;
102 });
103 return {
104 spy: stub,
105 waitFor: (obj) => {
106 const resolvers = obj[wrapperName] ?? (obj[wrapperName] = []);
107 return new Promise((resolve) => {
108 resolvers.push(resolve);
109 });
110 },
111 };
112 }
113
114 function waitForDiscover(...nodesOrContextNodes) {
115 const contextNodes = nodesOrContextNodes.map((arg) =>

Callers 1

Calls 3

applyMethod · 0.80
forEachMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected