mirror of
https://github.com/status-im/metro.git
synced 2025-03-02 19:50:28 +00:00
packager: AssetResolutionCache: tests + fix bug
Summary: Or, a case in point that Flow doesn't saves us from all the ills. I think it didn't complain because `MapWithDefaults` doesn't have proper typing. I'll deal with that separately. Reviewed By: davidaurelio Differential Revision: D5077707 fbshipit-source-id: c43623c5046d2dea9964685a44ad4877d060232e
This commit is contained in:
parent
6f61f74e4e
commit
b512cf62af
@ -36,7 +36,7 @@ type Options = {|
|
|||||||
+platforms: Set<string>,
|
+platforms: Set<string>,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
type AssetInfo = {platform: ?string, fileName: string};
|
type AssetInfo = {|platform: ?string, fileName: string|};
|
||||||
type InfoByAssetName = Map<string, Array<AssetInfo>>;
|
type InfoByAssetName = Map<string, Array<AssetInfo>>;
|
||||||
|
|
||||||
const EMPTY_ARRAY = [];
|
const EMPTY_ARRAY = [];
|
||||||
@ -102,7 +102,7 @@ class AssetResolutionCache {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
getWithDefaultArray(results, assetData.assetName).push({
|
getWithDefaultArray(results, assetData.assetName).push({
|
||||||
plaform: assetData.platform,
|
platform: assetData.platform,
|
||||||
fileName,
|
fileName,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2015-present, Facebook, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the BSD-style license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
jest.disableAutomock();
|
||||||
|
|
||||||
|
const AssetResolutionCache = require('../AssetResolutionCache');
|
||||||
|
|
||||||
|
const MOCK_FILE_NAMES = [
|
||||||
|
'test@2x.ios.png',
|
||||||
|
'test@1x.ios.png',
|
||||||
|
'foo.jpg',
|
||||||
|
'bar.ios.png',
|
||||||
|
'test@1.5x.ios.png',
|
||||||
|
'foo@2x.jpg',
|
||||||
|
'test@3x.android.png',
|
||||||
|
'test.android.png',
|
||||||
|
];
|
||||||
|
|
||||||
|
describe('AssetResolutionCache', () => {
|
||||||
|
let fileNames, cache;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fileNames = [...MOCK_FILE_NAMES];
|
||||||
|
cache = new AssetResolutionCache({
|
||||||
|
assetExtensions: new Set(['png', 'jpg']),
|
||||||
|
getDirFiles: dirPath => (dirPath === '/assets' ? fileNames : []),
|
||||||
|
platforms: new Set(['ios', 'android']),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('finds the correct assets', () => {
|
||||||
|
const results = cache.resolve('/assets', 'test.png', 'ios');
|
||||||
|
expect(results).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('correctly clears out', () => {
|
||||||
|
cache.resolve('/assets', 'test.png', 'ios');
|
||||||
|
fileNames.push('test@3x.ios.png');
|
||||||
|
cache.clear();
|
||||||
|
const results = cache.resolve('/assets', 'test.png', 'ios');
|
||||||
|
expect(results).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,18 @@
|
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`AssetResolutionCache correctly clears out 1`] = `
|
||||||
|
Array [
|
||||||
|
"test@2x.ios.png",
|
||||||
|
"test@1x.ios.png",
|
||||||
|
"test@1.5x.ios.png",
|
||||||
|
"test@3x.ios.png",
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`AssetResolutionCache finds the correct assets 1`] = `
|
||||||
|
Array [
|
||||||
|
"test@2x.ios.png",
|
||||||
|
"test@1x.ios.png",
|
||||||
|
"test@1.5x.ios.png",
|
||||||
|
]
|
||||||
|
`;
|
Loading…
x
Reference in New Issue
Block a user