From 757b5365fa37852a51036d0bede7aaa41785e18f Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 18 Jul 2019 10:41:13 -0700 Subject: [PATCH] Add missing test case for Usage (#36379) --- .../test/general.shard/analytics_test.dart | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/packages/flutter_tools/test/general.shard/analytics_test.dart b/packages/flutter_tools/test/general.shard/analytics_test.dart index 91fee0cce7c..754ace06eb2 100644 --- a/packages/flutter_tools/test/general.shard/analytics_test.dart +++ b/packages/flutter_tools/test/general.shard/analytics_test.dart @@ -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(mockFlutterConfig.getValue(flutterWebFeature.configSetting)) + .thenReturn(true); + final Usage usage = Usage(); + + usage.suppressAnalytics = false; + usage.enabled = true; + final Future> data = usage.onSend.first; + usage.sendCommand('test'); + + expect(await data, containsPair(enabledFlutterFeatures, 'enable-web')); + }, overrides: { + FlutterVersion: () => FlutterVersion(const SystemClock()), + Usage: () => Usage(configDirOverride: tempDir.path), + Config: () => mockFlutterConfig, + }); + + testUsingContext('Usage records multiple features in experiment setting', () async { + when(mockFlutterConfig.getValue(flutterWebFeature.configSetting)) + .thenReturn(true); + when(mockFlutterConfig.getValue(flutterLinuxDesktopFeature.configSetting)) + .thenReturn(true); + when(mockFlutterConfig.getValue(flutterMacOSDesktopFeature.configSetting)) + .thenReturn(true); + final Usage usage = Usage(); + + usage.suppressAnalytics = false; + usage.enabled = true; + final Future> data = usage.onSend.first; + usage.sendCommand('test'); + + expect(await data, containsPair(enabledFlutterFeatures, 'enable-web,enable-linux-desktop,enable-macos-desktop')); + }, overrides: { + 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 {}