From 586c20a14e80d0cb551d507ca783c21f0d88982a Mon Sep 17 00:00:00 2001 From: "Nathan.fooo" <86001920+appflowy@users.noreply.github.com> Date: Tue, 25 Oct 2022 19:50:11 +0800 Subject: [PATCH] chore: add board test (#1363) --- .../plugins/board/application/board_bloc.dart | 3 +- .../board_test/create_card_test.dart | 44 +++++++++++++++++++ .../test/bloc_test/board_test/util.dart | 42 ++++++++++++++++++ 3 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 frontend/app_flowy/test/bloc_test/board_test/create_card_test.dart create mode 100644 frontend/app_flowy/test/bloc_test/board_test/util.dart diff --git a/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart index ce72413425..0918ba2011 100644 --- a/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart @@ -24,7 +24,8 @@ class BoardBloc extends Bloc { final BoardDataController _gridDataController; late final AppFlowyBoardController boardController; final MoveRowFFIService _rowService; - LinkedHashMap groupControllers = LinkedHashMap(); + final LinkedHashMap groupControllers = + LinkedHashMap(); GridFieldController get fieldController => _gridDataController.fieldController; diff --git a/frontend/app_flowy/test/bloc_test/board_test/create_card_test.dart b/frontend/app_flowy/test/bloc_test/board_test/create_card_test.dart new file mode 100644 index 0000000000..cfadaaf5c8 --- /dev/null +++ b/frontend/app_flowy/test/bloc_test/board_test/create_card_test.dart @@ -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( + "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); + }, + ); + }); +} diff --git a/frontend/app_flowy/test/bloc_test/board_test/util.dart b/frontend/app_flowy/test/bloc_test/board_test/util.dart new file mode 100644 index 0000000000..94ba81a80a --- /dev/null +++ b/frontend/app_flowy/test/bloc_test/board_test/util.dart @@ -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 ensureInitialized() async { + final inner = await AppFlowyUnitTest.ensureInitialized(); + return AppFlowyBoardTest(inner); + } + + Future 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 boardResponseFuture() { + return Future.delayed(boardResponseDuration(milliseconds: 200)); +} + +Duration boardResponseDuration({int milliseconds = 200}) { + return Duration(milliseconds: milliseconds); +}