Files
openless/openless-all/app/scripts/copy-android-scaffolding.test.mjs

55 lines
2.0 KiB
JavaScript

#!/usr/bin/env node
import assert from 'node:assert/strict';
import {
formatStringResource,
hasStringResource,
mergeMissingStringResources,
SHIZUKU_STRINGS_BY_LOCALE,
} from './copy-android-scaffolding.mjs';
const baseXml = `<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">OpenLess</string>
</resources>`;
const partialXml = `<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="openless_shizuku_permission_rationale">exists</string>
</resources>`;
const mergedAll = mergeMissingStringResources(baseXml, SHIZUKU_STRINGS_BY_LOCALE.values);
assert.equal(mergedAll.changed, true);
assert.ok(hasStringResource(mergedAll.content, 'openless_shizuku_permission_rationale'));
assert.ok(hasStringResource(mergedAll.content, 'openless_shizuku_permission_blocked'));
assert.ok(hasStringResource(mergedAll.content, 'openless_shizuku_open_manager'));
const mergedPartial = mergeMissingStringResources(partialXml, SHIZUKU_STRINGS_BY_LOCALE.values);
assert.equal(mergedPartial.changed, true);
assert.ok(hasStringResource(mergedPartial.content, 'openless_shizuku_open_manager'));
assert.ok(
!mergedPartial.content.includes(
'exists</string>\n <string name="openless_shizuku_permission_rationale">',
),
);
const mergedTwice = mergeMissingStringResources(
mergedAll.content,
SHIZUKU_STRINGS_BY_LOCALE.values,
);
assert.equal(mergedTwice.changed, false);
for (const [locale, stringsByName] of Object.entries(SHIZUKU_STRINGS_BY_LOCALE)) {
const localeMerged = mergeMissingStringResources(baseXml, stringsByName);
assert.equal(localeMerged.changed, true, `locale ${locale} should merge`);
for (const name of Object.keys(stringsByName)) {
assert.ok(hasStringResource(localeMerged.content, name), `${locale} missing ${name}`);
}
}
assert.match(
formatStringResource('openless_shizuku_open_manager', 'Open Shizuku'),
/<string name="openless_shizuku_open_manager">Open Shizuku<\/string>/,
);
console.log('copy-android-scaffolding string merge checks passed');