Skip to content

Commit

Permalink
add unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
William Chou committed Jun 1, 2017
1 parent 18dc5a1 commit 8a00d67
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 3 deletions.
3 changes: 2 additions & 1 deletion src/service.js
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,8 @@ export function isEmbeddable(service) {
*/
export function adoptServiceForEmbed(embedWin, serviceId) {
const adopted = adoptServiceForEmbedIfEmbeddable(embedWin, serviceId);
dev().assert(adopted, `${serviceId} does not implement EmbeddableService.`);
dev().assert(adopted,
`${serviceId} required to implement EmbeddableService.`);
}


Expand Down
44 changes: 42 additions & 2 deletions test/functional/test-extensions.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import {
registerExtension,
} from '../../src/service/extensions-impl';
import {extensionsFor} from '../../src/services';
import {registerServiceBuilder} from '../../src/service';
import {resetScheduledElementForTesting} from '../../src/custom-element';
import {loadPromise} from '../../src/event-helper';

Expand Down Expand Up @@ -473,7 +474,10 @@ describes.sandboxed('Extensions', {}, () => {
}, parentWin.AMP);
const elements = {};
elements[extensionId] = {css: 'a{}'};
return {elements};
return {
elements,
services: [],
};
});
});
const promise = extensions.installExtensionsInChildWindow(
Expand All @@ -494,14 +498,50 @@ describes.sandboxed('Extensions', {}, () => {
});
});

it('should adopt extension services', () => {
const fooSpy = sandbox.spy();
const fakeServiceFoo = {adoptEmbedWindow: fooSpy};
registerServiceBuilder(parentWin, 'fake-service-foo',
() => fakeServiceFoo, /* opt_instantiate */ true);

const barSpy = sandbox.spy();
const fakeServiceBar = {adoptEmbedWindow: barSpy};
registerServiceBuilder(parentWin, 'fake-service-bar',
() => fakeServiceBar, /* opt_instantiate */ true);

sandbox.stub(extensions, 'loadExtension', extensionId => {
return Promise.resolve().then(() => {
registerExtension(extensions, extensionId, AMP => {
AMP.registerElement(extensionId, AmpTest);
}, parentWin.AMP);
const elements = {};
elements[extensionId] = {};
return /* ExtensionDef */ {
elements,
services: ['fake-service-foo'], // fake-service-bar NOT included.
};
});
});

const promise =
extensions.installExtensionsInChildWindow(iframeWin, ['amp-test']);
return promise.then(() => {
expect(fooSpy).calledOnce;
expect(barSpy).notCalled;
});
});

it('should call pre-install callback before other installs', () => {
const stub = sandbox.stub(extensions, 'loadExtension', extensionId => {
registerExtension(extensions, extensionId, AMP => {
AMP.registerElement(extensionId, AmpTest);
}, parentWin.AMP);
const elements = {};
elements[extensionId] = {css: 'a{}'};
return Promise.resolve({elements});
return Promise.resolve({
elements,
services: [],
});
});
let preinstallCount = 0;
const promise = extensions.installExtensionsInChildWindow(
Expand Down

0 comments on commit 8a00d67

Please sign in to comment.