Skip to content

Commit b293150

Browse files
committed
test: fix test
1 parent 3bec4ca commit b293150

File tree

3 files changed

+104
-16
lines changed

3 files changed

+104
-16
lines changed

frontend/app_flowy/lib/plugins/board/application/board_data_controller.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ class BoardDataController {
3434

3535
// key: the block id
3636
final LinkedHashMap<String, GridBlockCache> _blocks;
37-
LinkedHashMap<String, GridBlockCache> get blocks => _blocks;
37+
UnmodifiableMapView<String, GridBlockCache> get blocks =>
38+
UnmodifiableMapView(_blocks);
3839

3940
OnFieldsChanged? _onFieldsChanged;
4041
OnGridChanged? _onGridChanged;

frontend/app_flowy/test/bloc_test/grid_test/util.dart

Lines changed: 101 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import 'dart:collection';
2+
import 'package:app_flowy/plugins/board/application/board_data_controller.dart';
3+
import 'package:app_flowy/plugins/board/board.dart';
24
import 'package:app_flowy/plugins/grid/application/block/block_cache.dart';
35
import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart';
46
import 'package:app_flowy/plugins/grid/application/field/field_controller.dart';
7+
import 'package:app_flowy/plugins/grid/application/field/field_editor_bloc.dart';
58
import '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';
610
import 'package:app_flowy/plugins/grid/application/grid_data_controller.dart';
711
import 'package:app_flowy/plugins/grid/application/row/row_bloc.dart';
812
import '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
1822
class 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

frontend/app_flowy/test/bloc_test/menu_test/app_bloc_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ void main() {
9090
"delete the document",
9191
build: () => AppBloc(app: app)..add(const AppEvent.initial()),
9292
act: (bloc) => bloc.add(AppEvent.deleteView(view.id)),
93+
wait: blocResponseDuration(),
9394
verify: (bloc) {
9495
assert(bloc.state.views.isEmpty);
9596
},

0 commit comments

Comments
 (0)