J’ai enquêté et trouvé pourquoi le rspec a échoué.
Le spec original affirme un composant avec la propriété expect(page).to have_css(\".user-stream-item [data-post-id='#{post_1.id}']\").
Cependant, le #{post_1.id} a été changé en reaction_user_id dans le dernier commit, ce qui a provoqué une inadéquation, entraînant l’échec.
La pensée initiale était de changer id pour répondre aux besoins de l’API, cependant, j’ai manqué le fait que l’id est également utilisé dans PostList comme post_id, comme suit :
<PostList
@posts={{@model}}
@fetchMorePosts={{@controller.loadMore}}
@emptyText={{i18n "notifications.empty"}}
@additionalItemClasses="user-stream-item"
@showUserInfo={{false}}
class="user-stream"
>
Et l’id utilisé dedans est mappé dans le composant post.gjs
data-post-id={{@post.id}}
data-topic-id={{@post.topicId}}
data-user-id={{@post.user_id}}
Donc, le comportement original de l’id ne devrait pas être changé, car cela pourrait causer de graves incohérences dans la postList, ce qui mène directement à l’échec du rspec hier.
Comme solution de contournement, il pourrait y avoir une autre façon de résoudre ce problème :
Ajouter un nouveau champ reaction_user_id: reaction.id lors de flattenForPostList, puis modifier la fonction #getLastIdFrom(array) de return array.length ? array[array.length - 1].id : null; à return array.length ? array[array.length - 1].reaction_user_id.
TL;DR;
Le reaction_id, le post_id, et maintenant le reaction_user_id sont totalement différents, mais l’id utilisé dans le composant postList doit être post_id. Alors que l’id nécessaire pour récupérer la page suivante devrait être reaction_user_id, ce qui est extrêmement déroutant.
@nat