From 9c861a15823ce7142f2061da85761b27ffdb9b22 Mon Sep 17 00:00:00 2001 From: stanislavh Date: Fri, 14 Apr 2023 15:52:57 +0200 Subject: [PATCH] SONAR-18432 RTL Migration for Project Baseline --- .../js/api/mocks/NewCodePeriodsServiceMock.ts | 64 ++- .../api/mocks/ProjectActivityServiceMock.ts | 2 +- .../BaselineSettingReferenceBranch.tsx | 4 +- .../components/BranchAnalysisListRenderer.tsx | 48 +- .../components/BranchListRow.tsx | 4 +- .../components/ProjectBaselineApp.tsx | 8 +- .../components/__tests__/AppHeader-test.tsx | 31 -- .../BaselineSettingAnalysis-test.tsx | 39 -- .../__tests__/BaselineSettingDays-test.tsx | 67 --- .../BaselineSettingPreviousVersion-test.tsx | 42 -- .../BaselineSettingReferenceBranch-test.tsx | 122 ----- .../__tests__/BranchAnalysisList-test.tsx | 155 ------- .../BranchAnalysisListRenderer-test.tsx | 91 ---- .../BranchBaselineSettingModal-test.tsx | 98 ---- .../components/__tests__/BranchList-test.tsx | 103 ----- .../__tests__/BranchListRow-test.tsx | 110 ----- .../__tests__/ProjectBaselineApp-it.tsx | 333 ++++++++++++++ .../__tests__/ProjectBaselineApp-test.tsx | 119 ----- .../ProjectBaselineSelector-test.tsx | 116 ----- .../__snapshots__/AppHeader-test.tsx.snap | 74 --- .../BaselineSettingAnalysis-test.tsx.snap | 15 - .../BaselineSettingDays-test.tsx.snap | 85 ---- ...selineSettingPreviousVersion-test.tsx.snap | 25 -- ...selineSettingReferenceBranch-test.tsx.snap | 260 ----------- .../BranchAnalysisListRenderer-test.tsx.snap | 420 ------------------ .../BranchBaselineSettingModal-test.tsx.snap | 169 ------- .../__snapshots__/BranchList-test.tsx.snap | 109 ----- .../__snapshots__/BranchListRow-test.tsx.snap | 298 ------------- .../ProjectBaselineApp-test.tsx.snap | 208 --------- .../ProjectBaselineSelector-test.tsx.snap | 298 ------------- .../src/main/js/components/controls/Radio.tsx | 4 +- .../main/js/helpers/mocks/new-code-period.ts | 11 +- server/sonar-web/src/main/js/types/types.ts | 6 +- .../resources/org/sonar/l10n/core.properties | 2 + 34 files changed, 445 insertions(+), 3095 deletions(-) delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/AppHeader-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/BaselineSettingAnalysis-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/BaselineSettingDays-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/BaselineSettingPreviousVersion-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/BaselineSettingReferenceBranch-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/BranchAnalysisList-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/BranchAnalysisListRenderer-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/BranchBaselineSettingModal-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/BranchList-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/BranchListRow-test.tsx create mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/ProjectBaselineApp-it.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/ProjectBaselineApp-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/ProjectBaselineSelector-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/AppHeader-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingAnalysis-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingDays-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingPreviousVersion-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingReferenceBranch-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchAnalysisListRenderer-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchBaselineSettingModal-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchList-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchListRow-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/ProjectBaselineApp-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/ProjectBaselineSelector-test.tsx.snap diff --git a/server/sonar-web/src/main/js/api/mocks/NewCodePeriodsServiceMock.ts b/server/sonar-web/src/main/js/api/mocks/NewCodePeriodsServiceMock.ts index df8b3b6ba57..042d78ad54a 100644 --- a/server/sonar-web/src/main/js/api/mocks/NewCodePeriodsServiceMock.ts +++ b/server/sonar-web/src/main/js/api/mocks/NewCodePeriodsServiceMock.ts @@ -18,21 +18,37 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { cloneDeep } from 'lodash'; -import { mockNewCodePeriod } from '../../helpers/mocks/new-code-period'; -import { NewCodePeriod, NewCodePeriodSettingType } from '../../types/types'; -import { getNewCodePeriod, setNewCodePeriod } from '../newCodePeriod'; +import { mockNewCodePeriod, mockNewCodePeriodBranch } from '../../helpers/mocks/new-code-period'; +import { NewCodePeriod, NewCodePeriodBranch, NewCodePeriodSettingType } from '../../types/types'; +import { + getNewCodePeriod, + listBranchesNewCodePeriod, + resetNewCodePeriod, + setNewCodePeriod, +} from '../newCodePeriod'; jest.mock('../newCodePeriod'); - -const defaultNewCodePeriod = mockNewCodePeriod(); - export default class NewCodePeriodsServiceMock { + #defaultNewCodePeriod = mockNewCodePeriod({ inherited: true }); + #defaultListBranchesNewCode = [ + mockNewCodePeriodBranch({ inherited: true, branchKey: 'main' }), + mockNewCodePeriodBranch({ + branchKey: 'feature', + type: NewCodePeriodSettingType.NUMBER_OF_DAYS, + value: '1', + }), + ]; + #newCodePeriod: NewCodePeriod; + #listBranchesNewCode: NewCodePeriodBranch[]; constructor() { - this.#newCodePeriod = cloneDeep(defaultNewCodePeriod); + this.#newCodePeriod = cloneDeep(this.#defaultNewCodePeriod); + this.#listBranchesNewCode = cloneDeep(this.#defaultListBranchesNewCode); jest.mocked(getNewCodePeriod).mockImplementation(this.handleGetNewCodePeriod); jest.mocked(setNewCodePeriod).mockImplementation(this.handleSetNewCodePeriod); + jest.mocked(resetNewCodePeriod).mockImplementation(this.handleResetNewCodePeriod); + jest.mocked(listBranchesNewCodePeriod).mockImplementation(this.handleListBranchesNewCodePeriod); } handleGetNewCodePeriod = () => { @@ -45,13 +61,41 @@ export default class NewCodePeriodsServiceMock { type: NewCodePeriodSettingType; value?: string; }) => { - const { type, value } = data; - this.#newCodePeriod = mockNewCodePeriod({ type, value }); + const { type, value, branch } = data; + if (branch) { + const branchNewCode = this.#listBranchesNewCode.find( + (bNew) => bNew.branchKey === branch + ) as NewCodePeriodBranch; + branchNewCode.type = type; + branchNewCode.value = value; + } else { + this.#newCodePeriod = mockNewCodePeriod({ type, value }); + } + + return this.reply(undefined); + }; + + handleResetNewCodePeriod = (data: { project?: string; branch?: string }) => { + const { branch } = data; + if (branch) { + const index = this.#listBranchesNewCode.findIndex((bNew) => bNew.branchKey === branch); + if (index >= 0) { + Object.assign(this.#listBranchesNewCode[index], cloneDeep(this.#defaultNewCodePeriod)); + } + } else { + this.#newCodePeriod = cloneDeep(this.#defaultNewCodePeriod); + } + return this.reply(undefined); }; + handleListBranchesNewCodePeriod = () => { + return this.reply({ newCodePeriods: this.#listBranchesNewCode }); + }; + reset = () => { - this.#newCodePeriod = cloneDeep(defaultNewCodePeriod); + this.#newCodePeriod = cloneDeep(this.#defaultNewCodePeriod); + this.#listBranchesNewCode = cloneDeep(this.#defaultListBranchesNewCode); }; reply(response: T): Promise { diff --git a/server/sonar-web/src/main/js/api/mocks/ProjectActivityServiceMock.ts b/server/sonar-web/src/main/js/api/mocks/ProjectActivityServiceMock.ts index 9905b4ab639..ab791b42a1e 100644 --- a/server/sonar-web/src/main/js/api/mocks/ProjectActivityServiceMock.ts +++ b/server/sonar-web/src/main/js/api/mocks/ProjectActivityServiceMock.ts @@ -31,7 +31,7 @@ import { } from '../projectActivity'; const PAGE_SIZE = 10; -const DEFAULT_PAGE = 0; +const DEFAULT_PAGE = 1; const UNKNOWN_PROJECT = 'unknown'; const defaultAnalysesList = [ diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingReferenceBranch.tsx b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingReferenceBranch.tsx index 6604d1e39da..a35a6c19f70 100644 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingReferenceBranch.tsx +++ b/server/sonar-web/src/main/js/apps/projectBaseline/components/BaselineSettingReferenceBranch.tsx @@ -47,8 +47,7 @@ export interface BranchOption { value: string; } -/* Export for testing */ -export function renderBranchOption(props: OptionProps) { +function renderBranchOption(props: OptionProps) { const { data: option } = props; return ( @@ -118,6 +117,7 @@ export default function BaselineSettingReferenceBranch(props: BaselineSettingRef - - -`; - -exports[`should render correctly 2`] = ` - -

- baseline.number_days.description -

- - - - -
-`; - -exports[`should render correctly 3`] = ` - -

- baseline.number_days.description -

- - - - -
-`; diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingPreviousVersion-test.tsx.snap b/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingPreviousVersion-test.tsx.snap deleted file mode 100644 index cb4acd788cb..00000000000 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingPreviousVersion-test.tsx.snap +++ /dev/null @@ -1,25 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly 1`] = ` - -

- baseline.previous_version.description -

-
-`; - -exports[`should render correctly 2`] = ` - -

- baseline.previous_version.description -

-
-`; diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingReferenceBranch-test.tsx.snap b/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingReferenceBranch-test.tsx.snap deleted file mode 100644 index e2eb5c63fdc..00000000000 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BaselineSettingReferenceBranch-test.tsx.snap +++ /dev/null @@ -1,260 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`renderOption should render correctly: branch 1`] = ` - -`; - -exports[`renderOption should render correctly: branch doesn't exist 1`] = ` - -`; - -exports[`renderOption should render correctly: disabled 1`] = ` - -`; - -exports[`renderOption should render correctly: main 1`] = ` - -`; - -exports[`should render correctly: Branch level - no other branches 1`] = ` - -

- baseline.reference_branch.description -

-
- - - -
-
-`; - -exports[`should render correctly: Project level 1`] = ` - -

- baseline.reference_branch.description -

-

- baseline.reference_branch.description2 -

-
- - - -
-
-
-
    -
  • -
      -
    • -
      - -
      -
        -
      • -
        - - - -
        -
        - -
        -
      • -
      • -
        - - - -
        - -
        - -
        -
      • -
      -
    • -
    -
  • -
  • -
    - - - Lorem ipsum - - -
    -
      -
    • -
      - -
      -
        -
      • -
        - - - -
        - -
        - -
        -
      • -
      -
    • -
    • -
      - -
      -
        -
      • -
        - - - -
        -
        - -
        -
      • -
      -
    • -
    -
  • -
-
-
- -`; - -exports[`should render correctly: empty 1`] = ` - -
- - -
-
-
- -
    -
-
-
-`; diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchBaselineSettingModal-test.tsx.snap b/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchBaselineSettingModal-test.tsx.snap deleted file mode 100644 index bb59bfd7ad5..00000000000 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchBaselineSettingModal-test.tsx.snap +++ /dev/null @@ -1,169 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly: multiple branches 1`] = ` - -
-

- baseline.new_code_period_for_branch_x.master -

-
-
-
-
- - - - -
-
-
- - - save - - - cancel - -
-
-
-`; - -exports[`should render correctly: only one branch 1`] = ` - -
-

- baseline.new_code_period_for_branch_x.master -

-
-
-
-
- - - - -
-
-
- - - save - - - cancel - -
-
-
-`; diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchList-test.tsx.snap b/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchList-test.tsx.snap deleted file mode 100644 index 89c13ce499f..00000000000 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchList-test.tsx.snap +++ /dev/null @@ -1,109 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly 1`] = ` - - - - - - - - - - - - - - -
- branch_list.branch - - branch_list.current_setting - - branch_list.actions -
-
-`; diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchListRow-test.tsx.snap b/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchListRow-test.tsx.snap deleted file mode 100644 index 944ad428b4f..00000000000 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/BranchListRow-test.tsx.snap +++ /dev/null @@ -1,298 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly: branch with number of days 1`] = ` - - - - branch-6.7 - - - - - baseline.number_days: 21 - - - - - - - edit - - - reset_to_default - - - - -`; - -exports[`should render correctly: branch with previous version 1`] = ` - - - - branch-6.7 - - - - - baseline.previous_version - - - - - - - edit - - - reset_to_default - - - - -`; - -exports[`should render correctly: branch with reference branch 1`] = ` - - - - branch-6.7 - - - - - baseline.reference_branch: master - - - - - - - edit - - - reset_to_default - - - - -`; - -exports[`should render correctly: branch with specific analysis 1`] = ` - - - - branch-6.7 - - - - - baseline.specific_analysis: - - - - - - - - edit - - - reset_to_default - - - - -`; - -exports[`should render correctly: faulty branch 1`] = ` - - - - branch-7.3 - - - - - - branch_list.default_setting - - - - - - - edit - - - - -`; - -exports[`should render correctly: main branch with default 1`] = ` - - - - master -
- branches.main_branch -
- - - - - branch_list.default_setting - - - - - - - edit - - - - -`; diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/ProjectBaselineApp-test.tsx.snap b/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/ProjectBaselineApp-test.tsx.snap deleted file mode 100644 index 0bdcbfd57a6..00000000000 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/ProjectBaselineApp-test.tsx.snap +++ /dev/null @@ -1,208 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly 1`] = ` - - - -
- -
-

- project_baseline.default_setting -

- -
- - - settings.state.saved - -
-
-
-

- project_baseline.configure_branches -

- -
-
-
-
-`; - -exports[`should render correctly: without branch support 1`] = ` - - - -
- -
- -
- - - settings.state.saved - -
-
-
-
-`; diff --git a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/ProjectBaselineSelector-test.tsx.snap b/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/ProjectBaselineSelector-test.tsx.snap deleted file mode 100644 index c858bd7c0a0..00000000000 --- a/server/sonar-web/src/main/js/apps/projectBaseline/components/__tests__/__snapshots__/ProjectBaselineSelector-test.tsx.snap +++ /dev/null @@ -1,298 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly 1`] = ` -
-
- - project_baseline.general_setting - -
-
- - baseline.previous_version - - : - baseline.previous_version.description -
-
- - project_baseline.specific_setting - -
-
-
- - - -
-
-
- - baseline.next_analysis_notice - - - - save - - - cancel - -
-
-`; - -exports[`should render correctly 2`] = ` -
-
- - project_baseline.general_setting - -
-
- - baseline.number_days (duration.days.23) - - : - baseline.number_days.description -
-
- - project_baseline.specific_setting - -
-
-
- - - -
-
-
- - baseline.next_analysis_notice - - - - save - - - cancel - -
-
-`; - -exports[`should render correctly 3`] = ` -
-
- - project_baseline.general_setting - -
-
- - baseline.number_days (duration.days.?) - - : - baseline.number_days.description -
-
- - project_baseline.specific_setting - -
-
-
- - - -
-
-
- - baseline.next_analysis_notice - - - - save - - - cancel - -
-
-`; diff --git a/server/sonar-web/src/main/js/components/controls/Radio.tsx b/server/sonar-web/src/main/js/components/controls/Radio.tsx index 32506201280..f94f074fe12 100644 --- a/server/sonar-web/src/main/js/components/controls/Radio.tsx +++ b/server/sonar-web/src/main/js/components/controls/Radio.tsx @@ -28,6 +28,7 @@ interface Props { disabled?: boolean; onCheck: (value: string) => void; value: string; + ariaLabel?: string; } export default class Radio extends React.PureComponent { @@ -40,7 +41,7 @@ export default class Radio extends React.PureComponent { }; render() { - const { className, checked, children, disabled, alignLabel = false } = this.props; + const { className, checked, children, disabled, alignLabel = false, ariaLabel } = this.props; return ( { href="#" onClick={this.handleClick} role="radio" + aria-label={ariaLabel} > {children} diff --git a/server/sonar-web/src/main/js/helpers/mocks/new-code-period.ts b/server/sonar-web/src/main/js/helpers/mocks/new-code-period.ts index b33d62943f0..a4372621720 100644 --- a/server/sonar-web/src/main/js/helpers/mocks/new-code-period.ts +++ b/server/sonar-web/src/main/js/helpers/mocks/new-code-period.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { NewCodePeriod, NewCodePeriodSettingType } from '../../types/types'; +import { NewCodePeriod, NewCodePeriodBranch, NewCodePeriodSettingType } from '../../types/types'; export function mockNewCodePeriod(overrides: Partial = {}) { return { @@ -26,3 +26,12 @@ export function mockNewCodePeriod(overrides: Partial = {}) { ...overrides, }; } + +export function mockNewCodePeriodBranch(overrides: Partial = {}) { + return { + projectKey: 'pkey', + branchKey: 'bKey', + ...mockNewCodePeriod(), + ...overrides, + }; +} diff --git a/server/sonar-web/src/main/js/types/types.ts b/server/sonar-web/src/main/js/types/types.ts index c7dea270668..29415171dfd 100644 --- a/server/sonar-web/src/main/js/types/types.ts +++ b/server/sonar-web/src/main/js/types/types.ts @@ -403,13 +403,9 @@ export interface NewCodePeriod { inherited?: boolean; } -export interface NewCodePeriodBranch { +export interface NewCodePeriodBranch extends NewCodePeriod { projectKey: string; branchKey: string; - inherited?: boolean; - type?: NewCodePeriodSettingType; - value?: string; - effectiveValue?: string; } export enum NewCodePeriodSettingType { diff --git a/sonar-core/src/main/resources/org/sonar/l10n/core.properties b/sonar-core/src/main/resources/org/sonar/l10n/core.properties index 2192f4895ce..1e77d9d9ca1 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -659,6 +659,7 @@ branch_list.branch=Branch branch_list.current_setting=Setting branch_list.current_baseline=Current Baseline branch_list.actions=Actions +branch_list.show_actions_for_x=Show actions for branch {0} branch_list.default_setting=Project setting baseline.new_code_period_for_branch_x=New Code Period for {0} @@ -666,6 +667,7 @@ baseline.new_code_period_for_branch_x=New Code Period for {0} baseline.analysis_from=Analysis from: baseline.branch_analyses.ranges.30days=Last 30 days baseline.branch_analyses.ranges.allTime=All time +baseline.branch_analyses.analysis_for_x=Analysis for {0} baseline.no_analyses=No analyses regulatory_report.page=Regulatory Report -- 2.39.5