11import 'dart:collection' ;
2+ import 'package:app_flowy/plugins/board/application/board_data_controller.dart' ;
3+ import 'package:app_flowy/plugins/board/board.dart' ;
24import 'package:app_flowy/plugins/grid/application/block/block_cache.dart' ;
35import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart' ;
46import 'package:app_flowy/plugins/grid/application/field/field_controller.dart' ;
7+ import 'package:app_flowy/plugins/grid/application/field/field_editor_bloc.dart' ;
58import 'package:app_flowy/plugins/grid/application/field/field_service.dart' ;
9+ import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart' ;
610import 'package:app_flowy/plugins/grid/application/grid_data_controller.dart' ;
711import 'package:app_flowy/plugins/grid/application/row/row_bloc.dart' ;
812import 'package:app_flowy/plugins/grid/application/row/row_cache.dart' ;
@@ -16,29 +20,90 @@ import '../../util.dart';
1620
1721/// Create a empty Grid for test
1822class AppFlowyGridTest {
19- final AppFlowyUnitTest _inner ;
23+ final AppFlowyUnitTest unitTest ;
2024 late ViewPB gridView;
21- late GridDataController _dataController;
25+ GridDataController ? _gridDataController;
26+ BoardDataController ? _boardDataController;
2227
23- AppFlowyGridTest (AppFlowyUnitTest unitTest) : _inner = unitTest ;
28+ AppFlowyGridTest ({ required this . unitTest}) ;
2429
2530 static Future <AppFlowyGridTest > ensureInitialized () async {
2631 final inner = await AppFlowyUnitTest .ensureInitialized ();
27- return AppFlowyGridTest (inner);
32+ return AppFlowyGridTest (unitTest : inner);
2833 }
2934
30- List <RowInfo > get rowInfos => _dataController.rowInfos;
35+ List <RowInfo > get rowInfos {
36+ if (_gridDataController != null ) {
37+ return _gridDataController! .rowInfos;
38+ }
3139
32- UnmodifiableMapView <String , GridBlockCache > get blocks =>
33- _dataController.blocks;
40+ if (_boardDataController != null ) {
41+ return _boardDataController! .rowInfos;
42+ }
3443
35- List <GridFieldContext > get fieldContexts =>
36- _dataController.fieldController.fieldContexts;
44+ throw Exception ();
45+ }
46+
47+ UnmodifiableMapView <String , GridBlockCache > get blocks {
48+ if (_gridDataController != null ) {
49+ return _gridDataController! .blocks;
50+ }
51+
52+ if (_boardDataController != null ) {
53+ return _boardDataController! .blocks;
54+ }
55+
56+ throw Exception ();
57+ }
58+
59+ List <GridFieldContext > get fieldContexts => fieldController.fieldContexts;
60+
61+ GridFieldController get fieldController {
62+ if (_gridDataController != null ) {
63+ return _gridDataController! .fieldController;
64+ }
65+
66+ if (_boardDataController != null ) {
67+ return _boardDataController! .fieldController;
68+ }
3769
38- GridFieldController get fieldController => _dataController.fieldController;
70+ throw Exception ();
71+ }
3972
4073 Future <void > createRow () async {
41- await _dataController.createRow ();
74+ if (_gridDataController != null ) {
75+ return _gridDataController! .createRow ();
76+ }
77+
78+ throw Exception ();
79+ }
80+
81+ FieldEditorBloc createFieldEditor ({
82+ GridFieldContext ? fieldContext,
83+ }) {
84+ IFieldTypeOptionLoader loader;
85+ if (fieldContext == null ) {
86+ loader = NewFieldTypeOptionLoader (gridId: gridView.id);
87+ } else {
88+ loader =
89+ FieldTypeOptionLoader (gridId: gridView.id, field: fieldContext.field);
90+ }
91+
92+ final editorBloc = FieldEditorBloc (
93+ fieldName: fieldContext? .name ?? '' ,
94+ isGroupField: fieldContext? .isGroupField ?? false ,
95+ loader: loader,
96+ gridId: gridView.id,
97+ );
98+ return editorBloc;
99+ }
100+
101+ Future <FieldEditorBloc > createFieldFromType (FieldType fieldType) async {
102+ final editor = createFieldEditor ()..add (const FieldEditorEvent .initial ());
103+ await gridResponseFuture ();
104+ editor.dataController.switchToField (fieldType);
105+ await gridResponseFuture ();
106+ return Future (() => editor);
42107 }
43108
44109 GridFieldContext singleSelectFieldContext () {
@@ -53,7 +118,7 @@ class AppFlowyGridTest {
53118 }
54119
55120 Future <void > createTestGrid () async {
56- final app = await _inner .createTestApp ();
121+ final app = await unitTest .createTestApp ();
57122 final builder = GridPluginBuilder ();
58123 final result = await AppService ().createView (
59124 appId: app.id,
@@ -65,9 +130,30 @@ class AppFlowyGridTest {
65130 await result.fold (
66131 (view) async {
67132 gridView = view;
68- _dataController = GridDataController (view: view);
69- final result = await _dataController.loadData ();
133+ _gridDataController = GridDataController (view: view);
134+ final result = await _gridDataController! .loadData ();
135+ result.fold ((l) => null , (r) => throw Exception (r));
136+ },
137+ (error) {},
138+ );
139+ }
140+
141+ Future <void > createTestBoard () async {
142+ final app = await unitTest.createTestApp ();
143+ final builder = BoardPluginBuilder ();
144+ final result = await AppService ().createView (
145+ appId: app.id,
146+ name: "Test Board" ,
147+ dataFormatType: builder.dataFormatType,
148+ pluginType: builder.pluginType,
149+ layoutType: builder.layoutType! ,
150+ );
151+ await result.fold (
152+ (view) async {
153+ _boardDataController = BoardDataController (view: view);
154+ final result = await _boardDataController! .loadData ();
70155 result.fold ((l) => null , (r) => throw Exception (r));
156+ gridView = view;
71157 },
72158 (error) {},
73159 );
@@ -101,7 +187,7 @@ class AppFlowyGridCellTest {
101187
102188 final rowDataController = GridRowDataController (
103189 rowInfo: rowInfo,
104- fieldController: _gridTest._dataController .fieldController,
190+ fieldController: _gridTest._gridDataController ! .fieldController,
105191 rowCache: rowCache! ,
106192 );
107193
0 commit comments