Sanes, то что не получится показать проект "в действии". Выйдет что результатом будет только код и покрытие тестами. Да и к тому же проект достаточно динамичный (онлайн игра), я просто боюсь что в будущем будут такие экшены, чтобы сымитировать которые придется писать слишком толстые тесты( надеюсь такого не произойдет
Дмитрий,да, с первым блоком разобрался :) Понял что нет смысла переходить, когда можно сразу пост запрос делать. А по второму и всем остальным, в основном такие гет переходы мне нужны были для того чтобы миддлвар срабатывал (там я некоторую логику прописывал которая должна выполняться везде и всегда, например обновление последней активности пользователя)
спасибо за подробный ответ :) Да, логика есть, но в основном всё же почти полностью связана с базами данных. Если так, то изменить так, если иначе, то вообще удалить и тд. Да, фактически действительно сервисы лишь чтобы перенести логику в другое место. Действительно, в сервисах редко один метод используется больше одного раза. Но хорошая ли это практика? Всё же в одном контроллере могут использоваться несколько методов сервиса, для меня это облегчает чтение своего же кода.
Просто я на 100% уверен что $user всегда и везде будет один и тот же - текущий из бд :) Можно ли как-то попросить у тебя небольшое ревью кода проекта? Могу оплатить. Проект небольшой, где-то 7-8 моделей, 15-20 роутов, 60 тестов.
jazzus, хм, конечно попробую, спасибо) надо осмыслить всё. Такие связи конечно вроде как не нужны пока что, но вот скоупы и связи я бы например вынес в трейты, оставив только логику. Кстати, если внутри одной модели, приходится обращаться к другой, это не сильно страшно? В основном это конечно Auth::user() почти везде.
dmitriy, я просто немного не понимаю как это делать технически (размазать логику). Экстендить от модели User класс, в котором будет какая только специфическая логика что ли. Но не будет доступно то что есть в других таких классах
jazzus, хм, интересно, спасибо, не знал) действительно работает. Получается все запросы в бд от модели возвращают такое? Еще наверное несуществующие страницы. А что еще можно протестировать этим assertNotFound?
dmitriy, Спасибо за комментарии :) Я пришёл к выводу что я слишком увлёкся архитектурой и абстракциями, что мой проект не настолько большой. Пришел к выводу что описывая эти сущности классами я тупо переписал eloquent модели просто убрав возможность модель сохранять саму себя в бд и передав эту обязанность репозиториям. И заменил простейшие и понятнейшие связи в eloquent на композиции. Ну и соответственно лишился огромного количества плюшек еще, всего лишь получив то что модель не отвечает за своё хранение что на уровне моего проекта сущий пустяк. Покрыв всё функциональными тестами я с лёгкостью смогу отладить если что-то пойдет не так, а зато код стал в десятки раз короче и понятнее без этого всего. Потратил в общем день жизни зря :( Нуу и...убрал бесполезные репозитории. Во-первых, я заметил что многие методы вызываются не более 1-2 раза типа getXXX или setXXX. Что спокойно можно переписать в локальные скоупы и это даже удобнее будет. В общем итог: у меня контроллер дёргает либо модель, либо методы/скоупы модели, если логика простейшая, либо я просто выношу в сервис, где он делает тоже самое а контроллер тоньше. В итоге когда всего 3 таких уровня то в разы проще писать. Понял, что если и будут когда-то проблемы из-за этого то я сам должен к ним прийти а не писать лишнее. Модели станут жирными конечно, не знаю с этим бороться.
neol, эх если бы было так просто :( Я знаю о том что это должно быть в начале, хотя пробовал и так и так. Ну в общем я использую как описал выше с get_class - в принципе работает. Все исключения библиотеки Assertion (у меня большинство их) имеют один и тот же класс что удобно. Остальные вроде как в основном это модели, с которыми вроде как разобрался тоже.
FanatPHP, Вот, я написал выше. Суть не в имени исключения. Это у меня там разные выкидывались и поэтому приводил другое. Даже если и совпадают то не работает. Вот еще информация: