mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
fix: add card at the beginning (#3835)
This commit is contained in:
@ -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);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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),
|
||||||
|
Reference in New Issue
Block a user