mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-18 03:23:57 +08:00
test(@angular-devkit/build-angular): add E2E test for i18n locale data augmentation
This adds an E2E test that demonstrates the usage of a direct import of locale data to augment existing locale data.
This commit is contained in:
parent
cdc5776f53
commit
020381391f
@ -0,0 +1,52 @@
|
|||||||
|
import { expectFileToMatch, prependToFile, readFile, replaceInFile, writeFile } from '../../utils/fs';
|
||||||
|
import { ng } from '../../utils/process';
|
||||||
|
import { updateJsonFile } from '../../utils/project';
|
||||||
|
import { externalServer, langTranslations, setupI18nConfig } from './legacy';
|
||||||
|
|
||||||
|
export default async function() {
|
||||||
|
// Setup i18n tests and config.
|
||||||
|
await setupI18nConfig();
|
||||||
|
|
||||||
|
// Update angular.json to only localize one locale
|
||||||
|
await updateJsonFile('angular.json', workspaceJson => {
|
||||||
|
const appProject = workspaceJson.projects['test-project'];
|
||||||
|
appProject.architect['build'].options.localize = ['fr'];
|
||||||
|
});
|
||||||
|
|
||||||
|
// Update E2E test to look for augmented locale data
|
||||||
|
await replaceInFile('./e2e/src/app.fr.e2e-spec.ts', 'janvier', 'changed-janvier');
|
||||||
|
|
||||||
|
// Augment the locale data and import into the main application file
|
||||||
|
const localeData = await readFile('node_modules/@angular/common/locales/global/fr.js');
|
||||||
|
await writeFile('src/fr-changed.js', localeData.replace('janvier', 'changed-janvier'));
|
||||||
|
await prependToFile('src/main.ts', 'import \'./fr-changed.js\';\n');
|
||||||
|
|
||||||
|
// Run a build and test
|
||||||
|
await ng('build');
|
||||||
|
for (const { lang, outputPath } of langTranslations) {
|
||||||
|
// Only the fr locale was built for this test
|
||||||
|
if (lang !== 'fr') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure locale is inlined (@angular/localize plugin inlines `$localize.locale` references)
|
||||||
|
// The only reference in a new application is in @angular/core
|
||||||
|
await expectFileToMatch(`${outputPath}/vendor.js`, lang);
|
||||||
|
|
||||||
|
// Execute Application E2E tests with dev server
|
||||||
|
await ng('e2e', `--configuration=${lang}`, '--port=0');
|
||||||
|
|
||||||
|
// Execute Application E2E tests for a production build without dev server
|
||||||
|
const server = externalServer(outputPath, `/${lang}/`);
|
||||||
|
try {
|
||||||
|
await ng(
|
||||||
|
'e2e',
|
||||||
|
`--configuration=${lang}`,
|
||||||
|
'--devServerTarget=',
|
||||||
|
`--baseUrl=http://localhost:4200/${lang}/`,
|
||||||
|
);
|
||||||
|
} finally {
|
||||||
|
server.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user