Explorar el Código

chore: add board test (#1363)

Nathan.fooo hace 2 años
padre
commit
586c20a14e

+ 2 - 1
frontend/app_flowy/lib/plugins/board/application/board_bloc.dart

@@ -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;

+ 44 - 0
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<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);
+      },
+    );
+  });
+}

+ 42 - 0
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<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);
+}