169 похожих чатов

Можно я тоже с вопросом приду, который уже несколько часов

не могу решить)))

У меня есть user_role_id в user, имеет дефолтное значение 1, то есть когда создаем пользователя, то не передаем нигде явно роль и она проставляется в базе как 1)
Сейчас делаю тесты на чистую базу, фабрикой создаю роль в первом тесте, она получает айдишник 1, после этого транзакция откатывает эту роль, но счетчик инкремента записывает изменение. Во втором тесте так же фабрикой создаю эту роль, но она уже с айдишкой 2 идет) соответственно создание, которое по дефолту ставит значение 1 - падает)) как оттестровать этот момент?))

10 ответов

32 просмотра

не привязываться к Id, а при создании пользователя выбрать роль по slug или имени и взять из неё id от autoincrement можно уйти если использовать UUID или LUID в качеcтве primary key

E-V. Автор вопроса
Egor Gruzdev
не привязываться к Id, а при создании пользователя...

Это все через серьезные правки в сервисах)) не зотелось бы) варианты эти тоже вижу, но больно)))

E V.
Это все через серьезные правки в сервисах)) не зот...

какие серьезные правки, у вас в сервисах привязка к id записи в базе данных

E-V. Автор вопроса
Egor Gruzdev
какие серьезные правки, у вас в сервисах привязка ...

в Бд что то менять в плане добавения/удаления столбцов) а там создается с других мест с кучи еще надо будет там тоже все поправить)

E-V. Автор вопроса
Egor Gruzdev
какие серьезные правки, у вас в сервисах привязка ...

Все оказалось проще)) factory(UserRole::class)->create([UserRole::ID_COLUMN => 1]); То есть если счетчик поднял значение, то это не обязывает его запрещать запись в эту айди, если записи нету))

E V.
в Бд что то менять в плане добавения/удаления стол...

я предложил два варианта, UUID и LUID это крайний случай и если проект только начался. а также второй вариант, при добавление роли пользователю, найдите её в базе и из нее возомните ID или через методы отношений подвяжите роль пользователю или если очень хочется сбросить счетчик, то делайте truncate на таблице ролей

E V.
Все оказалось проще)) factory(UserRole::class)->cr...

нет не запрещает, но с каждым тестом он будет расти

E-V. Автор вопроса
Egor Gruzdev
я предложил два варианта, UUID и LUID это крайний ...

Да) вариантов много) просто для меня было удивлением что между тестами не чистятся счетчики при откате транзакцией)

E V.
Да) вариантов много) просто для меня было удивлени...

кто и главное зачем их чистить, ты можешь перед каждым тестом вообще делать refresh database, тогда вообще будет все пересоздаваться

E-V. Автор вопроса
Egor Gruzdev
кто и главное зачем их чистить, ты можешь перед ка...

так и делаю) но пока другие тесты работают они счетчик нагоняют. use RefreshDatabase; этот трейт отказывает изменение, но не откатывает счетчик)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта