From bd4c4cec5d52fc3104159f276c062896fd07ad3f Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Wed, 21 Jun 2023 10:42:04 +0200 Subject: [PATCH] catalog-react: fix UserListPicker tests Signed-off-by: Vincenzo Scamporlino --- .../UserListPicker/UserListPicker.test.tsx | 84 +++++++++++++++---- 1 file changed, 66 insertions(+), 18 deletions(-) diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx index ed6c43d12e..f0b82b550e 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx @@ -19,7 +19,12 @@ import { fireEvent, render, waitFor, screen } from '@testing-library/react'; import { UserEntity } from '@backstage/catalog-model'; import { UserListPicker, UserListPickerProps } from './UserListPicker'; import { MockEntityListContextProvider } from '../../testUtils/providers'; -import { EntityTagFilter, EntityUserListFilter } from '../../filters'; +import { + EntityKindFilter, + EntityNamespaceFilter, + EntityTagFilter, + EntityUserListFilter, +} from '../../filters'; import { CatalogApi, QueryEntitiesInitialRequest, @@ -159,12 +164,19 @@ describe('', () => { it('renders filters', async () => { render( - + , ); + await waitFor(() => + expect(mockIdentityApi.getBackstageIdentity).toHaveBeenCalled(), + ); await waitFor(() => expect( screen.getAllByRole('menuitem').map(({ textContent }) => textContent), @@ -172,17 +184,25 @@ describe('', () => { ); expect(mockCatalogApi.queryEntities).toHaveBeenCalledWith({ - filter: {}, + filter: { + 'metadata.namespace': ['default'], + }, limit: 0, }); expect(mockCatalogApi.queryEntities).toHaveBeenCalledWith({ - filter: { 'metadata.name': ['e-1', 'e-2'] }, + filter: { + 'metadata.namespace': ['default'], + 'relations.ownedBy': ['user:default/testuser'], + }, + limit: 0, + }); + expect(mockCatalogApi.queryEntities).toHaveBeenCalledWith({ + filter: { + 'metadata.namespace': ['default'], + 'metadata.name': ['e-1', 'e-2'], + }, limit: 1000, }); - expect(mockCatalogApi.queryEntities).toHaveBeenCalledWith({ - filter: { 'relations.ownedBy': ['user:default/testuser'] }, - limit: 0, - }); }); it('respects other frontend filters in counts', async () => { @@ -223,16 +243,23 @@ describe('', () => { it('respects the query parameter filter value', async () => { const updateFilters = jest.fn(); - const queryParameters = { user: 'owned' }; + const queryParameters = { user: 'owned', kind: 'component' }; render( , ); + await waitFor(() => + expect(mockIdentityApi.getBackstageIdentity).toHaveBeenCalled(), + ); await waitFor(() => expect(updateFilters).toHaveBeenLastCalledWith({ @@ -241,15 +268,16 @@ describe('', () => { ); expect(mockCatalogApi.queryEntities).toHaveBeenCalledWith({ - filter: {}, + filter: { kind: 'component' }, limit: 0, }); expect(mockCatalogApi.queryEntities).toHaveBeenCalledWith({ - filter: { 'metadata.name': ['e-1', 'e-2'] }, + filter: { kind: 'component', 'metadata.name': ['e-1', 'e-2'] }, limit: 1000, }); expect(mockCatalogApi.queryEntities).toHaveBeenCalledWith({ filter: { + kind: 'component', 'relations.ownedBy': ['user:default/testuser'], }, limit: 0, @@ -285,7 +313,11 @@ describe('', () => { @@ -293,6 +325,10 @@ describe('', () => { , ); + await waitFor(() => + expect(mockIdentityApi.getBackstageIdentity).toHaveBeenCalled(), + ); + await waitFor(() => expect(updateFilters).toHaveBeenLastCalledWith({ user: EntityUserListFilter.all(), @@ -304,7 +340,11 @@ describe('', () => { @@ -319,9 +359,14 @@ describe('', () => { describe('filter resetting', () => { let updateFilters: jest.Mock; - const Picker = (props: UserListPickerProps) => ( + const Picker = ({ ...props }: UserListPickerProps) => ( - + @@ -331,7 +376,7 @@ describe('', () => { updateFilters = jest.fn(); }); - describe(`when there are no owned entities match the filter`, () => { + describe(`when there are no owned entities matching the filter`, () => { it('does not reset the filter while entities are loading', async () => { mockCatalogApi.queryEntities?.mockImplementation( () => new Promise(() => {}), @@ -342,7 +387,10 @@ describe('', () => { await waitFor(() => expect(mockCatalogApi.queryEntities).toHaveBeenCalled(), ); - expect(updateFilters).not.toHaveBeenCalled(); + + await expect( + waitFor(() => expect(updateFilters).toHaveBeenCalled()), + ).rejects.toThrow(); }); it('does not reset the filter while owned entities are loading', async () => {