From 509968b0a28f4d95d49df03e5c7da4dd86c3130c Mon Sep 17 00:00:00 2001 From: javoconsultant Date: Thu, 27 Aug 2026 02:20:47 +0500 Subject: [PATCH 1/6] feat(taxonomy): add taxonomy type selection to import tags wizard --- src/taxonomy/data/apiHooks.test.jsx | 59 ++++++++++++------- src/taxonomy/data/apiHooks.ts | 5 +- src/taxonomy/import-tags/ImportTagsWizard.jsx | 46 +++++++++++++-- .../import-tags/ImportTagsWizard.scss | 6 ++ .../import-tags/ImportTagsWizard.test.jsx | 33 +++++++++++ src/taxonomy/import-tags/constants.ts | 28 +++++++++ src/taxonomy/import-tags/messages.ts | 12 ++++ 7 files changed, 163 insertions(+), 26 deletions(-) create mode 100644 src/taxonomy/import-tags/ImportTagsWizard.scss create mode 100644 src/taxonomy/import-tags/constants.ts diff --git a/src/taxonomy/data/apiHooks.test.jsx b/src/taxonomy/data/apiHooks.test.jsx index f80d2c9025..1078d2c618 100644 --- a/src/taxonomy/data/apiHooks.test.jsx +++ b/src/taxonomy/data/apiHooks.test.jsx @@ -17,6 +17,7 @@ import { useImportTags, useImportNewTaxonomy, } from './apiHooks'; +import { TaxonomyType } from '../import-tags/constants'; let axiosMock; @@ -30,14 +31,14 @@ const queryClient = new QueryClient({ const wrapper = ({ children }) => ( - - {children} - + {children} ); const emptyFile = new File([], 'empty.csv'); +const taxonomyTypes = Object.values(TaxonomyType); + describe('import taxonomy api calls', () => { beforeEach(() => { initializeMockApp({ @@ -55,24 +56,40 @@ describe('import taxonomy api calls', () => { jest.clearAllMocks(); }); - it('should call import new taxonomy', async () => { - const mockResult = { - id: 8, - name: 'Taxonomy name', - exportId: 'taxonomy_export_id', - description: 'Taxonomy description', - }; - axiosMock.onPost(apiUrls.createTaxonomyFromImport()).reply(201, mockResult); - const { result } = renderHook(() => useImportNewTaxonomy(), { wrapper }); - const mutateResult = await result.current.mutateAsync({ - name: 'Taxonomy name', - description: 'Taxonomy description', - file: emptyFile, - }); - - expect(axiosMock.history.post[0].url).toEqual(apiUrls.createTaxonomyFromImport()); - expect(mutateResult).toEqual(mockResult); - }); + it.each(taxonomyTypes)( + 'should call import new taxonomy with the %s type', + async (taxonomyType) => { + const mockResult = { + id: 8, + name: 'Taxonomy name', + exportId: 'taxonomy_export_id', + description: 'Taxonomy description', + }; + axiosMock + .onPost(apiUrls.createTaxonomyFromImport()) + .reply(201, mockResult); + const { result } = renderHook(() => useImportNewTaxonomy(), { + wrapper, + }); + const mutateResult = await result.current.mutateAsync({ + name: 'Taxonomy name', + description: 'Taxonomy description', + taxonomyType, + file: emptyFile, + }); + + expect(axiosMock.history.post[0].url).toEqual( + apiUrls.createTaxonomyFromImport(), + ); + const formData = axiosMock.history.post[0].data; + expect(formData.get('taxonomy_name')).toEqual('Taxonomy name'); + expect(formData.get('taxonomy_description')).toEqual( + 'Taxonomy description', + ); + expect(formData.get('taxonomy_type')).toEqual(taxonomyType); + expect(mutateResult).toEqual(mockResult); + }, + ); it('should call import tags', async () => { const taxonomy = { id: 1, name: 'taxonomy name' }; diff --git a/src/taxonomy/data/apiHooks.ts b/src/taxonomy/data/apiHooks.ts index fd40a10097..639b0cf7c7 100644 --- a/src/taxonomy/data/apiHooks.ts +++ b/src/taxonomy/data/apiHooks.ts @@ -16,6 +16,7 @@ import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth'; import { apiUrls, ALL_TAXONOMIES, getApiErrorMessage } from './api'; import * as api from './api'; import type { QueryOptions, TagListData } from './types'; +import { TaxonomyType } from '../import-tags/constants'; // Query key patterns. Allows an easy way to clear all data related to a given taxonomy. // https://github.com/openedx/frontend-app-admin-portal/blob/2ba315d/docs/decisions/0006-tanstack-react-query.rst @@ -116,11 +117,13 @@ export const useImportNewTaxonomy = () => { mutationFn: async ({ name, description, + taxonomyType, file, - }: { name: string; description: string; file: File; }) => { + }: { name: string; description: string; taxonomyType: TaxonomyType; file: File; }) => { const formData = new FormData(); formData.append('taxonomy_name', name); formData.append('taxonomy_description', description); + formData.append('taxonomy_type', taxonomyType); formData.append('file', file); const { data } = await getAuthenticatedHttpClient().post(apiUrls.createTaxonomyFromImport(), formData); diff --git a/src/taxonomy/import-tags/ImportTagsWizard.jsx b/src/taxonomy/import-tags/ImportTagsWizard.jsx index 3fedf6c0c9..88cabc7878 100644 --- a/src/taxonomy/import-tags/ImportTagsWizard.jsx +++ b/src/taxonomy/import-tags/ImportTagsWizard.jsx @@ -12,6 +12,8 @@ import { Stack, Stepper, Form, + MenuItem, + SelectMenu, } from '@openedx/paragon'; import { DeleteOutline, @@ -21,13 +23,16 @@ import { } from '@openedx/paragon/icons'; import PropTypes from 'prop-types'; -import LoadingButton from '../../generic/loading-button'; -import { LoadingSpinner } from '../../generic/Loading'; -import { getFileSizeToClosestByte } from '../../utils'; import { TaxonomyContext } from '../common/context'; import { getTaxonomyExportFile, apiUrls } from '../data/api'; import { useImportTags, useImportPlan, useImportNewTaxonomy } from '../data/apiHooks'; import messages from './messages'; +import { TaxonomyType, TAXONOMY_TYPE_OPTIONS } from './constants'; +import LoadingButton from '@src/generic/loading-button'; +import { LoadingSpinner } from '@src/generic/Loading'; +import { getFileSizeToClosestByte } from '@src/utils'; + +import './ImportTagsWizard.scss'; const linebreak = ( <> @@ -198,6 +203,10 @@ const PopulateStep = ({ setTaxonomyPopulateData(updatedState); }; + const handleTypeChange = (taxonomyType) => { + setTaxonomyPopulateData({ ...taxonomyPopulateData, taxonomyType }); + }; + return ( @@ -214,6 +223,32 @@ const PopulateStep = ({ onChange={handleDescChange} /> + + + {intl.formatMessage(messages.importWizardStepPopulateTaxonomyType)} + + + {TAXONOMY_TYPE_OPTIONS.map(({ value, message }) => { + const isSelected = value === taxonomyPopulateData.taxonomyType; + return ( + handleTypeChange(value)} + > + {intl.formatMessage(message)} + + ); + })} + + ); @@ -223,6 +258,7 @@ PopulateStep.propTypes = { taxonomyPopulateData: PropTypes.shape({ taxonomyName: PropTypes.string.isRequired, taxonomyDesc: PropTypes.string.isRequired, + taxonomyType: PropTypes.oneOf(TAXONOMY_TYPE_OPTIONS.map(({ value }) => value)).isRequired, }).isRequired, setTaxonomyPopulateData: PropTypes.func.isRequired, }; @@ -305,6 +341,7 @@ const ImportTagsWizard = ({ const [taxonomyPopulateData, setTaxonomyPopulateData] = useState({ taxonomyName: '', taxonomyDesc: '', + taxonomyType: TaxonomyType.Tags, }); const importNewTaxonomyMutation = useImportNewTaxonomy(); @@ -312,11 +349,12 @@ const ImportTagsWizard = ({ const importNewTaxonomy = async () => { disableDialog(); try { - const { taxonomyName, taxonomyDesc } = taxonomyPopulateData; + const { taxonomyName, taxonomyDesc, taxonomyType } = taxonomyPopulateData; if (file) { await importNewTaxonomyMutation.mutateAsync({ name: taxonomyName, description: taxonomyDesc, + taxonomyType, file, }); } diff --git a/src/taxonomy/import-tags/ImportTagsWizard.scss b/src/taxonomy/import-tags/ImportTagsWizard.scss new file mode 100644 index 0000000000..80632106a6 --- /dev/null +++ b/src/taxonomy/import-tags/ImportTagsWizard.scss @@ -0,0 +1,6 @@ +.taxonomy-type-select { + .btn { + width: 100%; + justify-content: space-between; + } +} diff --git a/src/taxonomy/import-tags/ImportTagsWizard.test.jsx b/src/taxonomy/import-tags/ImportTagsWizard.test.jsx index 613d953c03..fb623d66a2 100644 --- a/src/taxonomy/import-tags/ImportTagsWizard.test.jsx +++ b/src/taxonomy/import-tags/ImportTagsWizard.test.jsx @@ -10,6 +10,7 @@ import { render, waitFor, screen, + within, } from '@testing-library/react'; import PropTypes from 'prop-types'; @@ -327,12 +328,43 @@ describe('', () => { target: { value: 'New Taxonomy Description' }, }); + // The taxonomy type dropdown is a `SelectMenu`, whose options are rendered as links. + const taxonomyTypeSelectEl = screen.getByLabelText('Taxonomy Type'); + expect(taxonomyTypeSelectEl).toBe(getByTestId('taxonomy-type-select')); + const taxonomyTypeOptions = () => within(taxonomyTypeSelectEl).getAllByRole('link'); + const selectedTaxonomyTypes = () => + taxonomyTypeOptions() + .filter((option) => option.getAttribute('aria-current') === 'page') + .map((option) => option.textContent); + const checkedTaxonomyTypes = () => + taxonomyTypeOptions() + .filter((option) => option.querySelector('.btn-icon-after')) + .map((option) => option.textContent); + + const taxonomyTypeToggleEl = within(taxonomyTypeSelectEl).getByRole('button'); + expect(taxonomyTypeToggleEl).toHaveTextContent('Tags'); + fireEvent.click(taxonomyTypeToggleEl); + expect(taxonomyTypeOptions().map((option) => option.textContent)).toEqual(['Tags', 'Competency']); + expect(selectedTaxonomyTypes()).toEqual(['Tags']); + expect(checkedTaxonomyTypes()).toEqual(['Tags']); + + fireEvent.click(within(taxonomyTypeSelectEl).getByRole('link', { name: 'Competency' })); + expect(taxonomyTypeToggleEl).toHaveTextContent('Competency'); + fireEvent.click(taxonomyTypeToggleEl); + expect(selectedTaxonomyTypes()).toEqual(['Competency']); + expect(checkedTaxonomyTypes()).toEqual(['Competency']); + await waitFor(() => { + expect(within(taxonomyTypeSelectEl).getByRole('link', { name: 'Competency' })).toHaveFocus(); + }); + fireEvent.keyDown(taxonomyTypeSelectEl, { key: 'Escape' }); + // Test back button fireEvent.click(getByTestId('back-button')); expect(getByTestId('upload-step')).toBeInTheDocument(); fireEvent.click(getByRole('button', { name: 'Continue' })); expect(getByTestId('populate-step')).toBeInTheDocument(); + expect(within(getByTestId('taxonomy-type-select')).getByRole('button')).toHaveTextContent('Competency'); if (expectedResult === 'success') { axiosMock.onPost(doImportNewTaxonomyUrl).replyOnce(200, {}); @@ -353,6 +385,7 @@ describe('', () => { await waitFor(() => { expect(mockSetToastMessage).toHaveBeenCalledWith(`"${newTaxonomyName}" imported`); }); + expect(axiosMock.history.post[0].data.get('taxonomy_type')).toEqual('competency'); } else { // Alert message shown await waitFor(() => { diff --git a/src/taxonomy/import-tags/constants.ts b/src/taxonomy/import-tags/constants.ts new file mode 100644 index 0000000000..837004c40a --- /dev/null +++ b/src/taxonomy/import-tags/constants.ts @@ -0,0 +1,28 @@ +import messages from './messages'; + +/** + * The type of a taxonomy. + * + * Note: the backend also has a "system" type, reserved for platform-defined + * taxonomies. It is intentionally not selectable by users. + */ +export enum TaxonomyType { + Tags = 'tags', + Competency = 'competency', +} + +/** + * The taxonomy types a user can pick when importing a taxonomy. + * The backend also supports a "system" type, but it is reserved for + * platform-defined taxonomies and must not be offered here. + */ +export const TAXONOMY_TYPE_OPTIONS = [ + { + value: TaxonomyType.Tags, + message: messages.importWizardStepPopulateTaxonomyTypeTags, + }, + { + value: TaxonomyType.Competency, + message: messages.importWizardStepPopulateTaxonomyTypeCompetency, + }, +]; diff --git a/src/taxonomy/import-tags/messages.ts b/src/taxonomy/import-tags/messages.ts index f6f0b86726..1526e32a02 100644 --- a/src/taxonomy/import-tags/messages.ts +++ b/src/taxonomy/import-tags/messages.ts @@ -86,6 +86,18 @@ const messages = defineMessages({ id: 'course-authoring.import-tags.wizard.step-populate.desc', defaultMessage: 'Taxonomy Description', }, + importWizardStepPopulateTaxonomyType: { + id: 'course-authoring.import-tags.wizard.step-populate.type', + defaultMessage: 'Taxonomy Type', + }, + importWizardStepPopulateTaxonomyTypeTags: { + id: 'course-authoring.import-tags.wizard.step-populate.type.tags', + defaultMessage: 'Tags', + }, + importWizardStepPopulateTaxonomyTypeCompetency: { + id: 'course-authoring.import-tags.wizard.step-populate.type.competency', + defaultMessage: 'Competency', + }, importWizardStepPlanTitle: { id: 'course-authoring.import-tags.wizard.step-plan.title', defaultMessage: 'Differences between files', From d1fd0f91bfb135f9a27ffb81d31f8bd4aa35bea2 Mon Sep 17 00:00:00 2001 From: javoconsultant Date: Fri, 28 Aug 2026 16:57:15 +0500 Subject: [PATCH 2/6] test: simplify taxonomy type selection assertions in ImportTagsWizard tests --- src/taxonomy/import-tags/ImportTagsWizard.test.jsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/taxonomy/import-tags/ImportTagsWizard.test.jsx b/src/taxonomy/import-tags/ImportTagsWizard.test.jsx index fb623d66a2..2debd8e0a2 100644 --- a/src/taxonomy/import-tags/ImportTagsWizard.test.jsx +++ b/src/taxonomy/import-tags/ImportTagsWizard.test.jsx @@ -336,23 +336,17 @@ describe('', () => { taxonomyTypeOptions() .filter((option) => option.getAttribute('aria-current') === 'page') .map((option) => option.textContent); - const checkedTaxonomyTypes = () => - taxonomyTypeOptions() - .filter((option) => option.querySelector('.btn-icon-after')) - .map((option) => option.textContent); const taxonomyTypeToggleEl = within(taxonomyTypeSelectEl).getByRole('button'); expect(taxonomyTypeToggleEl).toHaveTextContent('Tags'); fireEvent.click(taxonomyTypeToggleEl); expect(taxonomyTypeOptions().map((option) => option.textContent)).toEqual(['Tags', 'Competency']); expect(selectedTaxonomyTypes()).toEqual(['Tags']); - expect(checkedTaxonomyTypes()).toEqual(['Tags']); fireEvent.click(within(taxonomyTypeSelectEl).getByRole('link', { name: 'Competency' })); expect(taxonomyTypeToggleEl).toHaveTextContent('Competency'); fireEvent.click(taxonomyTypeToggleEl); expect(selectedTaxonomyTypes()).toEqual(['Competency']); - expect(checkedTaxonomyTypes()).toEqual(['Competency']); await waitFor(() => { expect(within(taxonomyTypeSelectEl).getByRole('link', { name: 'Competency' })).toHaveFocus(); }); From a1a869259072746a82044ae212154488ad64d443 Mon Sep 17 00:00:00 2001 From: javoconsultant Date: Fri, 28 Aug 2026 20:11:49 +0500 Subject: [PATCH 3/6] refactor(taxonomy): reorganize taxonomy type imports and constants --- src/taxonomy/data/apiHooks.test.jsx | 17 +++-------------- src/taxonomy/data/apiHooks.ts | 2 +- src/taxonomy/data/constants.ts | 11 +++++++++++ src/taxonomy/import-tags/ImportTagsWizard.jsx | 5 +++-- src/taxonomy/import-tags/constants.ts | 12 +----------- 5 files changed, 19 insertions(+), 28 deletions(-) diff --git a/src/taxonomy/data/apiHooks.test.jsx b/src/taxonomy/data/apiHooks.test.jsx index 1078d2c618..d655902ee4 100644 --- a/src/taxonomy/data/apiHooks.test.jsx +++ b/src/taxonomy/data/apiHooks.test.jsx @@ -1,14 +1,11 @@ // @ts-check import React from 'react'; // Required to use JSX syntax without type errors -import { initializeMockApp } from '@edx/frontend-platform'; -import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth'; import { IntlProvider } from '@edx/frontend-platform/i18n'; import { renderHook, waitFor } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import MockAdapter from 'axios-mock-adapter'; - +import { initializeMocks } from '@src/testUtils'; import { apiUrls } from './api'; import { @@ -17,7 +14,7 @@ import { useImportTags, useImportNewTaxonomy, } from './apiHooks'; -import { TaxonomyType } from '../import-tags/constants'; +import { TaxonomyType } from './constants'; let axiosMock; @@ -41,15 +38,7 @@ const taxonomyTypes = Object.values(TaxonomyType); describe('import taxonomy api calls', () => { beforeEach(() => { - initializeMockApp({ - authenticatedUser: { - userId: 3, - username: 'abc123', - administrator: true, - roles: [], - }, - }); - axiosMock = new MockAdapter(getAuthenticatedHttpClient()); + ({ axiosMock } = initializeMocks()); }); afterEach(() => { diff --git a/src/taxonomy/data/apiHooks.ts b/src/taxonomy/data/apiHooks.ts index 639b0cf7c7..a008039655 100644 --- a/src/taxonomy/data/apiHooks.ts +++ b/src/taxonomy/data/apiHooks.ts @@ -16,7 +16,7 @@ import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth'; import { apiUrls, ALL_TAXONOMIES, getApiErrorMessage } from './api'; import * as api from './api'; import type { QueryOptions, TagListData } from './types'; -import { TaxonomyType } from '../import-tags/constants'; +import { TaxonomyType } from './constants'; // Query key patterns. Allows an easy way to clear all data related to a given taxonomy. // https://github.com/openedx/frontend-app-admin-portal/blob/2ba315d/docs/decisions/0006-tanstack-react-query.rst diff --git a/src/taxonomy/data/constants.ts b/src/taxonomy/data/constants.ts index dc205768a2..2cca630d22 100644 --- a/src/taxonomy/data/constants.ts +++ b/src/taxonomy/data/constants.ts @@ -6,3 +6,14 @@ * will be incomplete because the backend only supports a taxonomy size of 10,000 items or fewer. */ export const MAX_TAXONOMY_ITEMS = 10000; + +/** + * The type of a taxonomy. + * + * Note: the backend also has a "system" type, reserved for platform-defined + * taxonomies. It is intentionally not selectable by users. + */ +export enum TaxonomyType { + Tags = 'tags', + Competency = 'competency', +} diff --git a/src/taxonomy/import-tags/ImportTagsWizard.jsx b/src/taxonomy/import-tags/ImportTagsWizard.jsx index 88cabc7878..b21b9efb4c 100644 --- a/src/taxonomy/import-tags/ImportTagsWizard.jsx +++ b/src/taxonomy/import-tags/ImportTagsWizard.jsx @@ -27,7 +27,8 @@ import { TaxonomyContext } from '../common/context'; import { getTaxonomyExportFile, apiUrls } from '../data/api'; import { useImportTags, useImportPlan, useImportNewTaxonomy } from '../data/apiHooks'; import messages from './messages'; -import { TaxonomyType, TAXONOMY_TYPE_OPTIONS } from './constants'; +import { TAXONOMY_TYPE_OPTIONS } from './constants'; +import { TaxonomyType } from '@src/taxonomy/data/constants'; import LoadingButton from '@src/generic/loading-button'; import { LoadingSpinner } from '@src/generic/Loading'; import { getFileSizeToClosestByte } from '@src/utils'; @@ -258,7 +259,7 @@ PopulateStep.propTypes = { taxonomyPopulateData: PropTypes.shape({ taxonomyName: PropTypes.string.isRequired, taxonomyDesc: PropTypes.string.isRequired, - taxonomyType: PropTypes.oneOf(TAXONOMY_TYPE_OPTIONS.map(({ value }) => value)).isRequired, + taxonomyType: PropTypes.string.isRequired, }).isRequired, setTaxonomyPopulateData: PropTypes.func.isRequired, }; diff --git a/src/taxonomy/import-tags/constants.ts b/src/taxonomy/import-tags/constants.ts index 837004c40a..32e7159352 100644 --- a/src/taxonomy/import-tags/constants.ts +++ b/src/taxonomy/import-tags/constants.ts @@ -1,16 +1,6 @@ +import { TaxonomyType } from '@src/taxonomy/data/constants'; import messages from './messages'; -/** - * The type of a taxonomy. - * - * Note: the backend also has a "system" type, reserved for platform-defined - * taxonomies. It is intentionally not selectable by users. - */ -export enum TaxonomyType { - Tags = 'tags', - Competency = 'competency', -} - /** * The taxonomy types a user can pick when importing a taxonomy. * The backend also supports a "system" type, but it is reserved for From ba2f6976e616dd50664aeab0d1045afd793e8189 Mon Sep 17 00:00:00 2001 From: javoconsultant Date: Fri, 28 Aug 2026 20:39:59 +0500 Subject: [PATCH 4/6] refactor(import-tags): replace SelectMenu with native select for taxonomy type and remove unused styles --- src/taxonomy/import-tags/ImportTagsWizard.jsx | 39 +++++++------------ .../import-tags/ImportTagsWizard.scss | 6 --- .../import-tags/ImportTagsWizard.test.jsx | 27 ++++--------- 3 files changed, 20 insertions(+), 52 deletions(-) delete mode 100644 src/taxonomy/import-tags/ImportTagsWizard.scss diff --git a/src/taxonomy/import-tags/ImportTagsWizard.jsx b/src/taxonomy/import-tags/ImportTagsWizard.jsx index b21b9efb4c..f11b18583e 100644 --- a/src/taxonomy/import-tags/ImportTagsWizard.jsx +++ b/src/taxonomy/import-tags/ImportTagsWizard.jsx @@ -12,8 +12,6 @@ import { Stack, Stepper, Form, - MenuItem, - SelectMenu, } from '@openedx/paragon'; import { DeleteOutline, @@ -33,8 +31,6 @@ import LoadingButton from '@src/generic/loading-button'; import { LoadingSpinner } from '@src/generic/Loading'; import { getFileSizeToClosestByte } from '@src/utils'; -import './ImportTagsWizard.scss'; - const linebreak = ( <>

@@ -204,8 +200,8 @@ const PopulateStep = ({ setTaxonomyPopulateData(updatedState); }; - const handleTypeChange = (taxonomyType) => { - setTaxonomyPopulateData({ ...taxonomyPopulateData, taxonomyType }); + const handleTypeChange = (e) => { + setTaxonomyPopulateData({ ...taxonomyPopulateData, taxonomyType: e.target.value }); }; return ( @@ -225,30 +221,21 @@ const PopulateStep = ({ /> - + {intl.formatMessage(messages.importWizardStepPopulateTaxonomyType)} - - {TAXONOMY_TYPE_OPTIONS.map(({ value, message }) => { - const isSelected = value === taxonomyPopulateData.taxonomyType; - return ( - handleTypeChange(value)} - > - {intl.formatMessage(message)} - - ); - })} - + {TAXONOMY_TYPE_OPTIONS.map(({ value, message }) => ( + + ))} + diff --git a/src/taxonomy/import-tags/ImportTagsWizard.scss b/src/taxonomy/import-tags/ImportTagsWizard.scss deleted file mode 100644 index 80632106a6..0000000000 --- a/src/taxonomy/import-tags/ImportTagsWizard.scss +++ /dev/null @@ -1,6 +0,0 @@ -.taxonomy-type-select { - .btn { - width: 100%; - justify-content: space-between; - } -} diff --git a/src/taxonomy/import-tags/ImportTagsWizard.test.jsx b/src/taxonomy/import-tags/ImportTagsWizard.test.jsx index 2debd8e0a2..8f90f1b5bb 100644 --- a/src/taxonomy/import-tags/ImportTagsWizard.test.jsx +++ b/src/taxonomy/import-tags/ImportTagsWizard.test.jsx @@ -328,29 +328,16 @@ describe('', () => { target: { value: 'New Taxonomy Description' }, }); - // The taxonomy type dropdown is a `SelectMenu`, whose options are rendered as links. + // The taxonomy type dropdown is a native ``, whose options are rendered as `