diff --git a/.betterer.results b/.betterer.results index 5d90f9e39cb..f5c95a9428f 100644 --- a/.betterer.results +++ b/.betterer.results @@ -80,9 +80,6 @@ exports[`no enzyme tests`] = { "public/app/features/dimensions/editors/ThresholdsEditor/ThresholdsEditor.test.tsx:4164297658": [ [0, 17, 13, "RegExp match", "2409514259"] ], - "public/app/features/folders/FolderSettingsPage.test.tsx:1208063654": [ - [0, 19, 13, "RegExp match", "2409514259"] - ], "public/app/plugins/datasource/cloudwatch/components/ConfigEditor.test.tsx:4057721851": [ [1, 19, 13, "RegExp match", "2409514259"] ], diff --git a/public/app/features/folders/FolderSettingsPage.test.tsx b/public/app/features/folders/FolderSettingsPage.test.tsx index e6136f0092f..3362c5523a8 100644 --- a/public/app/features/folders/FolderSettingsPage.test.tsx +++ b/public/app/features/folders/FolderSettingsPage.test.tsx @@ -1,4 +1,5 @@ -import { shallow } from 'enzyme'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import React from 'react'; import { mockToolkitActionCreator } from 'test/core/redux/mocks'; @@ -33,23 +34,16 @@ const setup = (propOverrides?: object) => { Object.assign(props, propOverrides); - const wrapper = shallow(); - const instance = wrapper.instance() as FolderSettingsPage; - - return { - wrapper, - instance, - }; + render(); }; -describe('Render', () => { - it('should render component', () => { - const { wrapper } = setup(); - expect(wrapper).toMatchSnapshot(); +describe('FolderSettingsPage', () => { + it('should render without error', () => { + expect(() => setup()).not.toThrow(); }); - it('should enable save button', () => { - const { wrapper } = setup({ + it('should enable save button when canSave is true and hasChanged is true', () => { + setup({ folder: { id: 1, uid: '1234', @@ -60,6 +54,107 @@ describe('Render', () => { version: 1, }, }); - expect(wrapper).toMatchSnapshot(); + const saveButton = screen.getByRole('button', { name: 'Save' }); + expect(saveButton).not.toBeDisabled(); + }); + + it('should disable save button when canSave is false and hasChanged is false', () => { + setup({ + folder: { + id: 1, + uid: '1234', + title: 'loading', + canSave: false, + canDelete: true, + hasChanged: false, + version: 1, + }, + }); + const saveButton = screen.getByRole('button', { name: 'Save' }); + expect(saveButton).toBeDisabled(); + }); + + it('should disable save button when canSave is true and hasChanged is false', () => { + setup({ + folder: { + id: 1, + uid: '1234', + title: 'loading', + canSave: true, + canDelete: true, + hasChanged: false, + version: 1, + }, + }); + const saveButton = screen.getByRole('button', { name: 'Save' }); + expect(saveButton).toBeDisabled(); + }); + + it('should disable save button when canSave is false and hasChanged is true', () => { + setup({ + folder: { + id: 1, + uid: '1234', + title: 'loading', + canSave: false, + canDelete: true, + hasChanged: true, + version: 1, + }, + }); + const saveButton = screen.getByRole('button', { name: 'Save' }); + expect(saveButton).toBeDisabled(); + }); + + it('should call onSave when the saveButton is clicked', async () => { + const mockSaveFolder = jest.fn(); + const mockFolder = { + id: 1, + uid: '1234', + title: 'loading', + canSave: true, + canDelete: true, + hasChanged: true, + version: 1, + }; + setup({ + folder: mockFolder, + saveFolder: mockSaveFolder, + }); + const saveButton = screen.getByRole('button', { name: 'Save' }); + await userEvent.click(saveButton); + expect(mockSaveFolder).toHaveBeenCalledWith(mockFolder); + }); + + it('should disable delete button when canDelete is false', () => { + setup({ + folder: { + id: 1, + uid: '1234', + title: 'loading', + canSave: true, + canDelete: false, + hasChanged: true, + version: 1, + }, + }); + const deleteButton = screen.getByRole('button', { name: 'Delete' }); + expect(deleteButton).toBeDisabled(); + }); + + it('should enable delete button when canDelete is true', () => { + setup({ + folder: { + id: 1, + uid: '1234', + title: 'loading', + canSave: true, + canDelete: true, + hasChanged: true, + version: 1, + }, + }); + const deleteButton = screen.getByRole('button', { name: 'Delete' }); + expect(deleteButton).not.toBeDisabled(); }); }); diff --git a/public/app/features/folders/__snapshots__/FolderSettingsPage.test.tsx.snap b/public/app/features/folders/__snapshots__/FolderSettingsPage.test.tsx.snap deleted file mode 100644 index 955a524fb96..00000000000 --- a/public/app/features/folders/__snapshots__/FolderSettingsPage.test.tsx.snap +++ /dev/null @@ -1,115 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Render should enable save button 1`] = ` - - -

- Folder settings -

-
-
-
- - -
-
- - -
-
-
-
-
-`; - -exports[`Render should render component 1`] = ` - - -

- Folder settings -

-
-
-
- - -
-
- - -
-
-
-
-
-`;