package com.complycubereactnative import com.complycube.sdk.presentation.theme.DesignTokens import com.complycube.sdk.presentation.theme.LookAndFeel import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertSame class ComplyCubeAppearanceTest { @Test fun designTokensTakePrecedenceOverLookAndFeel() { val builder = FakeBuilder() val tokens = DesignTokens() val lookAndFeel = LookAndFeel() val applied = applyAppearance( builder, tokens, lookAndFeel, { withDesignTokens(it) }, { withLookAndFeel(it) } ) assertEquals(AppliedAppearance.DESIGN_TOKENS, applied) assertSame(tokens, builder.lastDesignTokens) assertEquals(1, builder.designTokensCalls) assertEquals(0, builder.lookAndFeelCalls) } @Test fun fallsBackToLookAndFeelWhenDesignTokensAreAbsent() { val builder = FakeBuilder() val lookAndFeel = LookAndFeel() val applied = applyAppearance( builder, null, lookAndFeel, { withDesignTokens(it) }, { withLookAndFeel(it) } ) assertEquals(AppliedAppearance.LOOK_AND_FEEL, applied) assertSame(lookAndFeel, builder.lastLookAndFeel) assertEquals(0, builder.designTokensCalls) assertEquals(1, builder.lookAndFeelCalls) } @Test fun returnsNoneWhenNoAppearanceIsProvided() { val builder = FakeBuilder() val applied = applyAppearance( builder, null, null, { withDesignTokens(it) }, { withLookAndFeel(it) } ) assertEquals(AppliedAppearance.NONE, applied) assertEquals(0, builder.designTokensCalls) assertEquals(0, builder.lookAndFeelCalls) } private class FakeBuilder { var designTokensCalls = 0 var lookAndFeelCalls = 0 var lastDesignTokens: DesignTokens? = null var lastLookAndFeel: LookAndFeel? = null fun withDesignTokens(tokens: DesignTokens) { designTokensCalls += 1 lastDesignTokens = tokens } fun withLookAndFeel(lookAndFeel: LookAndFeel) { lookAndFeelCalls += 1 lastLookAndFeel = lookAndFeel } } }