animated_list_test.dart 2.28 KB
Newer Older
1 2 3 4 5 6
// Copyright 2017 The Chromium 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_test/flutter_test.dart';
7
import 'package:sample_catalog/animated_list.dart' as animated_list_sample;
8 9

void main() {
10
  testWidgets('animated_list sample app smoke test', (WidgetTester tester) async {
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
    animated_list_sample.main();
    await tester.pump();

    expect(find.text('Item 0'), findsOneWidget);
    expect(find.text('Item 1'), findsOneWidget);
    expect(find.text('Item 2'), findsOneWidget);

    final Finder insertButton = find.byTooltip('insert a new item');
    final Finder removeButton = find.byTooltip('remove the selected item');
    expect(insertButton, findsOneWidget);
    expect(removeButton, findsOneWidget);

    // Remove items 0, 1, 2.
    await tester.tap(find.text('Item 0'));
    await tester.tap(removeButton);
    await tester.pumpAndSettle();
    await tester.tap(find.text('Item 1'));
    await tester.tap(removeButton);
    await tester.pumpAndSettle();
    await tester.tap(find.text('Item 2'));
    await tester.tap(removeButton);
    await tester.pumpAndSettle();

    // Append items 3, 4, 5, 6.
    await tester.tap(insertButton);
    await tester.tap(insertButton);
    await tester.tap(insertButton);
    await tester.tap(insertButton);
    await tester.pumpAndSettle();

    expect(find.text('Item 0'), findsNothing);
    expect(find.text('Item 1'), findsNothing);
    expect(find.text('Item 2'), findsNothing);
    expect(find.text('Item 3'), findsOneWidget);
    expect(find.text('Item 4'), findsOneWidget);
    expect(find.text('Item 5'), findsOneWidget);
    expect(find.text('Item 6'), findsOneWidget);

    // Insert items 7, 8 at item 3's position (at the top)
    await tester.tap(find.text('Item 3'));
    await tester.tap(insertButton);
    await tester.tap(insertButton);
    await tester.pumpAndSettle();

    expect(find.text('Item 7'), findsOneWidget);
    expect(find.text('Item 8'), findsOneWidget);

    // Scroll to the end.
    await tester.fling(find.text('Item 7'), const Offset(0.0, -200.0), 1000.0);
    await tester.pumpAndSettle();
    expect(find.text('Item 6'), findsOneWidget);
    expect(find.text('Item 8'), findsNothing);
  });
}