mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-07-12 19:46:12 +00:00

* chore: some ui improvements * fix: integration test * feat: language selector on welcome page (#2796) * feat: add language selector on welcome page * feat: add hover effect and refactor layout * test: add basic languge selector testing * chore: increate place holder width * fix: add catch error for setLocale and finish the testing * chore: update comment * feat: refactor the skip login in page and add tests --------- Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io> * feat: row document (#2792) * chore: create orphan view handler * feat: save icon url and cover url in view * feat: implement emoji picker UI * chore: config ui * chore: config ui again * chore: replace RowPB with RowMetaPB to exposing more row information * fix: compile error * feat: show emoji in row * chore: update * test: insert emoji test * test: add update emoji test * test: add remove emoji test * test: add create field tests * test: add create row and delete row integration tests * test: add create row from row menu * test: document in row detail page * test: delete, duplicate row in row detail page * test: check the row count displayed in grid page * test: rename existing field in grid page * test: update field type of exisiting field in grid page * test: delete field test * test: add duplicate field test * test: add hide field test * test: add edit text cell test * test: add insert text to text cell test * test: add edit number cell test * test: add edit multiple number cells * test: add edit checkbox cell test * feat: integrate editor into database row * test: add edit create time and last edit time cell test * test: add edit date cell by selecting a date test * chore: remove unused code * chore: update checklist bg color * test: add update database layout test --------- Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io> * test: fix test * test: add create select option test --------- Co-authored-by: Yijing Huang <hyj891204@gmail.com> Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io> Co-authored-by: Nathan.fooo <86001920+appflowy@users.noreply.github.com> Co-authored-by: nathan <nathan@appflowy.io>
211 lines
5.9 KiB
Dart
211 lines
5.9 KiB
Dart
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pbenum.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:integration_test/integration_test.dart';
|
|
|
|
import 'util/database_test_op.dart';
|
|
import 'util/util.dart';
|
|
|
|
void main() {
|
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
group('grid cell', () {
|
|
const location = 'appflowy';
|
|
|
|
setUp(() async {
|
|
await TestFolder.cleanTestLocation(location);
|
|
await TestFolder.setTestLocation(location);
|
|
});
|
|
|
|
tearDown(() async {
|
|
await TestFolder.cleanTestLocation(location);
|
|
});
|
|
|
|
tearDownAll(() async {
|
|
await TestFolder.cleanTestLocation(null);
|
|
});
|
|
|
|
testWidgets('edit text cell', (tester) async {
|
|
await tester.initializeAppFlowy();
|
|
await tester.tapGoButton();
|
|
|
|
await tester.tapAddButton();
|
|
await tester.tapCreateGridButton();
|
|
|
|
await tester.editCell(
|
|
rowIndex: 0,
|
|
fieldType: FieldType.RichText,
|
|
input: 'hello world',
|
|
);
|
|
|
|
await tester.assertCellContent(
|
|
rowIndex: 0,
|
|
fieldType: FieldType.RichText,
|
|
content: 'hello world',
|
|
);
|
|
|
|
await tester.pumpAndSettle();
|
|
});
|
|
|
|
testWidgets('edit number cell', (tester) async {
|
|
await tester.initializeAppFlowy();
|
|
await tester.tapGoButton();
|
|
|
|
await tester.tapAddButton();
|
|
await tester.tapCreateGridButton();
|
|
|
|
const fieldType = FieldType.Number;
|
|
|
|
// Create a number field
|
|
await tester.createField(fieldType, fieldType.name);
|
|
|
|
await tester.editCell(
|
|
rowIndex: 0,
|
|
fieldType: fieldType,
|
|
input: '-1',
|
|
);
|
|
// edit the next cell to force the previous cell at row 0 to lose focus
|
|
await tester.editCell(
|
|
rowIndex: 1,
|
|
fieldType: fieldType,
|
|
input: '0.2',
|
|
);
|
|
// -1 -> -1
|
|
await tester.assertCellContent(
|
|
rowIndex: 0,
|
|
fieldType: fieldType,
|
|
content: '-1',
|
|
);
|
|
|
|
// edit the next cell to force the previous cell at row 1 to lose focus
|
|
await tester.editCell(
|
|
rowIndex: 2,
|
|
fieldType: fieldType,
|
|
input: '.1',
|
|
);
|
|
// 0.2 -> 0.2
|
|
await tester.assertCellContent(
|
|
rowIndex: 1,
|
|
fieldType: fieldType,
|
|
content: '0.2',
|
|
);
|
|
|
|
// edit the next cell to force the previous cell at row 2 to lose focus
|
|
await tester.editCell(
|
|
rowIndex: 0,
|
|
fieldType: fieldType,
|
|
input: '',
|
|
);
|
|
// .1 -> 0.1
|
|
await tester.assertCellContent(
|
|
rowIndex: 2,
|
|
fieldType: fieldType,
|
|
content: '0.1',
|
|
);
|
|
|
|
await tester.pumpAndSettle();
|
|
});
|
|
|
|
testWidgets('edit checkbox cell', (tester) async {
|
|
await tester.initializeAppFlowy();
|
|
await tester.tapGoButton();
|
|
|
|
await tester.tapAddButton();
|
|
await tester.tapCreateGridButton();
|
|
|
|
await tester.assertCheckboxCell(rowIndex: 0, isSelected: false);
|
|
await tester.tapCheckboxCellInGrid(rowIndex: 0);
|
|
await tester.assertCheckboxCell(rowIndex: 0, isSelected: true);
|
|
|
|
await tester.tapCheckboxCellInGrid(rowIndex: 1);
|
|
await tester.tapCheckboxCellInGrid(rowIndex: 2);
|
|
await tester.assertCheckboxCell(rowIndex: 1, isSelected: true);
|
|
await tester.assertCheckboxCell(rowIndex: 2, isSelected: true);
|
|
|
|
await tester.pumpAndSettle();
|
|
});
|
|
|
|
testWidgets('edit create time cell', (tester) async {
|
|
await tester.initializeAppFlowy();
|
|
await tester.tapGoButton();
|
|
|
|
await tester.tapAddButton();
|
|
await tester.tapCreateGridButton();
|
|
|
|
const fieldType = FieldType.CreatedTime;
|
|
// Create a create time field
|
|
// The create time field is not editable
|
|
await tester.createField(fieldType, fieldType.name);
|
|
|
|
await tester.tapCellInGrid(rowIndex: 0, fieldType: fieldType);
|
|
|
|
await tester.findDateEditor(findsNothing);
|
|
|
|
await tester.pumpAndSettle();
|
|
});
|
|
|
|
testWidgets('edit last time cell', (tester) async {
|
|
await tester.initializeAppFlowy();
|
|
await tester.tapGoButton();
|
|
|
|
await tester.tapAddButton();
|
|
await tester.tapCreateGridButton();
|
|
|
|
const fieldType = FieldType.LastEditedTime;
|
|
// Create a last time field
|
|
// The last time field is not editable
|
|
await tester.createField(fieldType, fieldType.name);
|
|
|
|
await tester.tapCellInGrid(rowIndex: 0, fieldType: fieldType);
|
|
|
|
await tester.findDateEditor(findsNothing);
|
|
|
|
await tester.pumpAndSettle();
|
|
});
|
|
|
|
testWidgets('edit time cell', (tester) async {
|
|
await tester.initializeAppFlowy();
|
|
await tester.tapGoButton();
|
|
|
|
await tester.tapAddButton();
|
|
await tester.tapCreateGridButton();
|
|
|
|
const fieldType = FieldType.DateTime;
|
|
await tester.createField(fieldType, fieldType.name);
|
|
|
|
// Tap the cell to invoke the field editor
|
|
await tester.tapCellInGrid(rowIndex: 0, fieldType: fieldType);
|
|
await tester.findDateEditor(findsOneWidget);
|
|
|
|
// Select the date
|
|
await tester.selectDay(content: 3);
|
|
|
|
await tester.pumpAndSettle();
|
|
});
|
|
|
|
testWidgets('edit single select cell', (tester) async {
|
|
await tester.initializeAppFlowy();
|
|
await tester.tapGoButton();
|
|
|
|
const fieldType = FieldType.SingleSelect;
|
|
await tester.tapAddButton();
|
|
// When create a grid, it will create a single select field by default
|
|
await tester.tapCreateGridButton();
|
|
|
|
// Tap the cell to invoke the selection option editor
|
|
await tester.tapSelectOptionCellInGrid(rowIndex: 0, fieldType: fieldType);
|
|
await tester.findSelectOptionEditor(findsOneWidget);
|
|
|
|
await tester.createOption(name: 'hello world');
|
|
await tester.dismissSelectOptionEditor();
|
|
|
|
// Make sure the option is created and displayed in the cell
|
|
await tester.findSelectOptionWithNameInGrid(
|
|
rowIndex: 0,
|
|
name: 'hello world',
|
|
);
|
|
|
|
await tester.pumpAndSettle();
|
|
});
|
|
});
|
|
}
|