Size: a a a

2020 October 08

ПГ

Павел Г. in Laravel Pro
Roman Kolosov
в том и вопрос
Если все работает, в чем проблема пробежаться по колллекции и найти среднее самому?
источник

ПГ

Павел Г. in Laravel Pro
ПРавда тогда это будет увеличиваться во времени с "годами" )
источник

ПГ

Павел Г. in Laravel Pro
а так, можно еще в select raw и мой запрос
источник

ПГ

Павел Г. in Laravel Pro
Roman Kolosov
всем привет, может кто подсказать как взять средне арифметическое от вот такой штуки, как то не получается совсем
А вообще в этом запросе порядок нарушен.
Вы запрашиваете количество средних, а вам надо среднее он количества
источник

DS

Dmitry S in Laravel Pro
Всем привет!

Как вы тестируете сложные кондишены вашего приложения?

У меня есть пользователь, компания, отдел компании и тд, потом права пользоателя. Всё это куча моделей в БД. Например, надо протестировать что пользователь может сделать какое-то действие с отделом компании, потом отобрать у него права и проверить, что теперь действие не авторизовано. Плюс таких кейсов может быть штук 5 в рамках одного FeatureTest'а.

Сейчас пишу создание пользователя, компании и тд в методе setUp(), в качестве БД использую sqlite in memory. Но выглядит немного костыльно. Можно ли, например написать несколько методов и выполнять их последовательно? Например:
testUserCreated();
testCompanyCreated();
testUserIsAllowedToAccessCompany();
...


На сколько я знаю, это не канон в phpunit'е (который работает под капотом тестов Laravel)

Заранее спасибо
источник

AK

Alex Kovalchuk in Laravel Pro
Dmitry S
Всем привет!

Как вы тестируете сложные кондишены вашего приложения?

У меня есть пользователь, компания, отдел компании и тд, потом права пользоателя. Всё это куча моделей в БД. Например, надо протестировать что пользователь может сделать какое-то действие с отделом компании, потом отобрать у него права и проверить, что теперь действие не авторизовано. Плюс таких кейсов может быть штук 5 в рамках одного FeatureTest'а.

Сейчас пишу создание пользователя, компании и тд в методе setUp(), в качестве БД использую sqlite in memory. Но выглядит немного костыльно. Можно ли, например написать несколько методов и выполнять их последовательно? Например:
testUserCreated();
testCompanyCreated();
testUserIsAllowedToAccessCompany();
...


На сколько я знаю, это не канон в phpunit'е (который работает под капотом тестов Laravel)

Заранее спасибо
ты пользователя через factory создаешь?
источник

DS

Dmitry S in Laravel Pro
либо через factory, либо через cli (у меня для этого есть команда) либо просто через "репозиторий" с передачей атрибутов класса. А какое значение это имеет в контексте моего вопроса?
источник

AK

Alex Kovalchuk in Laravel Pro
Dmitry S
Всем привет!

Как вы тестируете сложные кондишены вашего приложения?

У меня есть пользователь, компания, отдел компании и тд, потом права пользоателя. Всё это куча моделей в БД. Например, надо протестировать что пользователь может сделать какое-то действие с отделом компании, потом отобрать у него права и проверить, что теперь действие не авторизовано. Плюс таких кейсов может быть штук 5 в рамках одного FeatureTest'а.

Сейчас пишу создание пользователя, компании и тд в методе setUp(), в качестве БД использую sqlite in memory. Но выглядит немного костыльно. Можно ли, например написать несколько методов и выполнять их последовательно? Например:
testUserCreated();
testCompanyCreated();
testUserIsAllowedToAccessCompany();
...


На сколько я знаю, это не канон в phpunit'е (который работает под капотом тестов Laravel)

Заранее спасибо
я думаю лучше такие штуки рознести по нескольких тестах
- прописать в factory state с ролью (также этот стейт может создавать пользователя в компании)
- в каждом тесте создать пользователя с ролью и протестировать
источник

DS

Dmitry S in Laravel Pro
у меня feature тесты, я ими тестирую API, все сущности кроме юзера создаются по API
источник

DS

Dmitry S in Laravel Pro
Как вариант, протестировать все контроллеры АПИ по очереди, а потом уже эту кашу, завязанную на отношениях просто создать внути фактори или еще где-нибудь и тестировать только АПИ связанное с пермишенами, но это получится слишком детализированное тестирование. Думаю, что должен быть инструмент тестирования некого "сценария" пользования
источник

AK

Alex Kovalchuk in Laravel Pro
Dmitry S
у меня feature тесты, я ими тестирую API, все сущности кроме юзера создаются по API
когда ты тестируеш один апи запрос где должен быть пользователь в компании и с правом писать статти не нужно в одном тесте создавать пользователя через api лучше подшотовить пользователя с правами, в компаниии и тестировать только api запрос например

User::factory()->companyRole(‘admin’)->create()

post /article - тип проверяем запрос

и другой тест

User::factory()->companyRole(‘nub’)->create()

post /article - тип проверяем что сервер скажет 403
источник

DS

Dmitry S in Laravel Pro
Я понимаю
источник

DS

Dmitry S in Laravel Pro
Вот есть у меня User hasMany Company hasMany Channel hasMany Transport
источник

AK

Alex Kovalchuk in Laravel Pro
Dmitry S
Я понимаю
просто при таком комбинированом тэсте это как по мне уже в сторону selenium тестов
источник

DS

Dmitry S in Laravel Pro
как в тесте проверить без 100500 строк boilerplate'а, что юзер может взаимодействовать по API с Transport, потом забрать права и проверить, что не теперь не может этого делать?
источник

DS

Dmitry S in Laravel Pro
Я тоже думаю, что это типа Selemiun, но мне JS не нужен
источник

DS

Dmitry S in Laravel Pro
может есть какой-нибудь другой php фреймворк для тестирования?
источник

DS

Dmitry S in Laravel Pro
Codeception?
источник

AK

Alex Kovalchuk in Laravel Pro
Dmitry S
Вот есть у меня User hasMany Company hasMany Channel hasMany Transport
если для существования пользователя нужны все эти связи то ты из создаешь уже в бозовам factory
если не обезательно и можно без них то ты добавляешь state и уже там создешь все отношения
источник

AK

Alex Kovalchuk in Laravel Pro
Dmitry S
как в тесте проверить без 100500 строк boilerplate'а, что юзер может взаимодействовать по API с Transport, потом забрать права и проверить, что не теперь не может этого делать?
не надо 2 нараз проверять в одном тесте
лучге проверить что с такими правами может в одном а что не может в другом
иначе сам тест будет очень сложным и хрупким
источник