From 262645f75a56c3bedde102bd97f8f1cd80dfe70f Mon Sep 17 00:00:00 2001 From: Caleb Roseland Date: Mon, 3 Apr 2023 11:43:49 -0500 Subject: [PATCH 01/11] fix: empty number is valid --- webapp/boards/src/properties/number/number.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/boards/src/properties/number/number.tsx b/webapp/boards/src/properties/number/number.tsx index cfcf50bcf1..4dc175009d 100644 --- a/webapp/boards/src/properties/number/number.tsx +++ b/webapp/boards/src/properties/number/number.tsx @@ -10,7 +10,7 @@ const Number = (props: PropertyProps): JSX.Element => { return ( !isNaN(parseInt(props.propertyValue as string, 10))} + validator={() => props.propertyValue === '' || !isNaN(parseInt(props.propertyValue as string, 10))} /> ) } From bccb35a11dfe05e53e493cf31573856cd1566e26 Mon Sep 17 00:00:00 2001 From: Caleb Roseland Date: Mon, 3 Apr 2023 12:38:10 -0500 Subject: [PATCH 02/11] test: number property empty and change event --- .../number/__snapshots__/number.test.tsx.snap | 13 ++++ .../src/properties/number/number.test.tsx | 74 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 webapp/boards/src/properties/number/__snapshots__/number.test.tsx.snap create mode 100644 webapp/boards/src/properties/number/number.test.tsx diff --git a/webapp/boards/src/properties/number/__snapshots__/number.test.tsx.snap b/webapp/boards/src/properties/number/__snapshots__/number.test.tsx.snap new file mode 100644 index 0000000000..0bef96e78e --- /dev/null +++ b/webapp/boards/src/properties/number/__snapshots__/number.test.tsx.snap @@ -0,0 +1,13 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`properties/link should match snapshot for number with empty value 1`] = ` +
+ +
+`; diff --git a/webapp/boards/src/properties/number/number.test.tsx b/webapp/boards/src/properties/number/number.test.tsx new file mode 100644 index 0000000000..bb4dac9612 --- /dev/null +++ b/webapp/boards/src/properties/number/number.test.tsx @@ -0,0 +1,74 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import React, {ComponentProps} from 'react' +import {screen} from '@testing-library/react' +import {mocked} from 'jest-mock' + +import {setup, wrapIntl} from 'src/testUtils' +import {TestBlockFactory} from 'src/test/testBlockFactory' +import mutator from 'src/mutator' + +import {Board, IPropertyTemplate} from 'src/blocks/board' +import {Card} from 'src/blocks/card' + +import NumberProperty from './property' +import NumberEditor from './number' + +jest.mock('src/components/flashMessages') +jest.mock('src/mutator') + +const mockedMutator = mocked(mutator) + +describe('properties/link', () => { + + let board: Board + let card: Card + let propertyTemplate: IPropertyTemplate + let baseProps: ComponentProps + + 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} = setup( + wrapIntl(( + + )) + ) + expect(container).toMatchSnapshot() + }) + + it('should fire change event when valid number value is entered', async () => { + const {user} = setup( + wrapIntl( + + ) + ) + const value = '42' + const input = screen.getByRole('textbox') + await user.type(input, `${value}{Enter}`) + + expect(mockedMutator.changePropertyValue).toHaveBeenCalledWith(board.id, card, propertyTemplate.id, `${value}`) + }) +}) From f2faa4cb5d75fe6d6e3d542a65cc793122b75434 Mon Sep 17 00:00:00 2001 From: Caleb Roseland Date: Tue, 4 Apr 2023 09:55:31 -0500 Subject: [PATCH 03/11] correct test name --- webapp/boards/src/properties/number/number.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/boards/src/properties/number/number.test.tsx b/webapp/boards/src/properties/number/number.test.tsx index bb4dac9612..491a722c30 100644 --- a/webapp/boards/src/properties/number/number.test.tsx +++ b/webapp/boards/src/properties/number/number.test.tsx @@ -20,7 +20,7 @@ jest.mock('src/mutator') const mockedMutator = mocked(mutator) -describe('properties/link', () => { +describe('properties/number', () => { let board: Board let card: Card From a18573dfaab387de4ec138a90d64f11d5e5014ef Mon Sep 17 00:00:00 2001 From: Caleb Roseland Date: Tue, 4 Apr 2023 09:56:19 -0500 Subject: [PATCH 04/11] correct test whitespaces --- webapp/boards/src/properties/number/number.test.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/webapp/boards/src/properties/number/number.test.tsx b/webapp/boards/src/properties/number/number.test.tsx index 491a722c30..789439c73a 100644 --- a/webapp/boards/src/properties/number/number.test.tsx +++ b/webapp/boards/src/properties/number/number.test.tsx @@ -21,14 +21,12 @@ jest.mock('src/mutator') const mockedMutator = mocked(mutator) describe('properties/number', () => { - let board: Board let card: Card let propertyTemplate: IPropertyTemplate let baseProps: ComponentProps beforeEach(() => { - board = TestBlockFactory.createBoard() card = TestBlockFactory.createCard() propertyTemplate = board.cardProperties[0] @@ -43,8 +41,6 @@ describe('properties/number', () => { showEmptyPlaceholder: false, } }) - - it('should match snapshot for number with empty value', () => { const {container} = setup( From cb85672bb5f56d1cbcef419efa932b7ab7a9aedb Mon Sep 17 00:00:00 2001 From: Caleb Roseland Date: Tue, 4 Apr 2023 12:16:55 -0500 Subject: [PATCH 05/11] update snapshot --- .../src/properties/number/__snapshots__/number.test.tsx.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/boards/src/properties/number/__snapshots__/number.test.tsx.snap b/webapp/boards/src/properties/number/__snapshots__/number.test.tsx.snap index 0bef96e78e..8e914cd2c6 100644 --- a/webapp/boards/src/properties/number/__snapshots__/number.test.tsx.snap +++ b/webapp/boards/src/properties/number/__snapshots__/number.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`properties/link should match snapshot for number with empty value 1`] = ` +exports[`properties/number should match snapshot for number with empty value 1`] = `
Date: Thu, 6 Apr 2023 08:27:17 -0700 Subject: [PATCH 06/11] Fix boards share dialog (#22773) * Make sure proper state is shown for unconvential states of boards permissions. * Fix lint. --- .../shareBoard/teamPermissionsRow.tsx | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/webapp/boards/src/components/shareBoard/teamPermissionsRow.tsx b/webapp/boards/src/components/shareBoard/teamPermissionsRow.tsx index e104f55863..5a31c9da59 100644 --- a/webapp/boards/src/components/shareBoard/teamPermissionsRow.tsx +++ b/webapp/boards/src/components/shareBoard/teamPermissionsRow.tsx @@ -52,19 +52,22 @@ const TeamPermissionsRow = (): JSX.Element => { } } - let currentRoleName = intl.formatMessage({id: 'BoardMember.schemeNone', defaultMessage: 'None'}) - if (board.type === BoardTypeOpen && board.minimumRole === MemberRole.Admin) { - currentRoleName = intl.formatMessage({id: 'BoardMember.schemeAdmin', defaultMessage: 'Admin'}) - } else if (board.type === BoardTypeOpen && board.minimumRole === MemberRole.Editor) { - if (board.isTemplate) { + let currentRoleName = intl.formatMessage({id: 'BoardMember.schemeAdmin', defaultMessage: 'Admin'}) + if (board.type === BoardTypeOpen) { + currentRoleName = intl.formatMessage({id: 'BoardMember.schemeEditor', defaultMessage: 'Editor'}) + if (board.minimumRole === MemberRole.Editor) { + if (board.isTemplate) { + currentRoleName = intl.formatMessage({id: 'BoardMember.schemeViewer', defaultMessage: 'Viewer'}) + } else { + currentRoleName = intl.formatMessage({id: 'BoardMember.schemeEditor', defaultMessage: 'Editor'}) + } + } else if (board.minimumRole === MemberRole.Commenter) { + currentRoleName = intl.formatMessage({id: 'BoardMember.schemeCommenter', defaultMessage: 'Commenter'}) + } else if (board.minimumRole === MemberRole.Viewer) { currentRoleName = intl.formatMessage({id: 'BoardMember.schemeViewer', defaultMessage: 'Viewer'}) - } else { - currentRoleName = intl.formatMessage({id: 'BoardMember.schemeEditor', defaultMessage: 'Editor'}) } - } else if (board.type === BoardTypeOpen && board.minimumRole === MemberRole.Commenter) { - currentRoleName = intl.formatMessage({id: 'BoardMember.schemeCommenter', defaultMessage: 'Commenter'}) - } else if (board.type === BoardTypeOpen && board.minimumRole === MemberRole.Viewer) { - currentRoleName = intl.formatMessage({id: 'BoardMember.schemeViewer', defaultMessage: 'Viewer'}) + } else { + currentRoleName = intl.formatMessage({id: 'BoardMember.schemeNone', defaultMessage: 'None'}) } const confirmationDialog = ( From 71923fe311b6bf8ae5e9e1f03f8e3ba55e86e694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Andr=C3=A9s=20V=C3=A9lez=20Vidal?= Date: Thu, 6 Apr 2023 19:30:28 +0200 Subject: [PATCH 07/11] add screenshots section to github pr template (#22868) --- .github/PULL_REQUEST_TEMPLATE.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 548bb4a16c..c9319580f6 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -19,6 +19,18 @@ If this pull request addresses a Help Wanted ticket, please link the relevant Gi Otherwise, link the JIRA ticket. --> +#### Screenshots + + #### Release Note