From 07ea140487b4ffb4565262b7348c016974c758a0 Mon Sep 17 00:00:00 2001 From: Pat O'Callaghan Date: Sat, 6 Mar 2021 00:31:26 +0000 Subject: [PATCH] Add test for useEmberModule --- lib/babel-options-util.js | 8 +++- node-tests/addon-test.js | 92 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 1 deletion(-) diff --git a/lib/babel-options-util.js b/lib/babel-options-util.js index 6995773b..e6057c27 100644 --- a/lib/babel-options-util.js +++ b/lib/babel-options-util.js @@ -127,13 +127,19 @@ function _getEmberModulesAPIPolyfill(config, parent, project) { if (_emberVersionRequiresModulesAPIPolyfill()) { const ignore = _getEmberModulesAPIIgnore(parent, project); + const useEmberModule = _shouldDeprecateGlobalEmber(parent); return [ - [require.resolve("babel-plugin-ember-modules-api-polyfill"), { ignore }], + [require.resolve("babel-plugin-ember-modules-api-polyfill"), { ignore, useEmberModule }], ]; } } +function _shouldDeprecateGlobalEmber(parent) { + let checker = new VersionChecker(parent).for('ember-source', "npm"); + return checker.exists() && checker.gte("3.27.0-alpha.1") +} + function _getEmberModulesAPIIgnore(parent, project) { const ignore = { "@ember/debug": ["assert", "deprecate", "warn"], diff --git a/node-tests/addon-test.js b/node-tests/addon-test.js index 0661cf71..6d35e6d7 100644 --- a/node-tests/addon-test.js +++ b/node-tests/addon-test.js @@ -214,6 +214,98 @@ describe('ember-cli-babel', function() { expect(contents).to.include('inspect.call'); expect(contents).to.not.include('assert'); })); + + describe('useEmberModule', function() { + let dependencies; + + beforeEach(function() { + dependencies = {}; + let project = { + root: input.path(), + emberCLIVersion: () => '2.16.2', + dependencies() { return dependencies; }, + addons: [], + targets: { + browsers: ['ie 11'], + }, + }; + + this.addon = new Addon({ + project, + parent: project, + ui: this.ui, + }); + + project.addons.push(this.addon); + }); + + function buildEmberSourceFixture( version ) { + return { + node_modules: { + 'ember-source': { + 'package.json': JSON.stringify({ name: 'ember-source', version }), + 'index.js': 'module.exports = {};', + }, + } + }; + } + + it("should not replace imports using useEmberModule", co.wrap(function* () { + const PRE_GLOBAL_RESOLVER_DEPRECATION_VERSION = '3.26.0'; + dependencies['ember-source'] = PRE_GLOBAL_RESOLVER_DEPRECATION_VERSION; + input.write(buildEmberSourceFixture(PRE_GLOBAL_RESOLVER_DEPRECATION_VERSION)); + input.write({ + "foo.js": `import Component from '@ember/component'; Component.extend()`, + "app.js": `import Application from '@ember/application'; Application.extend()` + }); + + subject = this.addon.transpileTree(input.path()); + output = createBuilder(subject); + + yield output.build(); + + expect( + output.read() + ).to.deep.equal({ + "foo.js": `define("foo", [], function () {\n "use strict";\n\n Ember.Component.extend();\n});`, + "app.js": `define("app", [], function () {\n "use strict";\n\n Ember.Application.extend();\n});`, + "node_modules": { + "ember-source": { + "index.js": "define(\"node_modules/ember-source/index\", [], function () {\n \"use strict\";\n\n module.exports = {};\n});", + "package.json": "{\"name\":\"ember-source\",\"version\":\"3.26.0\"}" + } + } + }); + })); + + it("should replace imports using useEmberModule", co.wrap(function* () { + const POST_GLOBAL_RESOLVER_DEPRECATION_VERSION = '3.27.0'; + dependencies['ember-source'] = POST_GLOBAL_RESOLVER_DEPRECATION_VERSION; + input.write(buildEmberSourceFixture(POST_GLOBAL_RESOLVER_DEPRECATION_VERSION)); + input.write({ + "foo.js": `import Component from '@ember/component'; Component.extend()`, + "app.js": `import Application from '@ember/application'; Application.extend()` + }); + + subject = this.addon.transpileTree(input.path()); + output = createBuilder(subject); + + yield output.build(); + + expect( + output.read() + ).to.deep.equal({ + "foo.js": `define("foo", ["ember"], function (_ember2) {\n "use strict";\n\n _ember2.default.Component.extend();\n});`, + "app.js": `define("app", ["ember"], function (_ember2) {\n "use strict";\n\n _ember2.default.Application.extend();\n});`, + "node_modules": { + "ember-source": { + "index.js": "define(\"node_modules/ember-source/index\", [], function () {\n \"use strict\";\n\n module.exports = {};\n});", + "package.json": "{\"name\":\"ember-source\",\"version\":\"3.27.0\"}" + } + } + }); + })); + }); }); describe('debug macros', function() {