-
Notifications
You must be signed in to change notification settings - Fork 24.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SimpleViewPropertyTest.java => SimpleViewPropertyTest.kt (#38856)
Summary: This PR converts SimpleViewPropertyTest into Kotlin as requested in [https://github.com/facebook/react-native/issues/38835](https://github.com/facebook/react-native/issues/38825#issuecomment-1669634951) ## Changelog: <!-- Help reviewers and the release process by writing your own changelog entry. Pick one each for the category and type tags: [ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message For more details, see: https://reactnative.dev/contributing/changelogs-in-pull-requests --> [INTERNAL] [CHANGED] - Convert to SimpleViewPropertyTest Kotlin Pull Request resolved: #38856 Test Plan: 1. Run `./gradlew :packages:react-native:ReactAndroid:test.` 2. All tests should pass. Reviewed By: NickGerleman Differential Revision: D48171939 Pulled By: mdvacca fbshipit-source-id: eaa93a696faba1793b85186e6a072a7d3f043d0c
- Loading branch information
1 parent
5d67460
commit baa2714
Showing
2 changed files
with
100 additions
and
118 deletions.
There are no files selected for viewing
118 changes: 0 additions & 118 deletions
118
...ative/ReactAndroid/src/test/java/com/facebook/react/uimanager/SimpleViewPropertyTest.java
This file was deleted.
Oops, something went wrong.
100 changes: 100 additions & 0 deletions
100
...-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/SimpleViewPropertyTest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
/* | ||
* 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.uimanager | ||
|
||
import android.graphics.drawable.ColorDrawable | ||
import android.view.View | ||
import com.facebook.react.bridge.CatalystInstance | ||
import com.facebook.react.bridge.JavaOnlyMap | ||
import com.facebook.react.bridge.ReactApplicationContext | ||
import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance | ||
import com.facebook.react.bridge.ReadableMap | ||
import com.facebook.react.touch.JSResponderHandler | ||
import com.facebook.react.uimanager.annotations.ReactProp | ||
import org.assertj.core.api.Assertions | ||
import org.junit.Before | ||
import org.junit.Rule | ||
import org.junit.Test | ||
import org.junit.runner.RunWith | ||
import org.powermock.core.classloader.annotations.PowerMockIgnore | ||
import org.powermock.modules.junit4.rule.PowerMockRule | ||
import org.robolectric.RobolectricTestRunner | ||
import org.robolectric.RuntimeEnvironment | ||
|
||
/** Verify [View] view property being applied properly by [SimpleViewManager] */ | ||
@RunWith(RobolectricTestRunner::class) | ||
@PowerMockIgnore("org.mockito.*", "org.robolectric.*", "androidx.*", "android.*") | ||
class SimpleViewPropertyTest { | ||
|
||
@get:Rule var rule = PowerMockRule() | ||
|
||
private class ConcreteViewManager : SimpleViewManager<View?>() { | ||
@ReactProp(name = "foo") fun setFoo(view: View, foo: Boolean) {} | ||
|
||
@ReactProp(name = "bar") fun setBar(view: View, bar: ReadableMap?) {} | ||
|
||
override fun createViewInstance(reactContext: ThemedReactContext): View { | ||
return View(reactContext) | ||
} | ||
|
||
override fun getName(): String { | ||
return "View" | ||
} | ||
} | ||
|
||
private lateinit var context: ReactApplicationContext | ||
private lateinit var catalystInstanceMock: CatalystInstance | ||
private lateinit var themedContext: ThemedReactContext | ||
private lateinit var manager: ConcreteViewManager | ||
|
||
@Before | ||
fun setup() { | ||
context = ReactApplicationContext(RuntimeEnvironment.getApplication()) | ||
catalystInstanceMock = createMockCatalystInstance() | ||
context.initializeWithInstance(catalystInstanceMock) | ||
themedContext = ThemedReactContext(context, context) | ||
manager = ConcreteViewManager() | ||
} | ||
|
||
fun buildStyles(vararg keysAndValues: Any?): ReactStylesDiffMap { | ||
return ReactStylesDiffMap(JavaOnlyMap.of(*keysAndValues)) | ||
} | ||
|
||
@Test | ||
fun testOpacity() { | ||
val view = manager.createView(viewTag, themedContext, buildStyles(), null, JSResponderHandler()) | ||
manager.updateProperties(view, buildStyles()) | ||
Assertions.assertThat(view.alpha).isEqualTo(1.0f) | ||
manager.updateProperties(view, buildStyles("opacity", 0.31)) | ||
Assertions.assertThat(view.alpha).isEqualTo(0.31f, Assertions.offset(1e-5f)) | ||
manager.updateProperties(view, buildStyles("opacity", null)) | ||
Assertions.assertThat(view.alpha).isEqualTo(1.0f) | ||
} | ||
|
||
@Test | ||
fun testBackgroundColor() { | ||
val view = manager.createView(viewTag, themedContext, buildStyles(), null, JSResponderHandler()) | ||
manager.updateProperties(view, buildStyles()) | ||
Assertions.assertThat(view.background).isEqualTo(null) | ||
manager.updateProperties(view, buildStyles("backgroundColor", 12)) | ||
Assertions.assertThat((view.background as ColorDrawable).color).isEqualTo(12) | ||
manager.updateProperties(view, buildStyles("backgroundColor", null)) | ||
Assertions.assertThat((view.background as ColorDrawable).color).isEqualTo(0) | ||
} | ||
|
||
@Test | ||
fun testGetNativeProps() { | ||
val nativeProps = manager.nativeProps | ||
Assertions.assertThat(nativeProps["foo"]).isEqualTo("boolean") | ||
Assertions.assertThat(nativeProps["bar"]).isEqualTo("Map") | ||
} | ||
|
||
companion object { | ||
private const val viewTag = 2 | ||
} | ||
} |