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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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 'board_row_test.dart' as board_row_test;
import 'board_add_row_test.dart' as board_add_row_test;
void startTesting() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
// Board integration tests
board_row_test.main();
board_add_row_test.main();
}

View File

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

View File

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

View File

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