/**

 * Copyright (c) 2024 Huawei Technologies Co., Ltd.

 *

 * This source code is licensed under the MIT license found in the

 * LICENSE-MIT file in the root directory of this source tree.

 */



import { TestCase, TestSuite } from '@rnoh/testerino';

import { Platform, ScrollView, StyleSheet, TextInput, View } from 'react-native';

import { COMMON_PROPS, getScrollViewContent } from './fixtures';



export function KeyboardTest() {

  return (

    <TestSuite name="keyboard props">

      <TestCase

        modal

        skip

        itShould="the left scrollview should dismiss the keyboard on scroll and the right one shouldn't (keyboardDismissMode)"

      //https://gl.swmansion.com/rnoh/react-native-harmony/-/issues/310

      >

        <View>

          <TextInput style={styles.textInput} />

          <View style={[styles.wrapperView, { flexDirection: 'row' }]}>

            <ScrollView {...COMMON_PROPS} keyboardDismissMode={'on-drag'}>

              {getScrollViewContent({})}

            </ScrollView>

            <ScrollView {...COMMON_PROPS} keyboardDismissMode={'none'}>

              {getScrollViewContent({})}

            </ScrollView>

          </View>

        </View>

      </TestCase>

      <TestCase

        modal

        skip={Platform.select({ android: 'fails', harmony: 'fails on Android' })}

        itShould="adjust the scrollview when showing keyboard (automaticallyAdjustKeyboardInsets)"

      //https://gl.swmansion.com/rnoh/react-native-harmony/-/issues/302

      >

        <View style={styles.wrapperView}>

          <TextInput style={styles.textInput} />

          <ScrollView {...COMMON_PROPS} automaticallyAdjustKeyboardInsets />

        </View>

      </TestCase>

      <TestCase

        modal

        skip={Platform.select({

          android: 'fails',

          harmony: 'fails on Android Emulator',

        })}

        itShould="the left scrollview should dismiss the keyboard on tap and the right one shouldn't (keyboardShouldPersistTaps)"

      //https://gl.swmansion.com/rnoh/react-native-harmony/-/issues/311

      >

        <View>

          <TextInput style={styles.textInput} />

          <View style={[styles.wrapperView, { flexDirection: 'row' }]}>

            <ScrollView {...COMMON_PROPS} keyboardShouldPersistTaps={'never'} />

            <ScrollView

              {...COMMON_PROPS}

              keyboardShouldPersistTaps={'always'}

            />

          </View>

        </View>

      </TestCase>

    </TestSuite>

  );

}



const styles = StyleSheet.create({

  wrapperView: {

    height: 300,

    width: '60%',

  },

  textInput: {

    borderWidth: 1,

    borderColor: 'silver',

    backgroundColor: '#444',

    height: 32, // hack

    borderRadius: 8,

    marginTop: 8,

    padding: 8,

    fontSize: 16,

    color: 'white',

  },

});