Add missing test case for Usage (#36379)

This commit is contained in:
Jonah Williams 2019-07-18 10:41:13 -07:00 committed by GitHub
parent 1957c66300
commit 757b5365fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,7 +3,9 @@
// found in the LICENSE file.
import 'package:args/command_runner.dart';
import 'package:flutter_tools/src/base/config.dart';
import 'package:flutter_tools/src/base/time.dart';
import 'package:flutter_tools/src/features.dart';
import 'package:mockito/mockito.dart';
import 'package:flutter_tools/src/base/file_system.dart';
@ -22,6 +24,7 @@ import '../src/context.dart';
void main() {
group('analytics', () {
Directory tempDir;
MockFlutterConfig mockFlutterConfig;
setUpAll(() {
Cache.disableLocking();
@ -30,6 +33,7 @@ void main() {
setUp(() {
Cache.flutterRoot = '../..';
tempDir = fs.systemTempDirectory.createTempSync('flutter_tools_analytics_test.');
mockFlutterConfig = MockFlutterConfig();
});
tearDown(() {
@ -78,6 +82,44 @@ void main() {
FlutterVersion: () => FlutterVersion(const SystemClock()),
Usage: () => Usage(configDirOverride: tempDir.path),
});
testUsingContext('Usage records one feature in experiment setting', () async {
when<bool>(mockFlutterConfig.getValue(flutterWebFeature.configSetting))
.thenReturn(true);
final Usage usage = Usage();
usage.suppressAnalytics = false;
usage.enabled = true;
final Future<Map<String, dynamic>> data = usage.onSend.first;
usage.sendCommand('test');
expect(await data, containsPair(enabledFlutterFeatures, 'enable-web'));
}, overrides: <Type, Generator>{
FlutterVersion: () => FlutterVersion(const SystemClock()),
Usage: () => Usage(configDirOverride: tempDir.path),
Config: () => mockFlutterConfig,
});
testUsingContext('Usage records multiple features in experiment setting', () async {
when<bool>(mockFlutterConfig.getValue(flutterWebFeature.configSetting))
.thenReturn(true);
when<bool>(mockFlutterConfig.getValue(flutterLinuxDesktopFeature.configSetting))
.thenReturn(true);
when<bool>(mockFlutterConfig.getValue(flutterMacOSDesktopFeature.configSetting))
.thenReturn(true);
final Usage usage = Usage();
usage.suppressAnalytics = false;
usage.enabled = true;
final Future<Map<String, dynamic>> data = usage.onSend.first;
usage.sendCommand('test');
expect(await data, containsPair(enabledFlutterFeatures, 'enable-web,enable-linux-desktop,enable-macos-desktop'));
}, overrides: <Type, Generator>{
FlutterVersion: () => FlutterVersion(const SystemClock()),
Usage: () => Usage(configDirOverride: tempDir.path),
Config: () => mockFlutterConfig,
});
});
group('analytics with mocks', () {
@ -195,3 +237,5 @@ void main() {
class MockUsage extends Mock implements Usage {}
class MockDoctor extends Mock implements Doctor {}
class MockFlutterConfig extends Mock implements Config {}