
Borys
23.07.2018
06:52:41
нигде стэйтом не манипулирую как это написано в ероре

chep
23.07.2018
06:54:49
Если хочешь тестом зафиксировать, весь кусок верстки целиком (чтобы поймать изменения конечной верстки при обновлении пакета с компонентами, например) - mount. Если хочешь покрыть хитрожопые ветвления в рендере самого компонента - shallow. Но в случае, если используешь redux (или любое другое решение из этой серии), то придется чуть-чуть повозиться
уже наделал моков. Пробовал через маунт сначала, но там геморно с тем, что надо провайдер создавать, потмо в этом провайдере искать свой компонент и что-то делать.
Переписал под shallow - стало легче.
Просто вот например мне надо потестировать что в компоненте есть тогл, и если его переключать - меняется контент. Как я понимаю, для этого мне надо маунт, да?

Sergey
23.07.2018
07:00:39
А у тебя состояние, которое меняется тоглом, где лежит?

Google

Sergey
23.07.2018
07:04:02
Если в стейте компонента, то shallow хватит, если снаружи, то... тоже shallow хватит, если протестируешь, что компонент сообщает наверх об изменении тогла и покроешь оба состояния компонента с разным значением тогла

Arthur
23.07.2018
07:04:15
Ребят, так что насчёт передачи пропсов в редаксе ? Лучше коннектить все напрямую к стору, или можно получить все в родителя и из него уже передать нужные пропсы ?

Cenator
23.07.2018
07:04:29
напрямую

Arthur
23.07.2018
07:04:59
Ок, спасибо

chep
23.07.2018
07:10:30

Sergey
23.07.2018
07:11:28
Тогда должно работать, разве что его нужно насильно перерисовывать, через wrapper.update()

chep
23.07.2018
07:14:36

Sergey
23.07.2018
07:15:16
Типа того

chep
23.07.2018
07:17:05
Типа того
спасиб.
Еще тупой вопрос. Я просто взял и установил себе jest и enzyme. И смотрю гайд из доков, там все через to.equal, а у меня работает только toEqual. И то что нашел - как-то костыльно попрравляет, мол устанавливать кай и перереопределять методы . Ты не знашеь как можно адекватно включить синтаскис с
to.equal ?

Sergey
23.07.2018
07:20:33
Ну это ты хочешь ассерты chai вроде, а у jest как раз toEqual, toMatchSnapshot и т. д.. Я не заморачивался над таким, если честно

chep
23.07.2018
07:25:40

Sergey
23.07.2018
07:30:57
Там после have обычно еще что-то есть, а сам по себе он для то, чтобы читалось проще, вроде

chep
23.07.2018
07:32:19

Google

chep
23.07.2018
07:32:23
Вот как этот to.have)
переделать

Sergey
23.07.2018
07:41:04
wrapper.find(Foo).length.toEqual(1)

Roman
23.07.2018
07:42:38
а вообще компоненты и ui тестить это пиздец
тесты ради тестов

Max
23.07.2018
07:45:49
у тебя проект просто которым полторы калеки пользуется
если дешевле дать тебе леща и поставить багу в трекер то тесты не нужны, да
если сломанный компонент это финансовые потери неплохие то без тестов и прибить могут

Вячеслав
23.07.2018
07:46:48

Roman
23.07.2018
07:48:49
только сколько времени надо потратить пока тесты напишешь для ui
для БЛ ок, вопросов нет

Max
23.07.2018
07:49:48
БЛ?

Roman
23.07.2018
07:50:00

Max
23.07.2018
07:50:22
и говорить что они не нужны — сорян, но просто показатель недальновидности и непонимания тобой процессов разработки

Айнур
23.07.2018
07:51:22
А доклад @sergeysova по поводу атомик подхода уже был? если да, есть запись?

Вячеслав
23.07.2018
07:52:36

Yuriy
23.07.2018
07:52:43
Всем доброе утро, ребят, уже неделю завис на ошибке.
Может кто запустить проект и глянуть почему при роуте вылетает ошибка. Я бы сюда скинул но она большая и скорее всего завязана на конфиге Вебпака. Для репро просто вручную перейти в /login

Google

Yuriy
23.07.2018
07:52:47
https://github.com/YRieznik/router4

Kendr
23.07.2018
07:53:42

Roman
23.07.2018
07:55:19

Yuriy
23.07.2018
07:56:23

Dmitriy
23.07.2018
07:57:05
Народ, день добрый мб. кто подскажет. Я обнавляю react router 3 на 4. И столкнулся с такой проблемой: у меня почему то не работает второй компонент:
<Route exact path="/register" component={FormRegisterAuth} /><Route path="/register/confirm" component={FormRegisterConfirm} />
/confirm как будто не видит

Roman
23.07.2018
07:57:24

Anton
23.07.2018
07:58:04
так он первый видит и падает в него

Yuriy
23.07.2018
07:58:06
я уже думал мб в домейне дело, мб через Хост файл сделать кастомный

Anton
23.07.2018
07:58:11
используй свитч

Yuriy
23.07.2018
07:58:45
используй свитч
<Switch>
<Route exact path="/" component={Home} />
<Route path="/login" component={Login}/>
</Switch>

Victor
23.07.2018
07:59:07
Здравствуйте, коллеги! Как я могу отменить onChange после того, как в onKeyPress я узнал, что нажатая кнопка - точка?

Anton
23.07.2018
07:59:40
таргет
кей вэлью

Victor
23.07.2018
08:00:17
так суть в том, что в onChange нет keyCode, а в onKeyPress нет value

Admin
ERROR: S client not available

Айнур
23.07.2018
08:01:02

Kendr
23.07.2018
08:03:16
А, вэлью ?

Victor
23.07.2018
08:04:46
А, вэлью ?
именно, при вызове onKeyPress нет поля event.value

Google

Viacheslav
23.07.2018
08:06:30
подписывайся на onKeyDown и делай preventDefault() по keyCode

Kendr
23.07.2018
08:10:12

Victor
23.07.2018
08:12:21
Задача такая: написать десятичное число, и если в строке уже есть точка - отменить обработку.
Кейс: ввведено "1222.34", каретка установлена в позиции после "12", нажимается кнопка "."
Я вот и хочу узнать, что если нажимается точка в любой позиции строки - проверять, если есть в строке уже точка - отмена обработки

Andrew
23.07.2018
08:19:24
тебе нужно два обработчика. onKeyUp, если в конце строки точка, и точек больше нет, то ничего не делать (ждем ввод), onBlur проверяем еще раз и фейлим если точка в конце.
если говорить про onChange, тебе не нужно там keyCode, тебе нужно просто провалидировать значение поля полностью
@osipovvictor

Kendr
23.07.2018
08:24:51
Ему надо приостановить действие как только нажали вторую точку
const dots = [...str].filter((el) => el === '.').length
if (dots === 2)

Andrew
23.07.2018
08:25:23
так это два разных вопроса, разве нет? ?

Kendr
23.07.2018
08:25:42
Я хз
На онинпут

Andrew
23.07.2018
08:26:06
приостановить не возможно. можно в форму флаг поставить, что она не валидна, или стереть точку, что угодно. но onChange все равно сработает. и в нем нужно все равно сделать валидацию. потому что onChange мог быть стриггерен как угодно.

Victor
23.07.2018
08:28:29
спасибо всем, кто отозвался, есть годные идеи

Andrew
23.07.2018
08:28:37
фух.
пацаны, кажется мы справились
?

Kendr
23.07.2018
08:28:53
?

Sergey
23.07.2018
08:29:39
только будь готов к тому, что если ты будешь по нажатию изменять значение, передаваемое в value инпута, то у тебя каретка съезжать в конец будет через раз

Andrew
23.07.2018
08:47:03
поэтому делать это нужно по таймауту, либо onChange. но вообще, кажется каректу можно ставить на нужную позицию

Google

Max
23.07.2018
08:49:04
как человек прохававший кучу ебанины с подобными штуками рекомендую форматировать onBlur