diff --git a/android/plugins/litho/src/test/java/com/facebook/flipper/plugins/uidebugger/litho/KStateContainerExtractionTest.kt b/android/plugins/litho/src/test/java/com/facebook/flipper/plugins/uidebugger/litho/KStateContainerExtractionTest.kt new file mode 100644 index 000000000..b87333700 --- /dev/null +++ b/android/plugins/litho/src/test/java/com/facebook/flipper/plugins/uidebugger/litho/KStateContainerExtractionTest.kt @@ -0,0 +1,31 @@ +/* + * 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. + */ + +import com.facebook.flipper.plugins.uidebugger.litho.descriptors.props.ComponentDataExtractor +import com.facebook.flipper.plugins.uidebugger.model.InspectableArray +import com.facebook.flipper.plugins.uidebugger.model.InspectableObject +import com.facebook.flipper.plugins.uidebugger.model.InspectableValue +import com.facebook.litho.KStateContainer +import junit.framework.Assert.assertEquals +import org.junit.Test + +class KStateContainerExtractionTest { + @Test + @Throws(Exception::class) + fun testCanExtractKState() { + + // this test ensures that our reflection based extraction doesn't break if the KState class + // structure changes + val stateContainer = KStateContainer.withNewState(null, "foo") + + val result = ComponentDataExtractor.getState(stateContainer, "Comp1") + + assertEquals( + result, + InspectableObject(mapOf(1 to InspectableArray(listOf(InspectableValue.Text("foo")))))) + } +} diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Inspectable.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Inspectable.kt index e95a5cf47..79c41e99e 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Inspectable.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Inspectable.kt @@ -35,11 +35,11 @@ sealed class InspectableValue : Inspectable() { @kotlinx.serialization.Serializable @SerialName("text") - class Text(val value: String) : InspectableValue() + data class Text(val value: String) : InspectableValue() @kotlinx.serialization.Serializable @SerialName("boolean") - class Boolean(val value: kotlin.Boolean) : InspectableValue() + data class Boolean(val value: kotlin.Boolean) : InspectableValue() @SerialName("number") @kotlinx.serialization.Serializable