123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- import 'package:appflowy/plugins/database_view/grid/presentation/grid_page.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 page', () {
- 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('rename existing field', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- await tester.tapAddButton();
- await tester.tapCreateGridButton();
- // Invoke the field editor
- await tester.tapGridFieldWithName('Name');
- await tester.tapEditPropertyButton();
- await tester.renameField('hello world');
- await tester.dismissFieldEditor();
- await tester.tapGridFieldWithName('hello world');
- await tester.pumpAndSettle();
- });
- testWidgets('update field type of existing field', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- await tester.tapAddButton();
- await tester.tapCreateGridButton();
- // Invoke the field editor
- await tester.tapGridFieldWithName('Type');
- await tester.tapEditPropertyButton();
- await tester.tapTypeOptionButton();
- await tester.selectFieldType(FieldType.Checkbox);
- await tester.dismissFieldEditor();
- await tester.assertFieldTypeWithFieldName(
- 'Type',
- FieldType.Checkbox,
- );
- await tester.pumpAndSettle();
- });
- testWidgets('create a field and rename it', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- // create a new grid
- await tester.tapAddButton();
- await tester.tapCreateGridButton();
- // create a field
- await tester.createField(FieldType.Checklist, 'checklist');
- // check the field is created successfully
- await tester.findFieldWithName('checklist');
- await tester.pumpAndSettle();
- });
- testWidgets('delete field', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- await tester.tapAddButton();
- await tester.tapCreateGridButton();
- // create a field
- await tester.createField(FieldType.Checkbox, 'New field 1');
- // Delete the field
- await tester.tapGridFieldWithName('New field 1');
- await tester.tapDeletePropertyButton();
- // confirm delete
- await tester.tapDialogOkButton();
- await tester.noFieldWithName('New field 1');
- await tester.pumpAndSettle();
- });
- testWidgets('duplicate field', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- await tester.tapAddButton();
- await tester.tapCreateGridButton();
- // create a field
- await tester.scrollToRight(find.byType(GridPage));
- await tester.tapNewPropertyButton();
- await tester.renameField('New field 1');
- await tester.dismissFieldEditor();
- await tester.createField(FieldType.RichText, 'New field 1');
- // Delete the field
- await tester.tapGridFieldWithName('New field 1');
- await tester.tapDuplicatePropertyButton();
- await tester.findFieldWithName('New field 1 (copy)');
- await tester.pumpAndSettle();
- });
- testWidgets('hide field', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- await tester.tapAddButton();
- await tester.tapCreateGridButton();
- // create a field
- await tester.scrollToRight(find.byType(GridPage));
- await tester.tapNewPropertyButton();
- await tester.renameField('New field 1');
- await tester.dismissFieldEditor();
- // Delete the field
- await tester.tapGridFieldWithName('New field 1');
- await tester.tapHidePropertyButton();
- await tester.noFieldWithName('New field 1');
- await tester.pumpAndSettle();
- });
- testWidgets('create checklist field ', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- await tester.tapAddButton();
- await tester.tapCreateGridButton();
- await tester.scrollToRight(find.byType(GridPage));
- await tester.tapNewPropertyButton();
- // Open the type option menu
- await tester.tapTypeOptionButton();
- await tester.selectFieldType(FieldType.Checklist);
- // After update the field type, the cells should be updated
- await tester.findCellByFieldType(FieldType.Checklist);
- await tester.pumpAndSettle();
- });
- testWidgets('create list of fields', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- await tester.tapAddButton();
- await tester.tapCreateGridButton();
- for (final fieldType in [
- FieldType.Checklist,
- FieldType.DateTime,
- FieldType.Number,
- FieldType.URL,
- FieldType.MultiSelect,
- FieldType.LastEditedTime,
- FieldType.CreatedTime,
- FieldType.Checkbox,
- ]) {
- await tester.scrollToRight(find.byType(GridPage));
- await tester.tapNewPropertyButton();
- await tester.renameField(fieldType.name);
- // Open the type option menu
- await tester.tapTypeOptionButton();
- await tester.selectFieldType(fieldType);
- await tester.dismissFieldEditor();
- // After update the field type, the cells should be updated
- await tester.findCellByFieldType(fieldType);
- await tester.pumpAndSettle();
- }
- });
- });
- }
|