// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; import 'package:flutter_api_samples/widgets/scroll_view/listview_select.1.dart' as example; import 'package:flutter_test/flutter_test.dart'; void main() { testWidgets('long press ListTile should enable edit mode', (WidgetTester tester) async { await tester.pumpWidget( const example.MyApp(), ); final Finder listView = find.byType(ListView); final Finder selectAllFinder = find.text('select all'); final Finder checkBoxFinder = find.byType(Checkbox); expect(listView, findsWidgets); expect(selectAllFinder, findsNothing); expect(checkBoxFinder, findsNothing); await tester.longPress(listView.first); await tester.pump(); expect(selectAllFinder, findsOneWidget); expect(checkBoxFinder, findsWidgets); }); testWidgets('Pressing cross button should disable edit mode', (WidgetTester tester) async { await tester.pumpWidget( const example.MyApp(), ); final Finder listView = find.byType(ListView); final Finder crossIconFinder = find.byIcon(Icons.close); expect(listView, findsWidgets); expect(crossIconFinder, findsNothing); /// enable edit mode await tester.longPress(listView.first); await tester.pump(); expect(crossIconFinder, findsOneWidget); await tester.tap(crossIconFinder); await tester.pump(); final Finder selectAllFinder = find.text('select all'); expect(selectAllFinder, findsNothing); expect(crossIconFinder, findsNothing); }); testWidgets('tapping ListTile or checkBox should toggle ListTile state', (WidgetTester tester) async { await tester.pumpWidget( const example.MyApp(), ); final Finder listView = find.byType(ListView); final Finder selectAllFinder = find.text('select all'); expect(listView, findsWidgets); /// enable edit mode await tester.longPress(listView.first); await tester.pump(); final Finder checkBoxFinder = find.byType(Checkbox).first; expect(selectAllFinder, findsOneWidget); expect(checkBoxFinder, findsOneWidget); expect(tester.widget<Checkbox>(checkBoxFinder).value, false); await tester.tap(checkBoxFinder); await tester.pump(); expect(tester.widget<Checkbox>(checkBoxFinder).value, true); }); }