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

menu: add a tmpl-spec for group with and w/o content #1543

Closed
wants to merge 1 commit into from
Closed

Conversation

qfox
Copy link
Member

@qfox qfox commented Jun 9, 2015

Fixes #1542
Ref #1523

@qfox
Copy link
Member Author

qfox commented Jun 9, 2015

Фейл не мой:

✘ modal normal plain [chrome-v35]
✘ modal normal visible [chrome-v35]

@sipayRT
Copy link
Contributor

sipayRT commented Jun 9, 2015

@narqo @dfilatov вы влили PR, в котором сломались gemini-тесты :( https://travis-ci.org/bem/bem-components/builds/66027954 Я не знаю как PR про checkbox сломал modal, но так и есть.

@narqo
Copy link
Member

narqo commented Jun 9, 2015

Судя по diff-картинкам там изменилась высота окна. Это точно мы? #1544

@sipayRT
Copy link
Contributor

sipayRT commented Jun 9, 2015

Да, какая-то фигня с высотой произошла. Видимо, достаточно переснять скриншоты

content : [
{
elem : 'group',
title : 'Group 1'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем нам тесты на menu__group без контента? Ну да, оно как-то отрендерится шаблоном, но зачем?

Пример/тест menu__group есть тут, так важно иметь для него отдельный файлик?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот ты спрашиваешь, а оно без того фикса падало совсем.

Про пример group — там написано theme disabled, ничего про групп не написано.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@narqo я еще думал про контент с чем-то не menu-item: строкой, другими блоками...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот ты спрашиваешь, а оно без того фикса падало совсем

Оно и не предполагалось (и не предполагается), что будет использовать без контента. Проверку на content добавили в качестве «хака» в процессе обсуждения. Я предлагаю относиться к этому не как к фиче, а как к «бекдору», про который знают только особо-любопытные и отчаянные. Никаких гарантий на уровне BEMJSON API и прочее.

Про пример group — там написано theme disabled, ничего про групп не написано

Можно просто файлик переименовать (с учетом сказанного выше, про «не предполагается»)? А то похоже на тесты ради бейджика в кавережде.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я еще думал про контент с чем-то не menu-item: строкой, другими блоками.

Мы такое не поддерживаем (во всех смыслах фразы ;). В menu могут быть menu-item или __group. Все остальное — на свой страх и риск. Обсуждали

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для наполнения пустого меню есть menu#setContent()

Который, к слову, абсолютно не брезгует произвольным bemjson.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Про пустую группу я выше написал: все, что сейчас нужно — доработать документацию и явно сформулировать, что пустых групп небывает.

Для наполнения пустого меню есть menu#setContent()

Который, к слову, абсолютно не брезгует произвольным bemjson

Во всей библиотеке, ни один блок не принимает bemjson — только HTML-строки или jQuery-коллекции (с правильно-подготовленным DOM, в соответсвии с документацией на блок), мы для этого jsdoc пишем. Запихнуть туда что угодно, в JS можно всегда — вопрос в том, что поддерживать такие кейсы, в долгосрочной перспективе, нас не хватит даже внутри Я.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@narqo Да, действительно перепутал. Имел ввиду, что он примет произвольный html/dom конечно же.
Не нашёл упоминания в jsdoc ограничения на правильно-подготовленным DOM, в соответсвии с документацией на блок. Зато сам метод тестируется при этом строкой.

Не вижу проблемы с оформительными элементами внутри menu. Любой другой блок Сам блок menu абсолютно не переживает за то как именно в его dom лежат menu-item, главное только что внутри. На полное отсутсвие таковых он тоже не жалуется.

Прошу прощения за оффтоп. Кажется здесь была речь про тестирование шаблонов.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не вижу проблемы с оформительными элементами внутри menu.

Просто для общего описания проблемы: когда ты декларируешь, что некий menu-item можно завернуть «во что-то» неизвестное, это означает, что рано или поздно, к тебе придут пользователи, у который после такого оборачивания, внезапно перестали (в продакшне) работать селекты/меню/etc. и это, по мнению окружающих, теперь твой блокер. Поэтому, во всех случаях, касающихся расширения скоупа знаний блока, мы за то, чтобы этого не делать. Про это все, надеюсь, будет сформулировано в #1208.

Но вообще, да, мы отклонились от оригинального замечания: я считаю, что проверки на работоспособность menu__group в рамках 20-theme-disabled достаточно. Можно переименовать файл в какой-нибудь 20-theme-disabled-group. Никаких тестов на пустые группы добавлять не надо.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

[спойлер]
Уже совсем скоро встречайте на ваших экранах обновление раздела принципов разработки, где все это будет подробно расписано. #1208 - следующий документ, который мы опубликуем чуть позже.

@blond
Copy link
Member

blond commented Jun 9, 2015

А мы ошибки в tmpl-specs умеем ловить, чтобы их проверять? кажется, что нет.

@zxqfox, расскажи что именно хочется? Сейчас ничего про отлов ошибок нет.

@qfox
Copy link
Member Author

qfox commented Jun 9, 2015

@blond когда какие-то блоки не требуют использования каких-то параметров, как обязательных, стоит кидать эти ошибки. Но если их кидать, то хорошо бы как-то их проверять, что они правильно кидаются. Т.е. ловить каким-то образом throw Error и, иногда, смотреть что там внутри.

@blond
Copy link
Member

blond commented Jun 9, 2015

@zxqfox А маски тут не подходят?

@qfox
Copy link
Member Author

qfox commented Jun 9, 2015

@blond думаю, что тут важно отличать обычный вывод от брошенных ошибок.

@blond
Copy link
Member

blond commented Jun 9, 2015

думаю, что тут важно отличать обычный вывод от брошенных ошибок.

Да, понял. Как сделать это просто — не знаю :(

@sipayRT
Copy link
Contributor

sipayRT commented Jun 10, 2015

@zxqfox rebase pls

@qfox
Copy link
Member Author

qfox commented Jun 10, 2015

@sipayRT так вроде же не только ребейз, там еще не до конца решили что с пустой группой делать.

@sipayRT
Copy link
Contributor

sipayRT commented Jun 10, 2015

решили же:

я считаю, что проверки на работоспособность menu__group в рамках 20-theme-disabled достаточно. Можно переименовать файл в какой-нибудь 20-theme-disabled-group. Никаких тестов на пустые группы добавлять не надо.

@qfox
Copy link
Member Author

qfox commented Jun 10, 2015

@sipayRT Это мнение @narqo, а не коллективное решение ;-)

@qfox
Copy link
Member Author

qfox commented Jun 10, 2015

Вообще, по большому счету не очень важно, что там внутри, если можно переопределить шаблон (а это возможно). Но дока, код и тесты должны быть синхронизированы, на мой взгляд. Поэтому, тут надо прийти к одному знаменателю: сейчас даже тесты и код расходятся: я не вижу причин не проверить, что код не падает на пустой группе. Но это мое личное мнение ;)

@sipayRT
Copy link
Contributor

sipayRT commented Jun 11, 2015

Это мнение @narqo, а не коллективное решение ;-)

@zxqfox ну тогда запишите куда-нибудь, что я тоже за этот вариант ;)

@aristov
Copy link
Contributor

aristov commented Jun 11, 2015

Обсудили с @narqo и @dfilatov. Решили, что:

проверки на работоспособность menu__group в рамках 20-theme-disabled достаточно. Можно переименовать файл в какой-нибудь 20-theme-disabled-group. Никаких тестов на пустые группы добавлять не надо.

Кроме того, нужно добавить в документацию о том, что поле content у элемента __group должно быть обязательным.

@qfox
Copy link
Member Author

qfox commented Jun 11, 2015

@aristov чуваки, код все равно поддерживает пустые группы. зачем этот рассинхрон?

@narqo
Copy link
Member

narqo commented Jun 11, 2015

@zxqfox это не рассинхрон:

If (something) is not set, behaviour of (something) is unspecified

@qfox
Copy link
Member Author

qfox commented Jun 11, 2015

@narqo nothing разве входит в something? отсутствие входит в наличие?

@narqo
Copy link
Member

narqo commented Jun 11, 2015

Я ничего не понял, но, кажется, в контексте обсуждения — да.

@aristov
Copy link
Contributor

aristov commented Jul 9, 2015

#1576

@aristov aristov closed this Jul 9, 2015
@aristov aristov removed the ready label Jul 9, 2015
@aristov aristov deleted the issues/1542@v2 branch July 23, 2015 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants