Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(Hint): transfer to functional component & refactor tests/stories #2715

Open
wants to merge 14 commits into
base: master
Choose a base branch
from

Conversation

JackUait
Copy link
Contributor

@JackUait JackUait commented Jan 13, 2022

Перевёл контрол Hint на функциональные рельсы.

Удалил тесты 'controlled opening only if manual prop passed' и 'manual opening', так как они тестировали детали реализации. Заменил их тестом 'opens and closes manual hint on button click'

Также, уже не помню нужно ли прокидывать rootNodeRef в функциональные компоненты или они обходятся без него, поэтому удалил соответсвующий функционал.

Этот контрол вскрыл ещё одну проблему перехода на функциональные компоненты: классовые компоненты не дружат с функциональными ref-ками, поэтому переезд нужно начинать с компонентов не содержащих вложенных компонентов и затем подниматься выше по иерархии.

@JackUait JackUait requested a review from zhzz January 13, 2022 17:19
@JackUait JackUait changed the title refactor(Hint): convert Hint into a functional component with class wrapper refactor(Hint): transfer to functional component & refactor tests/stories Jan 18, 2022
@JackUait
Copy link
Contributor Author

JackUait commented Feb 1, 2022

Пытался написать тесты для ховеров, но ничего путного не получилось.
Как тестировал: использовал waitFor из react-testing-library для создания задержки и через hover из user-event "наводил мышкой" на children хинта. Но тест фейлился, потому что не обнаруживался компонент. При этом схожий тест, но с открыванием по кнопке, вместо наведения отрабатывает корректно.

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

В общем, нужно научиться тестировать порталы. Схожая проблема с тестированием порталов есть и в Toast'е.

UPD: Я всё-таки научился тестировать порталы, но способ которым я это сделал не был нигде описан, так что я добавил новый комментарий со своим способом в ветку, которую я скидывал выше.

@JackUait
Copy link
Contributor Author

JackUait commented Feb 1, 2022

Почему-то падает скриншотный тест с "наведением и кликом", хотя при ручном тесте всё отрабатывает нормально.

@JackUait
Copy link
Contributor Author

JackUait commented Feb 2, 2022

Смёржил актуальный мастер.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

1 participant