Alan
04.04.2018
20:34:40
имхо для паблик образа норм, а когда часто собирать приватное надо то не удобен
но его настроить две минуты так что попробуй
Bohdan
04.04.2018
20:36:36
а собрать локально и запушить? или оно не так работает?
заранее сорри за возможно туповатые вопросы, ребят
Google
Sergey
04.04.2018
21:00:02
но лучше на CI собирать
Bohdan
04.04.2018
21:00:20
ну это само собой оптимальный вариант
Sergei
05.04.2018
07:15:28
Привет, мне нужно создать в buildForm поле с атрибутом name в виде массива (типа $form->getData() => ['age' => ['lte' => 10, 'gte' => 20]] )
->add('age[lte]', IntegerType::class, [
'label' => 'Age to',
'constraints' => [
new NotBlank(),
new GreaterThan(0),
],
])
передаю age[lte] но первый параметр метода add() не может содержать символы [], как это можно сделать?
Icewild
05.04.2018
07:16:54
age.lte?
Sergei
05.04.2018
07:17:53
The name "age.gte" contains illegal characters. Names should start with a letter, digit or underscore and only contain letters, digits, numbers, underscores ("_"), hyphens ("-") and colons (":").
любые намеки что age - это масив symfony не устраивает
Pavel
05.04.2018
07:30:02
@fes0r слушай, а как в твоем бандле сделать что-то типо наллбл поля, чтобы если поля нет то его и не будут проверять?
Andrew
05.04.2018
07:30:30
Sergei
05.04.2018
07:32:13
спс понял
Andrew
05.04.2018
07:39:39
спс понял
Если мапишь на структуру данных, проще всего заюзать property path
Shmaltorhbooks
05.04.2018
07:41:43
описываешь плоскую структуру формы, а у полей пишешь
property_path => age.lte
property_path => age.gte
Sergei
05.04.2018
07:42:38
сенк)
Google
Anarbek
05.04.2018
07:57:18
Bohdan
05.04.2018
08:07:48
не за что)
Sergey
05.04.2018
08:11:30
Pavel
05.04.2018
08:13:14
Max
05.04.2018
08:21:42
а кто у себя на проекте делает "глоссарий" ошибок которые отдаются АПИ-шкой, тип такого:
https://www.twilio.com/docs/api/errors/debugging#debugging-calls-to-the-rest-api
https://www.twilio.com/docs/api/errors
где, на каждую ошибку - свой уникальный код, а http коды - обозначают чисто группу?
вопрос как вы это делали? просто список где-то в конфиге? или же код прописан в самих исключениях? как это в доку добавляется и тп?
Sergey
05.04.2018
08:31:04
Max
05.04.2018
08:34:20
> берешь и добавляешь в доку)
кэп) меня больше интересует как это хранить и как лучше это менеджить, проще всего массив и не париться, но если делать через интерфейс придется еще добавлять всякие велосипеды чтобы проверять уникальность, выводить все и тп
Konstantin
05.04.2018
08:36:47
тебя проклянут за такое
никому не интересно поддерживать целую энциклопедию ошибок
делай проще )
Max
05.04.2018
08:39:36
Bohdan
05.04.2018
08:44:26
@fes0r я опять про докер
у тебя база каждый раз поднимается из фикстур? али как?
Sergey
05.04.2018
08:44:41
да, из фикстур
локально если
Bohdan
05.04.2018
08:44:47
я вижу, что она добавляется только для дев и для тестового
Sergey
05.04.2018
08:44:52
но ты всегда можешь сделать снэпшет базы и восстановить
Bohdan
05.04.2018
08:44:57
ну и для тестового в tmpfs
у меня где-то валяется пример с другого проекта с volume для mysql
Boris
05.04.2018
08:52:27
Привет всем, чот туплю, подскажите я же могу используя symfony/serializer из json в сущность загнать поле ArrayCollection?
Так что-бы из массива сразу залетели в ArrayCollection именно сущности.
Google
Vladislav
05.04.2018
08:54:15
а ты попробовал?
попробуй и увидишь)
Boris
05.04.2018
08:54:42
Пробовал, не получается :)
Но может я что-то не так делал
Vladislav
05.04.2018
08:54:55
что пишет?
а стой, ты обратно хочешь. я не так прочитал.
Boris
05.04.2018
08:58:01
Да, десериализацию хочу, а не сериализацию :)
Залетает вот такое поле:
"comments": [
{
"text": "Duis aute irure dolor in reprehenderit",
"creatorId": 3,
"createdAt": "2018-08-03 12:05:40"
},
{
"text": "Lorem ipsum dolor sit amet",
"creatorId": 5,
"createdAt": "2013-12-08 14:08:10"
}
]
В сериализаторе есть ArrayDenormalizer.
В сущности есть такие методы:
/**
* @return Collection|Comment[]
*/
public function getComments(): Collection
{
return $this->comments;
}
public function addComment(Comment $comment): void
{
if ($this->comments->contains($comment)) {
return;
}
$this->comments[] = $comment;
$comment->setComplaint($this);
}
Я думаю сделать setComments который будет принимат массив, циклом пробегать и делать сущности. Но звучит это как-то не очень.
Konstantin
05.04.2018
09:02:19
Slava
05.04.2018
09:05:11
я заливаю фикстуры 1 раз в bootstrap тестов , задем делаю mysqldump и этот дамп уже в setUp в родительском классе через конкольную утилиту mysql заливаю.
Max
05.04.2018
09:05:15
Slava
05.04.2018
09:06:36
paratest ктото использует для распараллеливания phpunit тестов?
Konstantin
05.04.2018
09:09:51
нука
ща до компа доберусь накидаю
f4rt~
05.04.2018
09:09:54
Slava
05.04.2018
09:10:55
я тоже использую) могу поделиться опытом распараллеливания тестовых баз данных для функциональных тестов, если кому интересно
Pavel
05.04.2018
09:14:52
Slava
05.04.2018
09:15:17
сейчас чайку попью и напишу
юнит тесты бытро выполняются, а вот функциональные должно
когда начал копать в сторону как распараллелить, то наткнулся на paratest
Shmaltorhbooks
05.04.2018
09:28:09
юниты - да, 3% времени выполняются от всех тестов
Google
Slava
05.04.2018
09:28:31
вся сложность - это сделать так, чтобы каждый тест работал со своей копией тестовой БД
в config_test.yml вот такие настройки
https://pastebin.com/TamtKYaZ
объявили сервис, который будет динамически из пула тестовых БД подставлять нужную динамически:
dbname: "@=service('database_pool').get()"
т.е. это не 1 раз выполнится и закешируется в контейнере на диске, а будет каждый раз дергаться
каждый вызов сервиса doctrine.dbal.default_connection будет обращаться ко своей БД
https://pastebin.com/DpRQxC3W - не самый красивый код, но работает
Pavel
05.04.2018
09:32:42
это ExpressionLanguage Component?
Slava
05.04.2018
09:34:50
не могу сказать, натолкнулся в инете года 2 назад
и оно заработало!
DatabasePool - заливает фикстуры, дампит БД в файл, создает нужное количество тестовых БД.
Pavel
05.04.2018
09:35:45
Пиздато
Shmaltorhbooks
05.04.2018
09:36:27
таки да, expression language
Pavel
05.04.2018
09:37:07
о дивиный мир symfony
Slava
05.04.2018
09:37:20
https://pastebin.com/XTxvaJpy - это базовый класс для всех функциональных тестов
в setUp для каждого теста будет подготовлена одна из свежих тестовых БД
Shmaltorhbooks
05.04.2018
09:38:48
а какой прирост от распалеливания, например, на два потока?
Google
Shmaltorhbooks
05.04.2018
09:38:56
подозвеваю, что не ровно в два раза
Konstantin
05.04.2018
09:39:26
Slava
05.04.2018
09:39:29
https://pastebin.com/7a108ARM
Pavel
05.04.2018
09:39:36
Slava
05.04.2018
09:39:53
и последний компонент это консольная команда для подготовки всего этого
Konstantin
05.04.2018
09:40:09
нука
дешево сердито. зато иде подсвечивает текст ошибки по ctrl )
Slava
05.04.2018
09:40:44
в этоге я себе такой alias добавил:
Shmaltorhbooks
05.04.2018
09:41:53
то есть своя база будет подсовываться для каждого метода test*()?
Slava
05.04.2018
09:41:54
alias paratest='php bin/console test:init:database:pool -e=test 10 && vendor/bin/paratest -f -p 10 —max-batch-size 5 —coverage-html=build/coverage'
да
Shmaltorhbooks
05.04.2018
09:42:34
при таком раскладе @depends тесты скорее всего будут фэйлиться?
Slava
05.04.2018
09:42:53
тесты должы быть изолированы
Pavel
05.04.2018
09:43:03
Slava
05.04.2018
09:43:14
@depends имхо от лукавого
в любом случае в тестах прирост в 5-7 раз по времени я получил функциональных и остался доволен)
Pavel
05.04.2018
09:44:45
Slava
05.04.2018
09:45:28
во всех книгах по тестированию, что я читал пишут, что тесты должны быть изолированы
здесь ты можешь сайдэффекты ловить
+ты не можешь из запустить изолировано (к примеру проверить только удаление)