2017-05-29 21:50:03 +03:00
|
|
|
import $ from 'jquery';
|
|
|
|
import Pretender from 'pretender';
|
2016-11-24 01:50:57 +03:00
|
|
|
import {describe, it} from 'mocha';
|
2017-05-29 21:50:03 +03:00
|
|
|
import {expect} from 'chai';
|
2016-11-24 01:50:57 +03:00
|
|
|
import {setupTest} from 'ember-mocha';
|
2016-07-05 19:30:14 +03:00
|
|
|
|
2018-01-05 18:38:23 +03:00
|
|
|
describe('Integration: Service: lazy-loader', function () {
|
2016-11-24 01:50:57 +03:00
|
|
|
setupTest('service:lazy-loader', {integration: true});
|
|
|
|
let server;
|
|
|
|
let ghostPaths = {
|
|
|
|
adminRoot: '/assets/'
|
|
|
|
};
|
|
|
|
|
|
|
|
beforeEach(function () {
|
|
|
|
server = new Pretender();
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(function () {
|
|
|
|
server.shutdown();
|
|
|
|
});
|
|
|
|
|
2017-03-03 19:13:22 +03:00
|
|
|
it('loads a script correctly and only once', function () {
|
2016-11-24 01:50:57 +03:00
|
|
|
let subject = this.subject({
|
|
|
|
ghostPaths,
|
|
|
|
scriptPromises: {},
|
|
|
|
testing: false
|
2016-07-05 19:30:14 +03:00
|
|
|
});
|
|
|
|
|
2016-11-24 01:50:57 +03:00
|
|
|
server.get('/assets/test.js', function ({requestHeaders}) {
|
|
|
|
expect(requestHeaders.Accept).to.match(/text\/javascript/);
|
2016-07-05 19:30:14 +03:00
|
|
|
|
2016-11-24 01:50:57 +03:00
|
|
|
return [200, {'Content-Type': 'text/javascript'}, 'window.testLoadScript = \'testvalue\''];
|
|
|
|
});
|
2016-07-05 19:30:14 +03:00
|
|
|
|
2017-03-03 19:13:22 +03:00
|
|
|
return subject.loadScript('test-script', 'test.js').then(() => {
|
2016-11-24 01:50:57 +03:00
|
|
|
expect(subject.get('scriptPromises.test-script')).to.exist;
|
|
|
|
expect(window.testLoadScript).to.equal('testvalue');
|
|
|
|
expect(server.handlers[0].numberOfCalls).to.equal(1);
|
2016-07-05 19:30:14 +03:00
|
|
|
|
2016-11-24 01:50:57 +03:00
|
|
|
return subject.loadScript('test-script', 'test.js');
|
|
|
|
}).then(() => {
|
|
|
|
expect(server.handlers[0].numberOfCalls).to.equal(1);
|
2016-07-05 19:30:14 +03:00
|
|
|
});
|
2016-11-24 01:50:57 +03:00
|
|
|
});
|
2016-07-05 19:30:14 +03:00
|
|
|
|
2016-11-24 01:50:57 +03:00
|
|
|
it('loads styles correctly', function () {
|
|
|
|
let subject = this.subject({
|
|
|
|
ghostPaths,
|
|
|
|
testing: false
|
|
|
|
});
|
2016-07-05 19:30:14 +03:00
|
|
|
|
2017-03-03 19:13:22 +03:00
|
|
|
return subject.loadStyle('testing', 'style.css').catch(() => {
|
|
|
|
// we add a catch handler here because `/assets/style.css` doesn't exist
|
|
|
|
expect($('#testing-styles').length).to.equal(1);
|
|
|
|
expect($('#testing-styles').attr('href')).to.equal('/assets/style.css');
|
|
|
|
});
|
2016-11-24 01:50:57 +03:00
|
|
|
});
|
|
|
|
});
|