@sentry/wizard
Version:
Sentry wizard helping you to configure your project
73 lines (62 loc) • 2.53 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// @ts-expect-error - magicast is ESM and TS complains about that. It works though
const magicast_1 = require("magicast");
const expo_metro_1 = require("../../src/react-native/expo-metro");
const vitest_1 = require("vitest");
(0, vitest_1.describe)('expo-metro config', () => {
(0, vitest_1.test)('patches minimal expo config', () => {
const mod = (0, magicast_1.parseModule)(`
const { getDefaultConfig } = require("expo/metro-config");
/** @type {import('expo/metro-config').MetroConfig} */
const config = getDefaultConfig(__dirname);
config.resolver.assetExts.push(
// Adds support for .db files for SQLite databases
'db'
);
module.exports = config;
`);
const result = (0, expo_metro_1.patchMetroInMemory)(mod);
(0, vitest_1.expect)(result).toBe(true);
(0, vitest_1.expect)((0, magicast_1.generateCode)(mod.$ast).code).toBe(`
const {
getSentryExpoConfig
} = require("@sentry/react-native/metro");
/** @type {import('expo/metro-config').MetroConfig} */
const config = getSentryExpoConfig(__dirname);
config.resolver.assetExts.push(
// Adds support for .db files for SQLite databases
'db'
);
module.exports = config;
`.trim());
});
(0, vitest_1.test)('keeps expo metro config if other imports are present', () => {
const mod = (0, magicast_1.parseModule)(`
const { getDefaultConfig, otherExport } = require("expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
`);
const result = (0, expo_metro_1.patchMetroInMemory)(mod);
(0, vitest_1.expect)(result).toBe(true);
(0, vitest_1.expect)((0, magicast_1.generateCode)(mod.$ast).code).toBe(`
const { getDefaultConfig, otherExport } = require("expo/metro-config");
const {
getSentryExpoConfig
} = require("@sentry/react-native/metro");
const config = getSentryExpoConfig(__dirname);
module.exports = config;
`.trim());
});
(0, vitest_1.test)('does not modify when sentry already present', () => {
const mod = (0, magicast_1.parseModule)(`
const { getSentryExpoConfig } = require("@sentry/react-native/metro");
`);
const result = (0, expo_metro_1.patchMetroInMemory)(mod);
(0, vitest_1.expect)(result).toBe(false);
(0, vitest_1.expect)((0, magicast_1.generateCode)(mod.$ast).code).toBe(`
const { getSentryExpoConfig } = require("@sentry/react-native/metro");
`.trim());
});
});
//# sourceMappingURL=expo-metro.test.js.map