mirror of
https://github.com/react/react-native.git
synced 2026-09-28 05:13:06 +08:00
Add asset utils resource identifier tests (#57999)
Summary: Adds test coverage for `getAndroidResourceIdentifier` in `react-native/asset-utils`. The tests cover folder path encoding, Android resource-name normalization, and generated asset path prefix removal. ## Changelog: [INTERNAL] - Add test coverage for asset utils Android resource identifier normalization Pull Request resolved: https://github.com/react/react-native/pull/57999 Test Plan: Ran the package suite on this rebased commit: ``` yarn jest packages/asset-utils # 1 suite, 7 passed (4 pre-existing, 3 new) ``` Checked that the three new cases are non-vacuous by mutating `packages/asset-utils/src/AndroidPathUtils.js` one change at a time and re-running: | mutation | result | | --- | --- | | narrow the prefix regex to `^assets_` | 1 failed, 6 passed | | drop the `[^a-z0-9_]` illegal-char strip | 1 failed, 6 passed | | drop `toLowerCase()` | 1 failed, 6 passed | | restored | 7 passed | Each new test kills exactly one distinct mutant, so all three assert real behavior rather than padding coverage. The `^assets_` case matters most: the real regex is `^(?:assets|assetsunstable_path)_`, where the first alternative matches `assets` then fails on the following character, so the second alternative has to carry it. This PR only adds `describe` blocks to an existing test file that was already running, so there is no new test target to register. Reviewed By: christophpurrer Differential Revision: D117191484 Pulled By: fabriziocucci fbshipit-source-id: 7a13c01772669eaf0ddfdf29156d8f250fd5cada
This commit is contained in:
committed by
meta-codesync[bot]
parent
90a539c92d
commit
6f90ef7f07
@@ -8,7 +8,10 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {getAndroidResourceFolderName} from '../AndroidPathUtils';
|
||||
import {
|
||||
getAndroidResourceFolderName,
|
||||
getAndroidResourceIdentifier,
|
||||
} from '../AndroidPathUtils';
|
||||
|
||||
const DRAWABLE_ASSET = {
|
||||
httpServerLocation: '/assets/',
|
||||
@@ -70,3 +73,35 @@ describe('getAndroidResourceFolderName', () => {
|
||||
expect(getAndroidResourceFolderName(NON_DRAWABLE_ASSET, 1.25)).toBe('raw');
|
||||
});
|
||||
});
|
||||
|
||||
describe('getAndroidResourceIdentifier', () => {
|
||||
test('encodes folder structure in the resource name', () => {
|
||||
expect(
|
||||
getAndroidResourceIdentifier({
|
||||
httpServerLocation: '/assets/images/icons',
|
||||
name: 'search',
|
||||
type: 'png',
|
||||
}),
|
||||
).toBe('images_icons_search');
|
||||
});
|
||||
|
||||
test('normalizes resource names to Android identifier characters', () => {
|
||||
expect(
|
||||
getAndroidResourceIdentifier({
|
||||
httpServerLocation: '/assets/images',
|
||||
name: 'My Icon@2x',
|
||||
type: 'png',
|
||||
}),
|
||||
).toBe('images_myicon2x');
|
||||
});
|
||||
|
||||
test('removes generated asset path prefixes', () => {
|
||||
expect(
|
||||
getAndroidResourceIdentifier({
|
||||
httpServerLocation: '/assetsunstable_path/packages/app',
|
||||
name: 'logo',
|
||||
type: 'png',
|
||||
}),
|
||||
).toBe('packages_app_logo');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user