blob: 13d6ba79b10c0ed8b75bf9d76ef3362f7b85c81d [file]
// Copyright 2020 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:devtools_app/src/analytics/prompt.dart';
import 'package:devtools_app/src/analytics/provider.dart';
import 'package:devtools_app/src/globals.dart';
import 'package:devtools_app/src/service_manager.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'support/mocks.dart';
import 'support/wrappers.dart';
class FakeProvider implements AnalyticsProvider {
FakeProvider({
this.gtagsEnabled = false,
this.enabled = false,
this.prompt = false,
});
final bool gtagsEnabled;
final bool enabled;
final bool prompt;
@override
bool get isEnabled => enabled;
@override
bool get shouldPrompt => prompt;
@override
bool get isGtagsEnabled => gtagsEnabled;
@override
void setAllowAnalytics() {}
@override
void setDontAllowAnalytics() {}
@override
void setUpAnalytics() {}
}
void main() {
setUp(() {
setGlobal(ServiceConnectionManager, FakeServiceManager());
});
group('AnalyticsPrompt', () {
group('with gtags enabled', () {
testWidgets('displays prompt if provider indicates to do so',
(WidgetTester tester) async {
final prompt = AnalyticsPrompt(
provider: FakeProvider(gtagsEnabled: true, prompt: true),
child: const Text('Child Text'),
);
await tester.pumpWidget(wrap(prompt));
await tester.pump();
expect(
find.text('Send usage statistics for DevTools?'), findsOneWidget);
});
testWidgets('does not display prompt without first run',
(WidgetTester tester) async {
final prompt = AnalyticsPrompt(
provider: FakeProvider(gtagsEnabled: true),
child: const Text('Child Text'),
);
await tester.pumpWidget(wrap(prompt));
await tester.pump();
expect(find.text('Send usage statistics for DevTools?'), findsNothing);
});
testWidgets('displays the child', (WidgetTester tester) async {
final prompt = AnalyticsPrompt(
provider: FakeProvider(),
child: const Text('Child Text'),
);
await tester.pumpWidget(wrap(prompt));
await tester.pump();
expect(find.text('Child Text'), findsOneWidget);
});
});
group('without gtags enabled', () {
testWidgets('does not display prompt', (WidgetTester tester) async {
final prompt = AnalyticsPrompt(
provider: FakeProvider(),
child: const Text('Child Text'),
);
await tester.pumpWidget(wrap(prompt));
await tester.pump();
expect(find.text('Send usage statistics for DevTools?'), findsNothing);
});
testWidgets('displays the child', (WidgetTester tester) async {
final prompt = AnalyticsPrompt(
provider: FakeProvider(),
child: const Text('Child Text'),
);
await tester.pumpWidget(wrap(prompt));
await tester.pump();
expect(find.text('Child Text'), findsOneWidget);
});
});
});
}