Регистрация  |  Вход

Права доступа к тест записи в тестах

Впервые столкнулся с ситуацией, когда приходится что-то делать с правами доступа к записи в тестах.

Ситуация такая (полностью не разобрал, но вроде так):
СФ юзер создает запись, а Коммунити юзер создает вторую запись, связанную с первой.
Есть Шеринг рулс дающий КоммЮзеру доступ к родительской записи для того, чтобы к ней обратиться при создании связанной записи.

Ну так вот, в тестах можно создать обе записи, если ранить как СФ пользователь.
Но сценарий требует прогона под КоммЮзером, ок создаем его, но он не может создать первую запись (такого не предусмотрено с сценарии) и код падает где-то вдали на каком-то тригере и ВалРуле.

Хорошо, создаем первую запись, затем раним как КомЮзер и пытаемся создать вторую. Но у КомЮзера нет права обратиться к первой записи.

Тогда пытаемся воссоздать ситуацию, описанную в ШерингРулсе. Но ШерРулс работает с группой.
Хорошо, пробуем в тесте выкверить эту группу (SeeAllData=true нужно для этого?) и создать ГрупМембер запись.
Здесь код падает по знакомой причине: система не хочет создавать ГрупМембер запись вместе с создаваемым где-то вначале Эккаунтом. Нужно "отстреливать" создание ГрупМембер записи в асинхрон, но это тест...

Сталкивались ли вы с подобной ситуацией: воссоздание прав доступа к записи для КоммЮзера в тестах?

спасибо

Впервые столкнулся с ситуацией, когда приходится что-то делать с правами доступа к записи в тестах.

Ситуация такая (полностью не разобрал, но вроде так):
СФ юзер создает запись, а Коммунити юзер создает вторую запись, связанную с первой.
Есть Шеринг рулс дающий КоммЮзеру доступ к родительской записи для того, чтобы к ней обратиться при создании связанной записи.

Ну так вот, в тестах можно создать обе записи, если ранить как СФ пользователь.
Но сценарий требует прогона под КоммЮзером, ок создаем его, но он не может создать первую запись (такого не предусмотрено с сценарии) и код падает где-то вдали на каком-то тригере и ВалРуле.

Хорошо, создаем первую запись, затем раним как КомЮзер и пытаемся создать вторую. Но у КомЮзера нет права обратиться к первой записи.

Тогда пытаемся воссоздать ситуацию, описанную в ШерингРулсе. Но ШерРулс работает с группой.
Хорошо, пробуем в тесте выкверить эту группу (SeeAllData=true нужно для этого?) и создать ГрупМембер запись.
Здесь код падает по знакомой причине: система не хочет создавать ГрупМембер запись вместе с создаваемым где-то вначале Эккаунтом. Нужно "отстреливать" создание ГрупМембер записи в асинхрон, но это тест...

Сталкивались ли вы с подобной ситуацией: воссоздание прав доступа к записи для КоммЮзера в тестах?

спасибо

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

тест не просто должен "покрывать" код и даже не только "проверять" результаты.

тест должен имитировать, восстанавливать реальную цепочку событий, происходящих при использовании приложения. Фактически - это имитация программными средствами реального использования приложения, с воссоздаем условий максимально приближенными к реальным (т.к. например, юзеры под определенными профайлами и правами!).
В идеале тест должен отрабатывать те сценарии использования, которые описаны в Use Stories, а если запись имеет определенный "жизненный цикл" включая принадлежность к Очереди - по прогонять запись по всему циклу.

При наличии таких тестов, достаточно просто нажать на одну кнопку - и ты знаешь ответ, работает или нет твое приложение как положено, и "где-что" упало.

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

тест не просто должен "покрывать" код и даже не только "проверять" результаты.

тест должен имитировать, восстанавливать реальную цепочку событий, происходящих при использовании приложения. Фактически - это имитация программными средствами реального использования приложения, с воссоздаем условий максимально приближенными к реальным (т.к. например, юзеры под определенными профайлами и правами!). 
В идеале тест должен отрабатывать те сценарии использования, которые описаны в Use Stories, а если запись имеет определенный "жизненный цикл" включая принадлежность к Очереди - по прогонять запись по всему циклу.

При наличии таких тестов, достаточно просто нажать на одну кнопку - и ты знаешь ответ, работает или нет твое приложение как положено, и "где-что" упало.