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

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

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

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

10 ответов

13 просмотров

не привязываться к 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; этот трейт отказывает изменение, но не откатывает счетчик)

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Any electron dev here?
Sayanth Tezro
12
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта