diff --git a/packages/shared_preferences/CHANGELOG.md b/packages/shared_preferences/CHANGELOG.md index 9015bd836daa..5560dd8a4317 100644 --- a/packages/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.4+4 + +* `setMockInitialValues` needs 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/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..3fe176f41f25 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/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: 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'); + }); }