fix editing mode

This commit is contained in:
Paul Mineev
2022-05-10 14:06:02 -05:00
committed by Umputun
parent b82ed825f7
commit 9053668cfe
3 changed files with 25 additions and 10 deletions
@@ -2,7 +2,7 @@ import { h } from 'preact';
import '@testing-library/jest-dom';
import { CommentActions, Props } from './comment-actions';
import { render } from 'tests/utils';
import { screen, waitFor } from '@testing-library/preact';
import { fireEvent, screen, waitFor } from '@testing-library/preact';
function getProps(): Props {
return {
@@ -14,14 +14,15 @@ function getProps(): Props {
readOnly: false,
editing: false,
replying: false,
onCopy() {},
onDelete() {},
onTogglePin() {},
onToggleReplying() {},
onHideUser() {},
onBlockUser() {},
onUnblockUser() {},
onDisableEditing() {},
onCopy: jest.fn(),
onDelete: jest.fn(),
onToggleEditing: jest.fn(),
onTogglePin: jest.fn(),
onToggleReplying: jest.fn(),
onHideUser: jest.fn(),
onBlockUser: jest.fn(),
onUnblockUser: jest.fn(),
onDisableEditing: jest.fn(),
editable: false,
editDeadline: undefined,
};
@@ -32,6 +33,9 @@ describe('<CommentActions/>', () => {
beforeEach(() => {
props = getProps();
});
afterEach(() => {
jest.resetAllMocks();
})
it('should render "Reply"', () => {
render(<CommentActions {...props} />);
@@ -139,5 +143,13 @@ describe('<CommentActions/>', () => {
expect(screen.getByTestId('comment-actions-additional').children[3]).toHaveTextContent('Block');
expect(screen.getByTestId('comment-actions-additional').children[4]).toHaveTextContent('Delete');
});
it('calls `onToggleEditing` when edit button is pressed', () => {
render(<CommentActions {...props} />);
fireEvent(screen.getByText('Edit'), new MouseEvent('click', { bubbles: true }));
expect(props.onToggleEditing).toHaveBeenCalledTimes(1);
fireEvent(screen.getByText('Cancel'), new MouseEvent('click', { bubbles: true }));
expect(props.onToggleEditing).toHaveBeenCalledTimes(2);
})
});
});
@@ -22,6 +22,7 @@ export type Props = {
editable: boolean;
editDeadline: number | undefined;
onCopy(): void;
onToggleEditing(): void;
onDelete(): void;
onTogglePin(): void;
onToggleReplying(): void;
@@ -43,6 +44,7 @@ export function CommentActions({
bannedUser,
editDeadline,
onCopy,
onToggleEditing,
onDelete,
onTogglePin,
onToggleReplying,
@@ -68,7 +70,7 @@ export function CommentActions({
)}
{editable && editDeadline && (
<>
<Button kind="link" size="sm">
<Button kind="link" size="sm" onClick={onToggleEditing}>
{intl.formatMessage(editing ? messages.cancel : messages.edit)}
</Button>
<span
@@ -503,6 +503,7 @@ export class Comment extends Component<CommentProps, State> {
bannedUser={props.isUserBanned}
onCopy={this.copyComment}
onTogglePin={this.togglePin}
onToggleEditing={this.toggleEditing}
onDelete={this.deleteComment}
onHideUser={this.hideUser}
onBlockUser={this.blockUser}