chore: add board test (#1363)

This commit is contained in:
Nathan.fooo 2022-10-25 19:50:11 +08:00 committed by GitHub
parent 1e6c4a4d88
commit 586c20a14e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 88 additions and 1 deletions

View File

@ -24,7 +24,8 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
final BoardDataController _gridDataController;
late final AppFlowyBoardController boardController;
final MoveRowFFIService _rowService;
LinkedHashMap<String, GroupController> groupControllers = LinkedHashMap();
final LinkedHashMap<String, GroupController> groupControllers =
LinkedHashMap();
GridFieldController get fieldController =>
_gridDataController.fieldController;

View File

@ -0,0 +1,44 @@
import 'package:app_flowy/plugins/board/application/board_bloc.dart';
import 'package:bloc_test/bloc_test.dart';
import 'package:flutter_test/flutter_test.dart';
import 'util.dart';
void main() {
late AppFlowyBoardTest boardTest;
setUpAll(() async {
boardTest = await AppFlowyBoardTest.ensureInitialized();
});
group('description', () {
late BoardBloc boardBloc;
late String groupId;
setUp(() async {
await boardTest.createTestBoard();
boardBloc = BoardBloc(view: boardTest.boardView)
..add(const BoardEvent.initial());
await boardResponseFuture();
groupId = boardBloc.state.groupIds.first;
// the group at index 0 is the 'No status' group;
assert(boardBloc.groupControllers[groupId]!.group.rows.isEmpty);
assert(boardBloc.state.groupIds.length == 4);
});
blocTest<BoardBloc, BoardState>(
"create card",
build: () => boardBloc,
act: (bloc) async {
boardBloc.add(BoardEvent.createBottomRow(boardBloc.state.groupIds[0]));
},
wait: boardResponseDuration(),
verify: (bloc) {
//
assert(bloc.groupControllers[groupId]!.group.rows.length == 1);
},
);
});
}

View File

@ -0,0 +1,42 @@
import 'package:app_flowy/plugins/board/board.dart';
import 'package:app_flowy/workspace/application/app/app_service.dart';
import 'package:flowy_sdk/protobuf/flowy-folder/view.pb.dart';
import '../../util.dart';
class AppFlowyBoardTest {
final AppFlowyUnitTest _inner;
late ViewPB boardView;
AppFlowyBoardTest(AppFlowyUnitTest unitTest) : _inner = unitTest;
static Future<AppFlowyBoardTest> ensureInitialized() async {
final inner = await AppFlowyUnitTest.ensureInitialized();
return AppFlowyBoardTest(inner);
}
Future<void> createTestBoard() async {
final app = await _inner.createTestApp();
final builder = BoardPluginBuilder();
final result = await AppService().createView(
appId: app.id,
name: "Test Board",
dataFormatType: builder.dataFormatType,
pluginType: builder.pluginType,
layoutType: builder.layoutType!,
);
await result.fold(
(view) async {
boardView = view;
},
(error) {},
);
}
}
Future<void> boardResponseFuture() {
return Future.delayed(boardResponseDuration(milliseconds: 200));
}
Duration boardResponseDuration({int milliseconds = 200}) {
return Duration(milliseconds: milliseconds);
}