Add missing test case for Usage (#36379)
diff --git a/packages/flutter_tools/test/general.shard/analytics_test.dart b/packages/flutter_tools/test/general.shard/analytics_test.dart
index 91fee0c..754ace0 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 @@
void main() {
group('analytics', () {
Directory tempDir;
+ MockFlutterConfig mockFlutterConfig;
setUpAll(() {
Cache.disableLocking();
@@ -30,6 +33,7 @@
setUp(() {
Cache.flutterRoot = '../..';
tempDir = fs.systemTempDirectory.createTempSync('flutter_tools_analytics_test.');
+ mockFlutterConfig = MockFlutterConfig();
});
tearDown(() {
@@ -78,6 +82,44 @@
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 @@
class MockUsage extends Mock implements Usage {}
class MockDoctor extends Mock implements Doctor {}
+
+class MockFlutterConfig extends Mock implements Config {}