Ich habe untersucht und herausgefunden, warum der rspec fehlgeschlagen ist.
Die ursprüngliche Spezifikation prüft eine Komponente mit der Eigenschaft expect(page).to have_css(\".user-stream-item [data-post-id='#{post_1.id}']\").
Allerdings wurde #{post_1.id} im letzten Commit in reaction_user_id geändert, was zu einer Nichtübereinstimmung führte und den Fehler verursachte.
Der ursprüngliche Gedanke war, id so zu ändern, dass es den API-Anforderungen entspricht. Ich habe jedoch übersehen, dass id auch in PostList als post_id verwendet wird, wie folgt:
<PostList
@posts={{@model}}
@fetchMorePosts={{@controller.loadMore}}
@emptyText={{i18n "notifications.empty"}}
@additionalItemClasses="user-stream-item"
@showUserInfo={{false}}
class="user-stream"
>
Und die darin verwendete id wird in der Komponente post.gjs abgebildet:
data-post-id={{@post.id}}
data-topic-id={{@post.topicId}}
data-user-id={{@post.user_id}}
Daher sollte das ursprüngliche id-Verhalten nicht geändert werden, da dies zu schwerwiegenden Nichtübereinstimmungen in der postList führen kann, was direkt zum gestrigen Ausfall des rspec führte.
Als Workaround gibt es möglicherweise einen anderen Weg, dies zu lösen:
Hinzufügen eines neuen Feldes reaction_user_id: reaction.id, wenn flattenForPostList aufgerufen wird, und dann Ändern von return array.length ? array[array.length - 1].id : null; in der Funktion #getLastIdFrom(array) zu return array.length ? array[array.length - 1].reaction_user_id.
Zusammenfassend:
Die reaction_id, post_id und nun die reaction_user_id sind völlig unterschiedlich, aber die id, die in der postList-Komponente benötigt wird, muss post_id sein. Während die id, die zum Abrufen der nächsten Seite benötigt wird, reaction_user_id sein muss, was äußerst verwirrend ist.
@nat