Я провёл расследование и выяснил, почему не прошли тесты rspec.
Исходный тест проверяет наличие компонента с атрибутом expect(page).to have_css(".user-stream-item [data-post-id='#{post_1.id}']").
Однако в последнем коммите атрибут data-post-id был заменён на reaction_user_id, что привело к несоответствию и, как следствие, к падению теста.
Первоначальная идея заключалась в том, чтобы изменить id для соответствия требованиям API. Однако я упустил тот факт, что id также используется в компоненте PostList как post_id, как показано ниже:
<PostList
@posts={{@model}}
@fetchMorePosts={{@controller.loadMore}}
@emptyText={{i18n "notifications.empty"}}
@additionalItemClasses="user-stream-item"
@showUserInfo={{false}}
class="user-stream"
>
А атрибут id, используемый здесь, мапится в компоненте post.gjs:
data-post-id={{@post.id}}
data-topic-id={{@post.topicId}}
data-user-id={{@post.user_id}}
Таким образом, исходное поведение id не должно изменяться, так как это может вызвать серьёзные несоответствия в PostList, что и привело к падению тестов rspec вчера.
В качестве обходного решения существует другой способ:
Добавить новое поле reaction_user_id: reaction.id в flattenForPostList, а затем изменить строку return array.length ? array[array.length - 1].id : null; в функции #getLastIdFrom(array) на return array.length ? array[array.length - 1].reaction_user_id.
TL;DR:
reaction_id, post_id и теперь reaction_user_id — это совершенно разные идентификаторы, но id, используемый в компоненте PostList, должен быть post_id. В то же время id, необходимый для загрузки следующей страницы, должен быть reaction_user_id, что крайне запутанно.
@nat