// 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/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:flutter_gallery/demo/cupertino/cupertino_navigation_demo.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets('Navigation demo golden', (WidgetTester tester) async {
    // The point is to mainly test the cupertino icons that we don't have a
    // dependency against in the flutter/cupertino package directly.

    final Future<ByteData> font = rootBundle.load(
      'packages/cupertino_icons/assets/CupertinoIcons.ttf'
    );

    await (FontLoader('packages/cupertino_icons/CupertinoIcons')..addFont(font))
      .load();

    await tester.pumpWidget(CupertinoApp(
      home: CupertinoNavigationDemo(randomSeed: 123456),
    ));

    await expectLater(
      find.byType(CupertinoNavigationDemo),
      matchesGoldenFile('cupertino_navigation_demo.screen.1.png'),
    );

    await tester.pump(); // Need a new frame after loading fonts to refresh layout.
    // Tap some row to go to the next page.
    await tester.tap(find.text('Buy this cool color').first);
    await tester.pump();
    await tester.pump(const Duration(milliseconds: 500));

    await expectLater(
      find.byType(CupertinoNavigationDemo),
      matchesGoldenFile('cupertino_navigation_demo.screen.2.png'),
    );
  });
}
