ohayolibs
Version:
Ohayo is a set of essential modules for ohayojp.
114 lines (108 loc) • 4.22 kB
text/typescript
import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing';
import * as LANG from '../core/lang.config';
import { APPNAME, createOhayoApp, createOhayoRunner, createNgRunner } from '../utils/testing';
describe('NgOhayoSchematic: application', () => {
let runner: SchematicTestRunner;
let tree: UnitTestTree;
describe(``, () => {
beforeEach(async () => ({ runner, tree } = await createOhayoApp()));
it(`should add @ohayo to dependencies`, () => {
const packageJson = JSON.parse(tree.readContent('package.json'));
expect(packageJson.dependencies['@ohayo/theme']).toBeDefined();
expect(packageJson.dependencies['@ohayo/components']).toBeDefined();
expect(packageJson.dependencies['@ohayo/util']).toBeDefined();
expect(packageJson.dependencies['@ohayo/acl']).toBeDefined();
expect(packageJson.dependencies['@ohayo/auth']).toBeDefined();
expect(packageJson.dependencies['@ohayo/cache']).toBeDefined();
expect(packageJson.dependencies['@ohayo/mock']).toBeDefined();
});
it('should be add vscode extensions confir', () => {
const filePath = '.vscode/extensions.json';
expect(tree.exists(filePath)).toBe(true, `Not found [${filePath}]`);
const json = JSON.parse(tree.readContent(filePath));
expect(json != null).toBe(true);
expect(json.recommendations[0]).toBe('cipchk.ohayojp-extension-pack');
});
});
describe('#i18n', () => {
describe('with true', () => {
beforeEach(async () => ({ runner, tree } = await createOhayoApp({ i18n: true })));
it(`can add i18n related`, () => {
const specTs = tree.readContent('/projects/foo/src/app/app.module.ts');
expect(specTs).toContain(`import { I18NService } from '@core'`);
});
});
describe('with false', () => {
beforeEach(async () => ({ runner, tree } = await createOhayoApp({ i18n: false })));
it(`can't add i18n related`, () => {
const specTs = tree.readContent('/projects/foo/src/app/app.module.ts');
expect(specTs).not.toContain(`@core/i18n/`);
});
});
describe('default language', () => {
it(`with use zh`, async () => {
spyOn(LANG, 'getLangData').and.returnValue(
JSON.stringify({
key1: 'Key1',
key2: 'KEY2',
}),
);
const baseRunner = createNgRunner();
const workspaceTree = await baseRunner
.runSchematicAsync('workspace', {
name: 'workspace',
newProjectRoot: 'projects',
version: '6.0.0',
})
.toPromise();
const appTree = await baseRunner
.runSchematicAsync(
'application',
{
name: APPNAME,
inlineStyle: false,
inlineTemplate: false,
routing: false,
style: 'css',
skipTests: false,
skipPackageJson: false,
},
workspaceTree,
)
.toPromise();
appTree.create(
'/demo.html',
`
{{(status ? 'key1' : 'key2') | translate }}
{{ (status ? 'menu.fullscreen.exit' : 'menu.fullscreen') | translate }}
[placeholder]="'key1' | translate">
<nz-tab [nzTitle]="'key1' | translate">
{{ 'Please enter mobile number!' | translate }}
<button>{{ count ? count + 's' : 'key1' | translate }}</button>
`,
);
const ohayoRunner = createOhayoRunner();
// tslint:disable-next-line:no-shadowed-variable
const tree = await ohayoRunner
.runSchematicAsync(
'ng-add',
{
skipPackageJson: false,
defaultLanguage: 'zh',
},
appTree,
)
.toPromise();
const res = tree.readContent('/demo.html');
expect(res).toBe(`
{{ status ? 'key1' : 'key2' }}
{{ status ? 'menu.fullscreen.exit' : 'menu.fullscreen' }}
[placeholder]="'key1'">
<nz-tab [nzTitle]="'key1'">
Please enter mobile number!
<button>{{ count ? count + 's' : 'key1'}}</button>
`);
});
});
});
});