Повестка дня React-NativeCalendar не имеет testID для Detox - PullRequest
0 голосов
/ 26 февраля 2019

Я использую detox для моего реактивного проекта, и в нем есть компонент календаря, использующий компонент Agenda из реактивного языка.Я ищу, чтобы добавить testID для компонента повестки дня, но, кажется, не один.Это мой код повестки дня.

  <Agenda
    items={this.state.items}
    onDayPress={(day)=>{console.log('day pressed',day)}}
    onDayChange={(day)=>{console.log('day changed')}}
    pastScrollRange={50}
    futureScrollRange={50}
    renderItem={(item, firstItemInDay) => {return (<CalendarEvent EventID={item.EventID} navigation ={this.props.navigation}/>);}}


    renderEmptyDate={() => {return (<EmptyEvent/>);}}
    // specify what should be rendered instead of ActivityIndicator
    //renderEmptyData = {() => {return (<EmptyEvent/>)}}
    rowHasChanged={(r1, r2) => {return r1.text !== r2.text}}
    // By default, agenda dates are marked if they have at least one item, but you can override this if needed
    markedDates={markedDates}
    theme={{
                    backgroundColor: '#203546',
                    calendarBackground: '#203546',
                    textSectionTitleColor: '#ffffff',
                    selectedDayBackgroundColor: '#203546',
                    selectedDayTextColor: '#ffffff',
                    todayTextColor: '#00adf5',
                    dayTextColor: '#ffffff',
                    textDisabledColor: '#ffffff',
                    dotColor: '#ffffff',
                    selectedDotColor: '#ffffff',
                    monthTextColor: '#ffffff',
                    textMonthFontWeight: 'bold',
                    textDayFontSize: 16,
                    textMonthFontSize: 20,
                    textDayHeaderFontSize: 15,
                    agendaDayTextColor: 'white',
                    agendaDayNumColor: 'white',
                    agendaTodayColor: '#00adf5',
                    agendaKnobColor: 'white'
                    }}/>

1 Ответ

0 голосов
/ 26 февраля 2019

Быстрый поиск репо react-native-calendars показывает, что опора testID поддерживается только в компоненте CalendarHeader.

Похоже, что остальные компоненты, предоставляемые этой библиотекой, не поддерживают testID, но это не значит, что они не могут.

Если вы посмотрите в руководстве по устранению неполадок Detox для добавления testID реквизиты:

Решение : React Native onlyподдерживает testID опору на встроенных компонентах.Если вы создали собственный составной компонент, вам придется поддерживать эту опору самостоятельно.Вероятно, вам следует распространить подпункт testID на одного из ваших отрисованных дочерних элементов (встроенного компонента):

К сожалению, компонент Agenda не является тем, который вы создали сами, поэтому нет особого контроляВы можете иметь над его реквизитом.Есть несколько вариантов действий, которые вы можете предпринять:

  1. Создайте проблему и надейтесь, что кто-то из команды разработчиков репозитория сделает нужное вам изменение.
  2. Вилка библиотеки.Это теперь даст вам полный контроль над компонентом.Вы сможете добавить необходимые реквизиты testID.Затем вы можете использовать свою раздвоенную версию библиотеки.Это может быть полезно, но учтите, что вам придется поддерживать раздвоенный репо.Вы всегда можете отправить изменение в виде PR, и оно может быть объединено с фактическим выпуском.

Очевидно, что самым быстрым решением является вариант 2. Затем вы можете использовать свою раздвоенную версию в вашем package.json следующим образом:

"react-native-calendars": "your_github_name/react-native-calendars"
...