/ / prístup k koreňovej ceste fiktívneho projektu z doplnku ember cli v testoch - ember.js, ember-cli, ember-cli-addons

prístup k koreňovej ceste fiktívneho projektu od ember cli addon v testoch - ember.js, ember-cli, ember-cli-addons

Scenár: Chcel by som poznať správny spôsob prístupu na koreňovú cestu projektu, ktorý konzumuje doplnok - ktorý funguje aj pri testovaní ...

napr. doplnok:

// ember-cli-myaddon/index.js
{

...

contentFor(name) {
if (name ==="body") {
var filePath = path.join(this.app.project.root, "app/some-file.html")
var file = fs.readFileSync(filePath);

return [file];
}
},

...

}

^ ktorý funguje pri použití doplnku vo vnútri skutočného projektu.

Keď však spustím testy doplnku, this.app.project.root je ~/ember-cli-myaddon/app/some-file.html

Kedy očakávam (potrebujem), že bude ~/ember-cli-myaddon/tests/dummy/app/some-file.html

odpovede:

3 pre odpoveď č. 1

Po nejakom kopaní žeravého addonu som narazil na skvelý sol používaný v ember-cli-mirage, https://github.com/samselikoff/ember-cli-mirage/blob/master/ember-cli-build.js

Podstatou je, že cesta k súboru je uvedená v zozname doplnkov ember-cli-build.js a doplnok číta z tejto vlastnosti, predvolene je this.app.project.root keď je prázdne.

napr.

// ember-cli-myaddon/index.js

// added this
included: function() {
this.addonPath = this.app.options["myaddon"]["directory"] || "app";
},

// modified filePath
contentFor(name) {
if (name ==="body") {
var filePath = path.join(this.app.project.root, this.addonPath, "some-file.html");
var file = fs.readFileSync(filePath);

return [file];
}
}

a potom vo vnútri doplnku ember-cli-build.js súboru určíme adresár fiktívnej aplikácie:

// ember-cli-build.js

/* global require, module */

var path = require("path");
var EmberApp = require("ember-cli/lib/broccoli/ember-addon");

module.exports = function(defaults) {
var app = new EmberApp(defaults, {
"myaddon": {
directory: path.join("tests", "dummy")
}
});

return app.toTree();
};

A teraz sa hľadajú testy doplnkov some-file.html na adrese:
ember-cli-myaddon / tests / dummy / app / some-file.html

a vo vnútri skutočného projektu, some-file.html sa hľadá na:
váš projekt / aplikácia / nejaký-súbor.html

Plus získate bonus umožňujúci používateľovi konfigurovať cestu k súboru vo svojom ember-cli-build.js pilník! vyhrať / vyhrať / vyhrať