Ho indagato e ho scoperto perché l’rspec è fallito.
La specifica originale sta verificando un componente con la proprietà expect(page).to have_css(\".user-stream-item [data-post-id='#{post_1.id}']\").
Tuttavia, il #{post_1.id} è stato modificato in reaction_user_id nell’ultimo commit, il che ha causato una discrepanza, portando al fallimento.
Il pensiero originale era quello di cambiare id per soddisfare le esigenze dell’API, tuttavia, ho perso di vista il fatto che l’id è usato anche in PostList come post_id, come segue:
<PostList
@posts={{@model}}
@fetchMorePosts={{@controller.loadMore}}
@emptyText={{i18n "notifications.empty"}}
@additionalItemClasses="user-stream-item"
@showUserInfo={{false}}
class="user-stream"
>
E l’id utilizzato in esso è mappato nel componente post.gjs
data-post-id={{@post.id}}
data-topic-id={{@post.topicId}}
data-user-id={{@post.user_id}}
Quindi, il comportamento originale di id non dovrebbe essere modificato, poiché ciò potrebbe causare gravi discrepanze nella postList, che porta direttamente al fallimento dell’rspec di ieri.
Come soluzione alternativa, potrebbe esserci un altro modo per risolvere questo problema:
Aggiungere un nuovo campo reaction_user_id: reaction.id quando si esegue flattenForPostList, quindi modificare la funzione #getLastIdFrom(array) da return array.length ? array[array.length - 1].id : null; a return array.length ? array[array.length - 1].reaction_user_id.
TL:DR;
L’reaction_id, il post_id e ora il reaction_user_id sono totalmente diversi, ma l’id utilizzato nel componente postList deve essere post_id. Mentre l’id necessario per recuperare la pagina successiva dovrebbe essere reaction_user_id, il che è estremamente sconcertante.
@nat