Infinite scrolling in relation picker menu (#12051)

https://github.com/user-attachments/assets/4be785e0-ea8a-4c8e-840e-6fa0a663d7ba

Closes #11938

---------

Co-authored-by: martmull <martmull@hotmail.fr>
This commit is contained in:
Abdul Rahman
2025-05-23 20:53:09 +05:30
committed by GitHub
parent 6ef9a3b4c9
commit af5762c8ba
37 changed files with 1867 additions and 562 deletions

View File

@ -0,0 +1,44 @@
import { deleteAllRecords } from 'test/integration/utils/delete-all-records';
import { SEED_APPLE_WORKSPACE_ID } from 'src/database/typeorm-seeds/core/workspaces';
export const cleanTestDatabase = async ({ seed }: { seed: boolean }) => {
if (process.env.NODE_ENV !== 'test') {
throw new Error(
"Don't run this 'setupTest' function in a non test environment",
);
}
await Promise.all([
...[
'person',
'company',
'opportunity',
'workspaceMember',
'_pet',
'_surveyResult',
].map(
async (objectMetadataNameSingular) =>
await deleteAllRecords(objectMetadataNameSingular),
),
]);
if (!seed) {
return;
}
// @ts-expect-error legacy noImplicitAny
const mainDataSource = global.typeOrmService.getMainDataSource();
const dataSourceMetadata =
// @ts-expect-error legacy noImplicitAny
await global.dataSourceService.getLastDataSourceMetadataFromWorkspaceIdOrFail(
SEED_APPLE_WORKSPACE_ID,
);
// @ts-expect-error legacy noImplicitAny
await global.dataSeedWorkspaceCommand.seedRecords({
mainDataSource,
dataSourceMetadata,
});
};

View File

@ -8,6 +8,7 @@ import { StripeSDKService } from 'src/engine/core-modules/billing/stripe/stripe-
import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
import { ExceptionHandlerMockService } from 'src/engine/core-modules/exception-handler/mocks/exception-handler-mock.service';
import { MockedUnhandledExceptionFilter } from 'src/engine/core-modules/exception-handler/mocks/mock-unhandled-exception.filter';
import { CommandModule } from 'src/command/command.module';
interface TestingModuleCreatePreHook {
(moduleBuilder: TestingModuleBuilder): TestingModuleBuilder;
@ -32,7 +33,7 @@ export const createApp = async (
const stripeSDKMockService = new StripeSDKMockService();
const mockExceptionHandlerService = new ExceptionHandlerMockService();
let moduleBuilder: TestingModuleBuilder = Test.createTestingModule({
imports: [AppModule],
imports: [AppModule, CommandModule],
providers: [
{
provide: APP_FILTER,

View File

@ -2,6 +2,9 @@ import { JestConfigWithTsJest } from 'ts-jest';
import 'tsconfig-paths/register';
import { rawDataSource } from 'src/database/typeorm/raw/raw.datasource';
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { DataSeedWorkspaceCommand } from 'src/database/commands/data-seed-dev-workspace.command';
import { createApp } from './create-app';
@ -21,4 +24,10 @@ export default async (_, projectConfig: JestConfigWithTsJest) => {
global.app = app;
// @ts-expect-error legacy noImplicitAny
global.testDataSource = rawDataSource;
// @ts-expect-error legacy noImplicitAny
global.typeOrmService = app.get(TypeORMService);
// @ts-expect-error legacy noImplicitAny
global.dataSourceService = app.get(DataSourceService);
// @ts-expect-error legacy noImplicitAny
global.dataSeedWorkspaceCommand = app.get(DataSeedWorkspaceCommand);
};