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 (
|
return (
|
||||||
<BaseTextEditor
|
<BaseTextEditor
|
||||||
{...props}
|
{...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