From 29e2c48496e6cbe903fb6a001426ed510923af46 Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Thu, 23 Jun 2022 20:51:50 +0200 Subject: [PATCH] Add tests for limit zero Signed-off-by: Vincenzo Scamporlino --- .../service/DefaultEntitiesCatalog.test.ts | 29 ++++++++++++++++++- .../src/service/DefaultEntitiesCatalog.ts | 2 +- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts index 9b315f42b7..35c1f7153b 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts @@ -17,7 +17,7 @@ import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { Knex } from 'knex'; -import { v4 as uuid } from 'uuid'; +import { v4 as uuid, v4 } from 'uuid'; import { PaginatedEntitiesCursorRequest, PaginatedEntitiesInitialRequest, @@ -1046,6 +1046,33 @@ describe('DefaultEntitiesCatalog', () => { expect(response.totalItems).toBe(3); }, ); + + it.each(databases.eachSupportedId())( + 'should include totalItems and empty entities in the response in case limit is zero, %p', + async databaseId => { + const { knex } = await createDatabase(databaseId); + + await Promise.all( + Array(20) + .fill(0) + .map(() => + addEntityToSearch(knex, { + apiVersion: 'a', + kind: 'k', + metadata: { name: v4() }, + }), + ), + ); + + const catalog = new DefaultEntitiesCatalog(knex); + + const request: PaginatedEntitiesInitialRequest = { + limit: 0, + }; + const response = await catalog.paginatedEntities(request); + expect(response).toEqual({ totalItems: 20, entities: [] }); + }, + ); }); describe('removeEntityByUid', () => { diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts index b860c16c86..bdd36af483 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts @@ -425,7 +425,7 @@ export class DefaultEntitiesCatalog implements EntitiesCatalog { const isInitialRequest = cursor.firstFieldId === ''; - const firstFieldId = cursor.firstFieldId || rows[0].value; + const firstFieldId = cursor.firstFieldId || rows[0]?.value; const nextCursor = hasMoreResults ? encodeCursor({