blob: 0cf56ae42e0f87bf3a11939f23f7d54240568504 [file] [log] [blame]
// Copyright 2020 The Fuchsia 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 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:fuchsia_scenic_flutter/fuchsia_view.dart';
void main() {
testWidgets('FuchsiaView', (tester) async {
final controller = MockFuchsiaViewController();
final completer = Completer();
when(controller.viewId).thenReturn(42);
when(controller.whenConnected).thenAnswer((_) => Future<bool>.value(false));
when(controller.connect()).thenAnswer((_) => completer.future);
await tester.pumpWidget(
Center(
child: SizedBox(
child: FuchsiaView(controller: controller),
),
),
);
completer.complete();
await tester.pumpAndSettle();
verify(controller.connect(hitTestable: true, focusable: true));
// Change properties on the view.
when(controller.connected).thenReturn(true);
await tester.pumpWidget(
Center(
child: SizedBox(
child: FuchsiaView(controller: controller, hitTestable: false),
),
),
);
await tester.pumpAndSettle();
verify(controller.update(hitTestable: false));
});
testWidgets('FuchsiaView with args', (tester) async {
final controller = MockFuchsiaViewController();
final completer = Completer();
when(controller.viewId).thenReturn(42);
when(controller.whenConnected).thenAnswer((_) => Future<bool>.value(false));
when(controller.connect(hitTestable: false, focusable: false))
.thenAnswer((_) => completer.future);
await tester.pumpWidget(
Center(
child: SizedBox(
child: FuchsiaView(
controller: controller,
hitTestable: false,
focusable: false,
),
),
),
);
completer.complete();
await tester.pumpAndSettle();
verify(controller.connect(hitTestable: false, focusable: false));
});
}
class MockFuchsiaViewController extends Mock implements FuchsiaViewController {}