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