1
0
mirror of https://github.com/mattermost/focalboard.git synced 2024-12-24 13:43:12 +02:00

Merge pull request #4697 from mattermost/pick-PR4694-MM-51842

Cherry Pick #4694 Backport: MM-51842: fix value-change detection in number properties
This commit is contained in:
Scott Bishel 2023-04-04 15:45:17 -06:00 committed by GitHub
commit 55ba9d8624
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 86 additions and 1 deletions

View File

@ -0,0 +1,13 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`properties/number should match snapshot for number with empty value 1`] = `
<div>
<input
class="Editable octo-propertyvalue"
placeholder=""
style="width: 100%;"
title=""
value=""
/>
</div>
`;

View File

@ -0,0 +1,72 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React, {ComponentProps} from 'react'
import {render, screen} from '@testing-library/react'
import {mocked} from 'jest-mock'
import userEvent from '@testing-library/user-event'
import {wrapIntl} from '../../testUtils'
import {TestBlockFactory} from '../../test/testBlockFactory'
import mutator from '../../mutator'
import {Board, IPropertyTemplate} from '../..//blocks/board'
import {Card} from '../../blocks/card'
import NumberProperty from './property'
import NumberEditor from './number'
jest.mock('../../components/flashMessages')
jest.mock('../../mutator')
const mockedMutator = mocked(mutator)
describe('properties/number', () => {
let board: Board
let card: Card
let propertyTemplate: IPropertyTemplate
let baseProps: ComponentProps<typeof NumberEditor>
beforeEach(() => {
board = TestBlockFactory.createBoard()
card = TestBlockFactory.createCard()
propertyTemplate = board.cardProperties[0]
baseProps = {
property: new NumberProperty(),
card,
board,
propertyTemplate,
propertyValue: '',
readOnly: false,
showEmptyPlaceholder: false,
}
})
it('should match snapshot for number with empty value', () => {
const {container} = render(
wrapIntl((
<NumberEditor
{...baseProps}
/>
)),
)
expect(container).toMatchSnapshot()
})
it('should fire change event when valid number value is entered', async () => {
render(
wrapIntl(
<NumberEditor
{...baseProps}
/>,
),
)
const value = '42'
const input = screen.getByRole('textbox')
userEvent.type(input, `${value}{Enter}`)
expect(mockedMutator.changePropertyValue).toHaveBeenCalledWith(board.id, card, propertyTemplate.id, `${value}`)
})
})

View File

@ -10,7 +10,7 @@ const Number = (props: PropertyProps): JSX.Element => {
return ( return (
<BaseTextEditor <BaseTextEditor
{...props} {...props}
validator={() => !isNaN(parseInt(props.propertyValue as string, 10))} validator={() => props.propertyValue === '' || !isNaN(parseInt(props.propertyValue as string, 10))}
/> />
) )
} }