Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/devextreme/js/__internal/core/di/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export class DIContext {
return instance;
}

throw new Error('DI item is not registered');
throw new Error(`DI item is not registered: ${id}`);
}

public tryGet<T>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,19 @@ import { describe, expect, it } from '@jest/globals';
import type { SelectionChangedEvent } from '@js/ui/tree_view';

import { ColumnsController } from '../columns_controller';
import { getContext } from '../di.test_utils';
import type { Options } from '../options';
import { OptionsControllerMock } from '../options_controller/options_controller.mock';
import { ColumnChooserController } from './controller';
import { expectColumnVisibility } from './test-utils';

const createColumnChooserController = (options?: Options): {
controller: ColumnChooserController;
columnsController: ColumnsController;
optionsController: OptionsControllerMock;
} => {
const optionsController = new OptionsControllerMock(options ?? {
columnChooser: {
enabled: true,
},
});
const columnsController = new ColumnsController(optionsController);

const columnChooserController = new ColumnChooserController(columnsController, optionsController);
const setup = (options: Options) => {
const context = getContext(options);

return {
controller: columnChooserController,
columnsController,
optionsController,
controller: context.get(ColumnChooserController),
columnsController: context.get(ColumnsController),
optionsController: context.get(OptionsControllerMock),
};
};

Expand All @@ -44,7 +34,7 @@ describe('ColumnChooser', () => {
};

it('is correct', () => {
const { controller } = createColumnChooserController({
const { controller } = setup({
columns: [
{ dataField: 'A Column' },
{ dataField: 'B Column' },
Expand All @@ -55,7 +45,7 @@ describe('ColumnChooser', () => {
});

it('is correct when a column has showInColumnChooser=false', () => {
const { controller } = createColumnChooserController({
const { controller } = setup({
columns: [
{ dataField: 'A Column' },
{ dataField: 'B Column', showInColumnChooser: false },
Expand All @@ -67,7 +57,7 @@ describe('ColumnChooser', () => {
});

it('is correct when sortOrder is set', () => {
const { controller, optionsController } = createColumnChooserController({
const { controller, optionsController } = setup({
columns: [
{ dataField: 'C Column' },
{ dataField: 'A Column' },
Expand All @@ -88,7 +78,7 @@ describe('ColumnChooser', () => {

describe('items state', () => {
it('is correct', () => {
const { controller } = createColumnChooserController({
const { controller } = setup({
columns: [
{ dataField: 'A Column' },
{ dataField: 'B Column', caption: 'B Caption' },
Expand All @@ -108,7 +98,7 @@ describe('ColumnChooser', () => {
});

it('updated when column option changed on select mode', () => {
const { columnsController, controller } = createColumnChooserController({
const { columnsController, controller } = setup({
columns: ['Column 1', 'Column 2', 'Column 3', 'Column 4', 'Column 5'],
columnChooser: {
enabled: true,
Expand Down Expand Up @@ -155,7 +145,7 @@ describe('ColumnChooser', () => {
});

it('onSelectionChanged', () => {
const { controller, columnsController } = createColumnChooserController({
const { controller, columnsController } = setup({
columns: [
{ dataField: 'A Column' },
{ dataField: 'B Column' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,9 @@ import DataSource from '@js/data/data_source';
import { logger } from '@ts/core/utils/m_console';
import ArrayStore from '@ts/data/m_array_store';

import { ColumnsController } from '../columns_controller';
import { FilterController } from '../filtering';
import { getContext } from '../di.test_utils';
import type { Options } from '../options';
import { OptionsControllerMock } from '../options_controller/options_controller.mock';
import { SortingController } from '../sorting_controller';
import { DataController } from './data_controller';

beforeAll(() => {
Expand All @@ -24,15 +22,11 @@ afterAll(() => {
});

const setup = (options: Options) => {
const optionsController = new OptionsControllerMock(options);
const filterController = new FilterController(optionsController);
const columnsController = new ColumnsController(optionsController);
const sortingController = new SortingController(optionsController, columnsController);
const dataController = new DataController(optionsController, sortingController, filterController);
const context = getContext(options);

return {
optionsController,
dataController,
optionsController: context.get(OptionsControllerMock),
dataController: context.get(DataController),
};
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,17 @@ import {
} from '@jest/globals';
import ArrayStore from '@ts/data/m_array_store';

import { ColumnsController } from '../columns_controller';
import { FilterController } from '../filtering';
import { getContext } from '../di.test_utils';
import type { Options } from '../options';
import { OptionsControllerMock } from '../options_controller/options_controller.mock';
import { SortingController } from '../sorting_controller';
import { DataController } from './data_controller';
import { PublicMethods } from './public_methods';

const setup = (options: Options) => {
const optionsController = new OptionsControllerMock(options);
const filterController = new FilterController(optionsController);
const columnsController = new ColumnsController(optionsController);
const sortingController = new SortingController(optionsController, columnsController);
const dataController = new DataController(optionsController, sortingController, filterController);
const context = getContext(options);

const optionsController = context.get(OptionsControllerMock);
const dataController = context.get(DataController);

// @ts-expect-error
const gridCore = new (PublicMethods(class {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/* eslint-disable spellcheck/spell-checker */
import { DIContext } from '@ts/core/di';

import { register } from './di';
import type { Options } from './options';
import { OptionsController } from './options_controller/options_controller';
import { OptionsControllerMock } from './options_controller/options_controller.mock';

export function getContext(config: Options): DIContext {
const diContext = new DIContext();
register(diContext);

const options = new OptionsControllerMock(config);
diContext.registerInstance(OptionsController, options);
diContext.registerInstance(OptionsControllerMock, options);

return diContext;
}
44 changes: 44 additions & 0 deletions packages/devextreme/js/__internal/grids/new/grid_core/di.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/* eslint-disable spellcheck/spell-checker */
import type { DIContext } from '@ts/core/di/index';
import { SearchView } from '@ts/grids/new/grid_core/search/view';

import * as ColumnChooserModule from './column_chooser/index';
import * as ColumnsControllerModule from './columns_controller/index';
import * as DataControllerModule from './data_controller/index';
import { ErrorController } from './error_controller/error_controller';
import { FilterPanelView } from './filtering/filter_panel/view';
import {
HeaderFilterController,
HeaderFilterPopupView,
} from './filtering/header_filter/index';
import * as FilterControllerModule from './filtering/index';
import { ItemsController } from './items_controller/items_controller';
import { PagerView } from './pager/view';
import { SearchController } from './search/controller';
import * as SelectionControllerModule from './selection/index';
import * as SortingControllerModule from './sorting_controller/index';
import { ToolbarController } from './toolbar/controller';
import { ToolbarView } from './toolbar/view';

export function register(diContext: DIContext): void {
diContext.register(DataControllerModule.DataController);
diContext.register(DataControllerModule.CompatibilityDataController);
diContext.register(ItemsController);
diContext.register(ColumnsControllerModule.ColumnsController);
diContext.register(SelectionControllerModule.Controller);
diContext.register(ColumnsControllerModule.CompatibilityColumnsController);
diContext.register(SortingControllerModule.SortingController);
diContext.register(ToolbarController);
diContext.register(ToolbarView);
diContext.register(PagerView);
diContext.register(SearchController);
diContext.register(SearchView);
diContext.register(ColumnChooserModule.ColumnChooserController);
diContext.register(ColumnChooserModule.ColumnChooserView);
diContext.register(FilterControllerModule.FilterController);
diContext.register(FilterControllerModule.FilterPanelView);
diContext.register(FilterPanelView);
diContext.register(HeaderFilterController);
diContext.register(HeaderFilterPopupView);
diContext.register(ErrorController);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,17 @@
import { describe, expect, it } from '@jest/globals';
import { ColumnsController } from '@ts/grids/new/grid_core/columns_controller';
import type { Column } from '@ts/grids/new/grid_core/columns_controller/types';
import { DataController } from '@ts/grids/new/grid_core/data_controller';
import { FilterController } from '@ts/grids/new/grid_core/filtering';
import { HeaderFilterController } from '@ts/grids/new/grid_core/filtering/header_filter/controller';
import type { HeaderFilterColumnOptions } from '@ts/grids/new/grid_core/filtering/header_filter/types';
import type { Options } from '@ts/grids/new/grid_core/options';
import { OptionsControllerMock } from '@ts/grids/new/grid_core/options_controller/options_controller.mock';

import { SortingController } from '../../sorting_controller/sorting_controller';

const setup = (config: Options = {}) => {
const options = new OptionsControllerMock(config);
const filterController = new FilterController(options);
const columnsController = new ColumnsController(options);
const sortingController = new SortingController(options, columnsController);
const dataController = new DataController(options, sortingController, filterController);
const headerFilterController = new HeaderFilterController(
options,
dataController,
columnsController,
);

import { getContext } from '../../di.test_utils';

const setup = (options = {}) => {
const context = getContext(options);

return {
headerFilterController,
columnsController,
headerFilterController: context.get(HeaderFilterController),
columnsController: context.get(ColumnsController),
};
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,21 @@
/* eslint-disable spellcheck/spell-checker */
import { describe, expect, it } from '@jest/globals';
import { SearchController } from '@ts/grids/new/grid_core/search';

import { ColumnsController } from '../columns_controller/columns_controller';
import { DataController } from '../data_controller';
import { FilterController } from '../filtering';
import { getContext } from '../di.test_utils';
import type { Options } from '../options';
import { OptionsControllerMock } from '../options_controller/options_controller.mock';
import { SortingController } from '../sorting_controller';
import { ItemsController } from './items_controller';

const setup = (config: Options = {}) => {
const options = new OptionsControllerMock(config);
const columnsController = new ColumnsController(options);
const filterController = new FilterController(options);
const sortingController = new SortingController(options, columnsController);
const searchController = new SearchController(options);
const dataController = new DataController(options, sortingController, filterController);
const itemsController = new ItemsController(
dataController,
columnsController,
searchController,
);
const setup = (options: Options = {}) => {
const context = getContext(options);

return {
options,
dataController,
columnsController,
itemsController,
options: context.get(OptionsControllerMock),
dataController: context.get(DataController),
columnsController: context.get(ColumnsController),
itemsController: context.get(ItemsController),
};
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,22 @@
import { describe, expect, it } from '@jest/globals';

import { ColumnsController } from '../columns_controller';
import { DataController } from '../data_controller/data_controller';
import { FilterController } from '../filtering';
import { getContext } from '../di.test_utils';
import type { Options } from '../options';
import { OptionsControllerMock } from '../options_controller/options_controller.mock';
import { SortingController } from '../sorting_controller';
import { PagerView } from './view';

const createPagerView = (options?: Options) => {
const rootElement = document.createElement('div');
const optionsController = new OptionsControllerMock(options ?? {
const context = getContext(options ?? {
dataSource: [],
pager: {
visible: true,
},
});

const filterController = new FilterController(optionsController);
const columnsController = new ColumnsController(optionsController);
const sortingController = new SortingController(optionsController, columnsController);
const dataController = new DataController(optionsController, sortingController, filterController);
const rootElement = document.createElement('div');

const pager = new PagerView(dataController, optionsController);
const pager = context.get(PagerView);
const optionsController = context.get(OptionsControllerMock);

pager.render(rootElement);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,24 @@ import {
afterEach,
describe, expect, it, jest,
} from '@jest/globals';
import { OptionsControllerMock } from '@ts/grids/new/card_view/options_controller.mock';
import type { Options } from '@ts/grids/new/grid_core/options';
import { OptionsControllerMock } from '@ts/grids/new/grid_core/options_controller/options_controller.mock';
import { splitHighlightedText } from '@ts/grids/new/grid_core/search/utils';

import { getContext } from '../di.test_utils';
import { SearchController } from './controller';

jest.mock('@ts/grids/new/grid_core/search/utils', () => ({
splitHighlightedText: jest.fn(),
}));

const setup = (config: Options = {}) => {
const options = new OptionsControllerMock(config);
const controller = new SearchController(options);
const context = getContext(config);

return { options, controller };
return {
options: context.get(OptionsControllerMock),
controller: context.get(SearchController),
};
};

describe('SearchController', () => {
Expand Down
Loading