fix: add card at the beginning (#3835)

This commit is contained in:
Mathias Mogensen
2023-10-30 17:34:37 +01:00
committed by GitHub
parent dd9b1fb78f
commit d358e18f33
5 changed files with 115 additions and 2 deletions

View File

@ -0,0 +1,101 @@
import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:appflowy_board/appflowy_board.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import '../util/util.dart';
const defaultFirstCardName = 'Card 1';
const defaultLastCardName = 'Card 3';
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
group('board add row test', () {
testWidgets('Add card from header', (tester) async {
await tester.initializeAppFlowy();
await tester.tapGoButton();
await tester.createNewPageWithName(layout: ViewLayoutPB.Board);
final findFirstCard = find.descendant(
of: find.byType(AppFlowyGroupCard),
matching: find.byType(FlowyText),
);
FlowyText firstCardText = tester.firstWidget(findFirstCard);
expect(firstCardText.text, defaultFirstCardName);
await tester.tap(
find
.descendant(
of: find.byType(AppFlowyGroupHeader),
matching: find.byType(FlowySvg),
)
.first,
);
await tester.pumpAndSettle();
const newCardName = 'Card 4';
await tester.enterText(
find.descendant(
of: find.byType(IntrinsicHeight),
matching: find.byType(TextField),
),
newCardName,
);
await tester.pumpAndSettle();
await tester.tap(find.byType(AppFlowyBoard));
await tester.pumpAndSettle();
firstCardText = tester.firstWidget(findFirstCard);
expect(firstCardText.text, newCardName);
});
testWidgets('Add card from footer', (tester) async {
await tester.initializeAppFlowy();
await tester.tapGoButton();
await tester.createNewPageWithName(layout: ViewLayoutPB.Board);
final findLastCard = find.descendant(
of: find.byType(AppFlowyGroupCard),
matching: find.byType(FlowyText),
);
FlowyText? lastCardText =
tester.widgetList(findLastCard).last as FlowyText;
expect(lastCardText.text, defaultLastCardName);
await tester.tap(
find
.descendant(
of: find.byType(AppFlowyGroupFooter),
matching: find.byType(FlowySvg),
)
.first,
);
await tester.pumpAndSettle();
const newCardName = 'Card 4';
await tester.enterText(
find.descendant(
of: find.byType(IntrinsicHeight),
matching: find.byType(TextField),
),
newCardName,
);
await tester.pumpAndSettle();
await tester.tap(find.byType(AppFlowyBoard));
await tester.pumpAndSettle();
lastCardText = tester.widgetList(findLastCard).last as FlowyText;
expect(lastCardText.text, newCardName);
});
});
}

View File

@ -1,10 +1,12 @@
import 'package:integration_test/integration_test.dart'; import 'package:integration_test/integration_test.dart';
import 'board_row_test.dart' as board_row_test; import 'board_row_test.dart' as board_row_test;
import 'board_add_row_test.dart' as board_add_row_test;
void startTesting() { void startTesting() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized(); IntegrationTestWidgetsFlutterBinding.ensureInitialized();
// Board integration tests // Board integration tests
board_row_test.main(); board_row_test.main();
board_add_row_test.main();
} }

View File

@ -177,6 +177,7 @@ class DatabaseController {
Future<Either<RowMetaPB, FlowyError>> createRow({ Future<Either<RowMetaPB, FlowyError>> createRow({
RowId? startRowId, RowId? startRowId,
String? groupId, String? groupId,
bool fromBeginning = false,
void Function(RowDataBuilder builder)? withCells, void Function(RowDataBuilder builder)? withCells,
}) { }) {
Map<String, String>? cellDataByFieldId; Map<String, String>? cellDataByFieldId;
@ -191,6 +192,7 @@ class DatabaseController {
startRowId: startRowId, startRowId: startRowId,
groupId: groupId, groupId: groupId,
cellDataByFieldId: cellDataByFieldId, cellDataByFieldId: cellDataByFieldId,
fromBeginning: fromBeginning,
); );
} }

View File

@ -35,9 +35,13 @@ class DatabaseViewBackendService {
RowId? startRowId, RowId? startRowId,
String? groupId, String? groupId,
Map<String, String>? cellDataByFieldId, Map<String, String>? cellDataByFieldId,
bool fromBeginning = false,
}) { }) {
final payload = CreateRowPayloadPB.create()..viewId = viewId; final payload = CreateRowPayloadPB.create()..viewId = viewId;
payload.startRowId = startRowId ?? "";
if (!fromBeginning || startRowId != null) {
payload.startRowId = startRowId ?? "";
}
if (groupId != null) { if (groupId != null) {
payload.groupId = groupId; payload.groupId = groupId;

View File

@ -90,7 +90,11 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
); );
}, },
createHeaderRow: (String groupId) async { createHeaderRow: (String groupId) async {
final result = await databaseController.createRow(groupId: groupId); final result = await databaseController.createRow(
groupId: groupId,
fromBeginning: true,
);
result.fold( result.fold(
(_) {}, (_) {},
(err) => Log.error(err), (err) => Log.error(err),