From 875af1af7cd6b5784ca258019c9ecc4620777246 Mon Sep 17 00:00:00 2001 From: Chris Thoburn Date: Tue, 4 Feb 2020 14:52:35 -0800 Subject: [PATCH] tests --- node-tests/addon-test.js | 84 +++++++++++++++++++++++++++++++++++++++- package.json | 2 +- yarn.lock | 8 ++-- 3 files changed, 88 insertions(+), 6 deletions(-) diff --git a/node-tests/addon-test.js b/node-tests/addon-test.js index 2aa579f2..743ed8c3 100644 --- a/node-tests/addon-test.js +++ b/node-tests/addon-test.js @@ -1358,7 +1358,89 @@ describe('EmberData Packages Polyfill', function() { output.read() ).to.deep.equal({ "foo.js": `import DS from "ember-data";\nexport default DS.Store;`, - "bar.js": `import DS from "ember-data";\nexport var User = DS.Model;\nexport var name = DS.attr;`, + "bar.js": `import DS from "ember-data";\nvar Model = DS.Model;\nvar attr = DS.attr;\nexport var User = Model;\nexport var name = attr;`, }); })); + + it("conversion works with compilation to AMD modules", co.wrap(function*() { + yield setupForVersion('3.11.99'); + input.write({ + "foo.js": `export { default } from '@ember-data/store';`, + "bem.js": `export { default } from 'ember-data';`, + "bar.js": `import Model, { attr } from '@ember-data/model';\nexport var User = Model;export var name = attr;`, + "baz.js": `import EmberData from 'ember-data';\nexport var User = EmberData.Model;`, + }); + + subject = this.addon.transpileTree(input.path(), { + 'ember-cli-babel': { + compileModules: true, + disableDebugTooling: true, + } + }); + + output = createBuilder(subject); + + yield output.build(); + + function moduleOutput(moduleName, transpiledModuleBodyCode) { + return `define("${moduleName}", ["exports", "ember-data"], function (_exports, _emberData) {\n "use strict";\n\n Object.defineProperty(_exports, "__esModule", {\n value: true\n });\n${transpiledModuleBodyCode}\n});` + } + + let fooOutput = moduleOutput( + 'foo', + assembleLines([ + `_exports.default = void 0;`, + `var _default = _emberData.default.Store;`, + `_exports.default = _default;` + ]) + ); + let bemOutput = moduleOutput( + 'bem', + assembleLines([ + `Object.defineProperty(_exports, "default", {`, + ` enumerable: true,`, + ` get: function get() {`, + ` return _emberData.default;`, + ` }`, + `});` + ]) + ); + let barOutput = moduleOutput( + 'bar', + assembleLines([ + `_exports.name = _exports.User = void 0;`, + `var Model = _emberData.default.Model;`, + `var attr = _emberData.default.attr;`, + `var User = Model;`, + `_exports.User = User;`, + `var name = attr;`, + `_exports.name = name;` + ]) + ); + let bazOutput = moduleOutput( + 'baz', + assembleLines([ + `_exports.User = void 0;`, + `var EmberData = _emberData.default;`, + `var User = EmberData.Model;`, + `_exports.User = User;` + ]) + ); + + let transpiled = output.read(); + expect(transpiled['foo.js']).to.equal(fooOutput); + expect(transpiled['bem.js']).to.equal(bemOutput); + expect(transpiled['bar.js']).to.equal(barOutput); + expect(transpiled['baz.js']).to.equal(bazOutput); + })); }); + +function leftPad(str, num) { + while (num-- > 0) { + str = ` ${str}`; + } + return str; +} +function assembleLines(lines, indent = 2) { + return lines.map(l => leftPad(l, indent)).join('\n'); +} diff --git a/package.json b/package.json index 01a06d32..32381a2e 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@babel/runtime": "^7.8.3", "amd-name-resolver": "^1.2.1", "babel-plugin-debug-macros": "^0.3.0", - "babel-plugin-ember-data-packages-polyfill": "^0.1.0", + "babel-plugin-ember-data-packages-polyfill": "^0.1.1", "babel-plugin-ember-modules-api-polyfill": "^2.12.0", "babel-plugin-module-resolver": "^3.1.1", "broccoli-babel-transpiler": "^7.4.0", diff --git a/yarn.lock b/yarn.lock index d883274c..8db9fd54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1569,10 +1569,10 @@ babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" -babel-plugin-ember-data-packages-polyfill@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-ember-data-packages-polyfill/-/babel-plugin-ember-data-packages-polyfill-0.1.0.tgz#fa63867de4a717df572776ba528d270ff74db125" - integrity sha512-MZBdY+i1aZuShfTDq2RIcuE8usGFsqle0+ziV0kZjf6nTzZjEILYRkiaXG6om6I7qKYYoS1Lcs8zsQA9ZJ1Xkw== +babel-plugin-ember-data-packages-polyfill@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-ember-data-packages-polyfill/-/babel-plugin-ember-data-packages-polyfill-0.1.1.tgz#428217228bedb95215bcaac6da83f59488b40edd" + integrity sha512-WQlevWS8RNNVCm4SNI6PogUMhH4Eu2ectRd/SVcKVnLnzaOHJjN9W1eaoQ9dwBidDgHhtXUbvkBSdLExaW+MYA== dependencies: "@ember-data/rfc395-data" "^0.0.4"