blob: e0d6b0ef18db0bdbf8761c12c49db65d86cbb728 [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package com.flutter.gradle
import com.android.build.api.dsl.ApplicationDefaultConfig
import com.android.build.api.dsl.ApplicationExtension
import com.flutter.gradle.BaseApplicationNameHandler.GRADLE_BASE_APPLICATION_NAME_PROPERTY
import org.gradle.api.Project
import org.gradle.api.plugins.ExtensionContainer
import org.junit.jupiter.api.Assertions.assertEquals
import org.mockito.Mockito
import kotlin.test.Test
class BaseApplicationNameHandlerTest {
@Test
fun `setBaseName respects Flutter tool property`() {
val baseApplicationNamePassedByFlutterTool = "toolSetBaseApplicationName"
// Set up mocks.
val mockProject: Project = Mockito.mock(Project::class.java)
val mockAndroidComponentsExtension: ApplicationExtension = Mockito.mock(ApplicationExtension::class.java)
val mockExtensionContainer: ExtensionContainer = Mockito.mock(ExtensionContainer::class.java)
val mockDefaultConfig = Mockito.mock(ApplicationDefaultConfig::class.java)
val mockManifestPlaceholders = HashMap<String, Any>()
Mockito.`when`(mockProject.hasProperty(GRADLE_BASE_APPLICATION_NAME_PROPERTY)).thenReturn(true)
Mockito.`when`(mockProject.property(GRADLE_BASE_APPLICATION_NAME_PROPERTY)).thenReturn(baseApplicationNamePassedByFlutterTool)
Mockito.`when`(mockProject.extensions).thenReturn(mockExtensionContainer)
Mockito.`when`(mockExtensionContainer.findByType(ApplicationExtension::class.java)).thenReturn(mockAndroidComponentsExtension)
Mockito.`when`(mockAndroidComponentsExtension.defaultConfig).thenReturn(mockDefaultConfig)
Mockito.`when`(mockDefaultConfig.manifestPlaceholders).thenReturn(mockManifestPlaceholders)
// Call the base name handler.
BaseApplicationNameHandler.setBaseName(mockProject)
// Make sure we set the value passed by the tool.
assertEquals(mockManifestPlaceholders["applicationName"], baseApplicationNamePassedByFlutterTool)
}
@Test
fun `setBaseName defaults to correct value`() {
// Set up mocks.
val mockProject: Project = Mockito.mock(Project::class.java)
val mockAndroidComponentsExtension: ApplicationExtension = Mockito.mock(ApplicationExtension::class.java)
val mockExtensionContainer: ExtensionContainer = Mockito.mock(ExtensionContainer::class.java)
val mockDefaultConfig = Mockito.mock(ApplicationDefaultConfig::class.java)
val mockManifestPlaceholders = HashMap<String, Any>()
Mockito.`when`(mockProject.hasProperty(GRADLE_BASE_APPLICATION_NAME_PROPERTY)).thenReturn(false)
Mockito.`when`(mockProject.extensions).thenReturn(mockExtensionContainer)
Mockito.`when`(mockExtensionContainer.findByType(ApplicationExtension::class.java)).thenReturn(mockAndroidComponentsExtension)
Mockito.`when`(mockAndroidComponentsExtension.defaultConfig).thenReturn(mockDefaultConfig)
Mockito.`when`(mockDefaultConfig.manifestPlaceholders).thenReturn(mockManifestPlaceholders)
// Call the base name handler.
BaseApplicationNameHandler.setBaseName(mockProject)
// Make sure we default to the correct value.
assertEquals(mockManifestPlaceholders["applicationName"], BaseApplicationNameHandler.DEFAULT_BASE_APPLICATION_NAME)
}
}