Closed dhilt closed 6 years ago
@dhilt Да, тесты правда слишком избыточны. Не стоило наверное писать тесты на статическую часть верстки, то есть проверять абсолютно каждый html-тег и его параметры. Css-стили стили могут меняться, теги могут меняться - и если это будет происходить, придется попросту дублировать код. А ошибок с просто статическим рендером быть не должно. А вот та часть рендера компонента, которая зависит от роли пользователя, pending'а, i18n и прочих условий - вот только эти места и стоило покрыть тестами. Ну и методы на компоненте, их тестирование возможно стоило все же написать с помощью библиотеки sinon, как это описано в библиотеке enzyme. В общем да, я думаю можно смело большую часть кода с тестированием компонентов убирать.
Метод doAuthorize вынес.
Бранчи crud-methods
и test-frontend
чуточку параллельно развивались (но сольются без проблем). В crud-methods
есть что-то, чего нет в test-frontend
, также и с test-frontend
. Я к тому, что может удачным порядок сливания бранчей будет следующим: сначала crud-methods
в test-frontend
, далее test-frontend
в master
. Как-то так.
Следующей задачей тогда буду думать насчет новой БД-сущности и тем, как связать будущие pages
и users
.
А тесты я бы хотел кардинально видоизменить, полностью убрать всю статику как минимум. Может стоит открыть в некотором смысле экспериментальный бранч test-frontend-2
?
@dhilt Насчет Grunt/Webpack-переносов - да, конечно же мне интересно попробовать это. Не знаю хватит ли мне опыта и знаний со сборщиками чтобы справиться, но попытаться будет только в радость, вот.
Как только рабочий процесс должен выглядеть? Наверное, я форкаю репозиторий, далее у себя в локальном-скопированном репозитории пишу код (в каком-то специальном бранче?) и предлагаю pull request?
@BitDen Я согласен с твоим планом по dharmadict. На счет ui-scroll ты тоже прав, надо работать через fork и PR. Попробуй сперва разобраться с процессом npm test
, чтобы он не через grunt test
запускался, а через webpack. И так последовательно мы выкинем Grunt из проекта, сняв с него все задачи. Вот, например, история того, как я перенес сборку дистрибутива с grunt-browserify на webpack: https://github.com/angular-ui/ui-scroll/commits/master/webpack.config.js (наиболее содержателен первый комит). Но эта история неполноценна, так как webpack все равно запускается через Grunt. В общем, работы там действительно много.
С PR не торопись, давай вместе смотреть на то, что будет происходить в форке.
@dhilt Хорошо, значит бранч test-frontend-2
создам от test-frontend
и буду понемногу вычищать тесты.
Fork готов, может там создать дальнейшее обсуждение по ui-scroll и собственно вас коллаборатором сделать?
И пока небольшой уточняющий вопрос насчет webpack'а. Наверное в проекте должна появиться отдельная папка /webpack, в которой будет по файлу для теста/сервера/сборки? Или же весь код должен оказаться в одном файле, webpack.config.js? И в каком бранче писать все же?
@BitDen Да, делай меня коллаборатором. Можно пока пытаться уместить все в одном webpack.config.js, можно и папку создать. Если этот заход будет результативным, мы перед Pull request еще раз пройдемся по процедуре и перепишем ее начисто, вероятно даже с нуля в отдельном бранче, чтобы не сорить лишними комитами. Сейчас главное убедиться в том, что это возможно и любой ценой (любым количеством комитов) выполнить задачу в форке.
@dhilt Приглашение стать коллаборатором уже отправил.
Мы вплотную подошли к релизу, проделана большая работа, я до сих пор не успеваю посмотреть все по порядку. Мне кажется, у нас избыточные тесты для клиента, но пока не будем пытаться их упрощать, подождем соответствующего случая. Например, нам понадобится дописать компонент и мы сразу увидим, что мешает, а что полезно.
По API layer скажу сразу, что это была моя фантазия, не подкрепленная никаким опытомЮ но мне нравится итог. Только одно глобальное но у меня есть на этот счет, а именно doAuthorize. Это явно не контроллерный метод, но и не метод одного конкретного API. Это API helper. Давай вынесем этот метод в отдельный модуль ./prod/api/_helper.js или хотя бы ./prod/api/doAuthorize.js. И будет хорошо.
В ближайшее время я солью весь оставшийся код в мастер. После я выдам людям один переводческий логин-пароль и начнется новая эра.
На счет дальнейшего движения, я вижу создание нового типа БД сущностей, а имнно статей/страниц (новый тип pages). Туда должны будут переместиться описания Переводчиков, а также страница О проекте. Описание переводчиков должно быть выдрано из типа users и перермещено в pages. О том, как организовать связь между сущностями, предстоит подумать, изучить принятые для эластика подходы, заложить расширение на будущее...
Также необходимо дописать механизм миграций. Накат миграций (не db-reset, а новый db-migrate) должен учитывать прежние запуски и прогонять только новые миграции, сразу же отмечая их как выполненные, чтобы исключить повторный прогон при следующем db-migrate.
К этому неплохо бы дописать механизм отката миграций, но в ближайшее время мы точно не будем этим заниматься. Еще я уверен, что все это уже написано и можно поискать готовые решения. Просто наши текущие миграции очень тяжелые, и 90% кода уникальны относительно общих инфраструктурных миграционных задач.
Хотел тебя попросить посмотреть на https://github.com/angular-ui/ui-scroll. Я хочу перенести сборку с Grunt на Webpack, но никак не могу заставить себя заняться этим. Не так давно я перенес на Webpack компиляцию дистрибутива и это был значительный кусок задачи по отказу от Grunt, но нужно еще перенестии все остальное, все Grunt-задачи, фигурирующие в package.json в разделе scripts. Было ли бы тебе интересно взглянуть на это?