From d90417f273434ab2922b8d099167278a79a48c7d Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Fri, 8 Nov 2019 09:09:50 -0800 Subject: [PATCH 1/4] Make setMockInitialValues handle non-prefixed keys --- packages/shared_preferences/README.md | 8 +------- .../shared_preferences/lib/shared_preferences.dart | 10 +++++++++- .../test/shared_preferences_test.dart | 9 +++++++++ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/packages/shared_preferences/README.md b/packages/shared_preferences/README.md index 136c6de3dd99..dfd449337293 100644 --- a/packages/shared_preferences/README.md +++ b/packages/shared_preferences/README.md @@ -42,11 +42,5 @@ _incrementCounter() async { You can populate `SharedPreferences` with initial values in your tests by running this code: ```dart -const MethodChannel('plugins.flutter.io/shared_preferences') - .setMockMethodCallHandler((MethodCall methodCall) async { - if (methodCall.method == 'getAll') { - return {}; // set initial values here if desired - } - return null; - }); +SharedPrefernces.setMockInitialValues (Map values); ``` diff --git a/packages/shared_preferences/lib/shared_preferences.dart b/packages/shared_preferences/lib/shared_preferences.dart index aece19b6e29e..68dfa253af6e 100644 --- a/packages/shared_preferences/lib/shared_preferences.dart +++ b/packages/shared_preferences/lib/shared_preferences.dart @@ -181,9 +181,17 @@ class SharedPreferences { /// If the singleton instance has been initialized already, it is nullified. @visibleForTesting static void setMockInitialValues(Map values) { + final Map newValues = + values.map((String key, dynamic value) { + String newKey = key; + if (!key.startsWith(_prefix)) { + newKey = '$_prefix$key'; + } + return MapEntry(newKey, value); + }); _kChannel.setMockMethodCallHandler((MethodCall methodCall) async { if (methodCall.method == 'getAll') { - return values; + return newValues; } return null; }); diff --git a/packages/shared_preferences/test/shared_preferences_test.dart b/packages/shared_preferences/test/shared_preferences_test.dart index 8ebcb96c0ad8..d171f7ae7f05 100755 --- a/packages/shared_preferences/test/shared_preferences_test.dart +++ b/packages/shared_preferences/test/shared_preferences_test.dart @@ -197,4 +197,13 @@ void main() { expect(preferences.getStringList('myList'), []); }); }); + + test('calling mock initial values with non-prefixed keys succeeds', () async { + SharedPreferences.setMockInitialValues({ + 'test': 'foo', + }); + final SharedPreferences prefs = await SharedPreferences.getInstance(); + final String value = prefs.getString('test'); + expect(value, 'foo'); + }); } From ad6705be5ad05caa1c3d7064918e76bd120a5cec Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Fri, 8 Nov 2019 09:11:31 -0800 Subject: [PATCH 2/4] Rev version --- packages/shared_preferences/CHANGELOG.md | 4 ++++ packages/shared_preferences/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/shared_preferences/CHANGELOG.md b/packages/shared_preferences/CHANGELOG.md index 9015bd836daa..bfbbd5a15442 100644 --- a/packages/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.4+4 + +* setMockInitialValues need to handle non-prefixed keys since that's an implementation detail. + ## 0.5.4+3 * Android: Suppress casting warnings. diff --git a/packages/shared_preferences/pubspec.yaml b/packages/shared_preferences/pubspec.yaml index 9df0c19f1a3a..80bfc6d219e3 100644 --- a/packages/shared_preferences/pubspec.yaml +++ b/packages/shared_preferences/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android. author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/shared_preferences -version: 0.5.4+3 +version: 0.5.4+4 flutter: plugin: From 940d871161954bbbc8cdd98efad2d23835e696b9 Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Sat, 9 Nov 2019 09:16:42 -0800 Subject: [PATCH 3/4] Make analyzer happy --- packages/shared_preferences/lib/shared_preferences.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/shared_preferences/lib/shared_preferences.dart b/packages/shared_preferences/lib/shared_preferences.dart index 68dfa253af6e..3fe176f41f25 100644 --- a/packages/shared_preferences/lib/shared_preferences.dart +++ b/packages/shared_preferences/lib/shared_preferences.dart @@ -182,12 +182,12 @@ class SharedPreferences { @visibleForTesting static void setMockInitialValues(Map values) { final Map newValues = - values.map((String key, dynamic value) { + values.map((String key, dynamic value) { String newKey = key; if (!key.startsWith(_prefix)) { newKey = '$_prefix$key'; } - return MapEntry(newKey, value); + return MapEntry(newKey, value); }); _kChannel.setMockMethodCallHandler((MethodCall methodCall) async { if (methodCall.method == 'getAll') { From 3a99340a82b25476a4941046b7963ce8d0387643 Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Sat, 9 Nov 2019 17:49:27 -0800 Subject: [PATCH 4/4] Update packages/shared_preferences/CHANGELOG.md Co-Authored-By: Collin Jackson --- packages/shared_preferences/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared_preferences/CHANGELOG.md b/packages/shared_preferences/CHANGELOG.md index bfbbd5a15442..5560dd8a4317 100644 --- a/packages/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.5.4+4 -* setMockInitialValues need to handle non-prefixed keys since that's an implementation detail. +* `setMockInitialValues` needs to handle non-prefixed keys since that's an implementation detail. ## 0.5.4+3