85 lines
2.6 KiB
JavaScript
85 lines
2.6 KiB
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
* @oncall react_native
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
function compareSnaps(
|
|
flowFixtures,
|
|
flowSnaps,
|
|
flowExtraCases,
|
|
tsFixtures,
|
|
tsSnaps,
|
|
tsExtraCases,
|
|
ignoredCases,
|
|
) {
|
|
const flowCases = Object.keys(flowFixtures).sort();
|
|
const tsCases = Object.keys(tsFixtures).sort();
|
|
const commonCases = flowCases.filter(name => tsCases.indexOf(name) !== -1);
|
|
describe('RN Codegen Parsers', () => {
|
|
it('should not unintentionally contains test case for Flow but not for TypeScript', () => {
|
|
expect(
|
|
flowCases.filter(name => commonCases.indexOf(name) === -1),
|
|
).toEqual(flowExtraCases);
|
|
});
|
|
it('should not unintentionally contains test case for TypeScript but not for Flow', () => {
|
|
expect(tsCases.filter(name => commonCases.indexOf(name) === -1)).toEqual(
|
|
tsExtraCases,
|
|
);
|
|
});
|
|
for (const commonCase of commonCases) {
|
|
const flowSnap =
|
|
flowSnaps[
|
|
`RN Codegen Flow Parser can generate fixture ${commonCase} 1`
|
|
];
|
|
const tsSnap =
|
|
tsSnaps[
|
|
`RN Codegen TypeScript Parser can generate fixture ${commonCase} 1`
|
|
];
|
|
it(`should be able to find the snapshot for Flow for case ${commonCase}`, () => {
|
|
expect(typeof flowSnap).toEqual('string');
|
|
});
|
|
it(`should be able to find the snapshot for TypeScript for case ${commonCase}`, () => {
|
|
expect(typeof tsSnap).toEqual('string');
|
|
});
|
|
if (ignoredCases.indexOf(commonCase) === -1) {
|
|
it(`should generate the same snapshot from Flow and TypeScript for fixture ${commonCase}`, () => {
|
|
expect(flowSnap).toEqual(tsSnap);
|
|
});
|
|
} else {
|
|
it(`should generate the different snapshot from Flow and TypeScript for fixture ${commonCase}`, () => {
|
|
expect(flowSnap).not.toEqual(tsSnap);
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
function compareTsArraySnaps(tsSnaps, tsExtraCases) {
|
|
for (const array2Case of tsExtraCases.filter(
|
|
name => name.indexOf('ARRAY2') !== -1,
|
|
)) {
|
|
const arrayCase = array2Case.replace('ARRAY2', 'ARRAY');
|
|
it(`should generate the same snap from fixture ${arrayCase} and ${array2Case}`, () => {
|
|
expect(
|
|
tsSnaps[
|
|
`RN Codegen TypeScript Parser can generate fixture ${arrayCase}`
|
|
],
|
|
).toEqual(
|
|
tsSnaps[
|
|
`RN Codegen TypeScript Parser can generate fixture ${array2Case}`
|
|
],
|
|
);
|
|
});
|
|
}
|
|
}
|
|
module.exports = {
|
|
compareSnaps,
|
|
compareTsArraySnaps,
|
|
};
|