With providers split into bundles, the test injector is now able to use providers for a given bundle. Suggested provider lists for tests are available in `angular2/platform/testing/<platform>`. Change the providers for a test suite using `setBaseTestProviders`. This should be done once at the start of the test suite, before any test cases run. BREAKING CHANGE: Tests are now required to use `setBaseTestProviders` to set up. Assuming your tests are run on a browser, setup would change as follows. Before: ```js // Somewhere in test setup import {BrowserDomAdapter} from 'angular2/src/platform/browser/browser_adapter'; BrowserDomAdapter.makeCurrent ``` After: ```js // Somewhere in the test setup import {setBaseTestProviders} from 'angular2/testing'; import { TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS } from 'angular2/platform/testing/browser'; setBaseTestProviders(TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS); ``` Closes #5351, Closes #5585 Closes #5975
81 lines
2.2 KiB
TypeScript
81 lines
2.2 KiB
TypeScript
import {
|
|
AsyncTestCompleter,
|
|
beforeEach,
|
|
ddescribe,
|
|
describe,
|
|
expect,
|
|
iit,
|
|
inject,
|
|
it,
|
|
xdescribe,
|
|
xit,
|
|
} from 'angular2/testing_internal';
|
|
|
|
import {Component, View} from 'angular2/core';
|
|
import {getComponentInfo, parseFields} from 'angular2/src/upgrade/metadata';
|
|
import {DOM} from 'angular2/src/platform/dom/dom_adapter';
|
|
|
|
export function main() {
|
|
describe('upgrade metadata', () => {
|
|
it('should extract component selector', () => {
|
|
expect(getComponentInfo(ElementNameComponent).selector).toEqual('elementNameDashed');
|
|
});
|
|
|
|
|
|
describe('errors', () => {
|
|
it('should throw on missing selector', () => {
|
|
expect(() => getComponentInfo(AttributeNameComponent))
|
|
.toThrowErrorWith(
|
|
"Only selectors matching element names are supported, got: [attr-name]");
|
|
});
|
|
|
|
it('should throw on non element names', () => {
|
|
expect(() => getComponentInfo(NoAnnotationComponent))
|
|
.toThrowErrorWith("No Directive annotation found on NoAnnotationComponent");
|
|
});
|
|
});
|
|
|
|
describe('parseFields', () => {
|
|
it('should process nulls', () => { expect(parseFields(null)).toEqual([]); });
|
|
|
|
it('should process values', () => {
|
|
expect(parseFields([' name ', ' prop : attr ']))
|
|
.toEqual([
|
|
{
|
|
prop: 'name',
|
|
attr: 'name',
|
|
bracketAttr: '[name]',
|
|
parenAttr: '(name)',
|
|
bracketParenAttr: '[(name)]',
|
|
onAttr: 'onName',
|
|
bindAttr: 'bindName',
|
|
bindonAttr: 'bindonName'
|
|
},
|
|
{
|
|
prop: 'prop',
|
|
attr: 'attr',
|
|
bracketAttr: '[attr]',
|
|
parenAttr: '(attr)',
|
|
bracketParenAttr: '[(attr)]',
|
|
onAttr: 'onAttr',
|
|
bindAttr: 'bindAttr',
|
|
bindonAttr: 'bindonAttr'
|
|
}
|
|
]);
|
|
});
|
|
})
|
|
});
|
|
}
|
|
|
|
@Component({selector: 'element-name-dashed'})
|
|
@View({template: ``})
|
|
class ElementNameComponent {
|
|
}
|
|
|
|
@Component({selector: '[attr-name]'})
|
|
@View({template: ``})
|
|
class AttributeNameComponent {
|
|
}
|
|
|
|
class NoAnnotationComponent {}
|