[web] remove mentions from chat message editing (#35761)

GitOrigin-RevId: 6cd27490485196b82a9c4d9ffa19ba5d8e10922d
This commit is contained in:
Kristina
2026-09-17 11:36:38 +00:00
committed by Copybot
parent 94cad14caf
commit 4e2840e247
7 changed files with 56 additions and 240 deletions
@@ -1,84 +0,0 @@
import ChatPane from '@/features/chat/components/chat-pane'
import {
EditorProviders,
makeProjectProvider,
USER_ID,
USER_EMAIL,
} from '../../../helpers/editor-providers'
import { mockProject } from '../../source-editor/helpers/mock-project'
describe('<MessageContent /> editing', function () {
const message = {
id: 'msg_1',
content: 'hello world',
user: {
id: USER_ID,
first_name: 'Test',
last_name: 'User',
email: USER_EMAIL,
},
timestamp: new Date('2025-01-01T00:00:00.000Z').getTime(),
}
beforeEach(function () {
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
window.metaAttributesCache.set('ol-splitTestVariants', {
'chat-edit-delete': 'enabled',
})
cy.intercept('GET', '/project/*/messages*', [message]).as('getMessages')
cy.intercept('POST', '/project/*/messages/msg_1/edit', {}).as('editMessage')
cy.mount(
<EditorProviders
providers={{ ProjectProvider: makeProjectProvider(mockProject()) }}
>
<ChatPane />
</EditorProviders>
)
cy.wait('@getMessages')
cy.findByText('hello world')
})
function openEditor() {
cy.get('.message-dropdown-menu-btn').click({ force: true })
cy.findByText('Edit').click({ force: true })
return cy.findByRole('textbox', { name: 'Edit message' })
}
it('saves an edited message on Enter', function () {
openEditor().type('{selectAll}edited message{enter}', { force: true })
cy.wait('@editMessage')
.its('request.body.content')
.should('equal', 'edited message')
})
it('saves an edited message with the Save button', function () {
openEditor().type('{selectAll}edited message', { force: true })
cy.findByRole('button', { name: 'Save' }).click({ force: true })
cy.wait('@editMessage')
.its('request.body.content')
.should('equal', 'edited message')
})
it('cancels editing on Escape without saving', function () {
openEditor().type('{selectAll}discarded{esc}', { force: true })
// Editor closes and the original message is shown again.
cy.findByRole('textbox', { name: 'Edit message' }).should('not.exist')
cy.findByText('hello world').should('exist')
cy.get('@editMessage.all').should('have.length', 0)
})
it('cancels editing with the Cancel button', function () {
openEditor().type('{selectAll}discarded', { force: true })
cy.findByRole('button', { name: 'Cancel' }).click({ force: true })
cy.findByRole('textbox', { name: 'Edit message' }).should('not.exist')
cy.findByText('hello world').should('exist')
cy.get('@editMessage.all').should('have.length', 0)
})
})
@@ -12,8 +12,6 @@ import { UserProvider } from '@/shared/context/user-context'
import { ModalsContextProvider } from '@/features/ide-react/context/modals-context'
import { SplitTestProvider } from '@/shared/context/split-test-context'
import { EditorProviders } from '../../../helpers/editor-providers'
describe('<MessageGroup />', function () {
function ChatProviders({
children,
@@ -29,17 +27,15 @@ describe('<MessageGroup />', function () {
}
return (
<EditorProviders>
<UserProvider>
<ModalsContextProvider>
<SplitTestProvider>
<ChatContext.Provider value={mockContextValue as any}>
{children}
</ChatContext.Provider>
</SplitTestProvider>
</ModalsContextProvider>
</UserProvider>
</EditorProviders>
<UserProvider>
<ModalsContextProvider>
<SplitTestProvider>
<ChatContext.Provider value={mockContextValue as any}>
{children}
</ChatContext.Provider>
</SplitTestProvider>
</ModalsContextProvider>
</UserProvider>
)
}
@@ -156,7 +152,7 @@ describe('<MessageGroup />', function () {
expect(screen.queryByText('(edited)')).to.not.exist
})
it('renders message being edited with a CodeMirror input and action buttons', function () {
it('renders message being edited with textarea and action buttons', function () {
const messageBeingEdited: MessageType = {
content: 'original message content',
user: currentUser,
@@ -170,8 +166,8 @@ describe('<MessageGroup />', function () {
</ChatProviders>
)
const editor = screen.getByRole('textbox', { name: 'Edit message' })
expect(editor.textContent).to.contain('original message content')
const textarea = screen.getByDisplayValue('original message content')
expect(textarea.tagName.toLowerCase()).to.equal('textarea')
screen.getByRole('button', { name: 'Cancel' })
screen.getByRole('button', { name: 'Save' })