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:
commit
55ba9d8624
@ -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>
|
||||
`;
|
72
webapp/src/properties/number/number.test.tsx
Normal file
72
webapp/src/properties/number/number.test.tsx
Normal 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}`)
|
||||
})
|
||||
})
|
@ -10,7 +10,7 @@ const Number = (props: PropertyProps): JSX.Element => {
|
||||
return (
|
||||
<BaseTextEditor
|
||||
{...props}
|
||||
validator={() => !isNaN(parseInt(props.propertyValue as string, 10))}
|
||||
validator={() => props.propertyValue === '' || !isNaN(parseInt(props.propertyValue as string, 10))}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user