Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4285721

Browse files
committed
Create shared_preferences_manager.dart
Helper for SharedPreferences functions.
1 parent 46d96f8 commit 4285721

File tree

2 files changed

+286
-0
lines changed

2 files changed

+286
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import 'package:shared_preferences/shared_preferences.dart';
2+
3+
class SharedPreferencesManager {
4+
static late SharedPreferences _sharedPreferences;
5+
6+
static const keyIsLogin = 'keyIsLogin';
7+
8+
SharedPreferencesManager();
9+
10+
factory SharedPreferencesManager.getInstance(SharedPreferences sharedPreferences) {
11+
_sharedPreferences = sharedPreferences;
12+
return SharedPreferencesManager();
13+
}
14+
15+
Future<bool> putBool(String key, bool value) => _sharedPreferences.setBool(key, value);
16+
17+
bool? getBool(String key, {bool defaultValue = false}) =>
18+
_sharedPreferences.containsKey(key) ? _sharedPreferences.getBool(key) : defaultValue;
19+
20+
Future<bool> putDouble(String key, double value) => _sharedPreferences.setDouble(key, value);
21+
22+
double? getDouble(String key, {double defaultValue = 0.0}) =>
23+
_sharedPreferences.containsKey(key) ? _sharedPreferences.getDouble(key) : defaultValue;
24+
25+
Future<bool> putInt(String key, int value) => _sharedPreferences.setInt(key, value);
26+
27+
int? getInt(String key, {int defaultValue = 0}) =>
28+
_sharedPreferences.containsKey(key) ? _sharedPreferences.getInt(key) : defaultValue;
29+
30+
Future<bool> putString(String key, String value) => _sharedPreferences.setString(key, value);
31+
32+
String? getString(String key, {String defaultValue = ''}) =>
33+
_sharedPreferences.containsKey(key) ? _sharedPreferences.getString(key) : defaultValue;
34+
35+
Future<bool> putStringList(String key, List<String> value) => _sharedPreferences.setStringList(key, value);
36+
37+
List<String>? getStringList(String key) =>
38+
_sharedPreferences.containsKey(key) ? _sharedPreferences.getStringList(key) : null;
39+
40+
bool isKeyExists(String key) => _sharedPreferences.containsKey(key);
41+
42+
Future<bool> clearKey(String key) => _sharedPreferences.remove(key);
43+
44+
Future<bool> clearAll() => _sharedPreferences.clear();
45+
}
Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
import 'package:flutter_news_app/core/util/shared_preferences_manager.dart';
2+
import 'package:flutter_test/flutter_test.dart';
3+
import 'package:mockito/mockito.dart';
4+
5+
import '../../helper/mock_helper.mocks.dart';
6+
7+
void main() {
8+
late MockSharedPreferences mockSharedPreferences;
9+
late SharedPreferencesManager sharedPreferencesManager;
10+
const tKey = 'testKey';
11+
12+
setUp(() {
13+
mockSharedPreferences = MockSharedPreferences();
14+
sharedPreferencesManager = SharedPreferencesManager.getInstance(mockSharedPreferences);
15+
});
16+
17+
test(
18+
'Make sure isKeyExists can check availability a value from SharedPreferences',
19+
() async {
20+
// arrange
21+
when(mockSharedPreferences.containsKey(any)).thenReturn(true);
22+
23+
// act
24+
final result = sharedPreferencesManager.isKeyExists(tKey);
25+
26+
// assert
27+
expect(result, true);
28+
verify(mockSharedPreferences.containsKey(tKey)).called(1);
29+
},
30+
);
31+
32+
test(
33+
'Make sure clearKey can remove a value from SharedPreferences',
34+
() async {
35+
// arrange
36+
when(mockSharedPreferences.remove(any)).thenAnswer((_) async => true);
37+
38+
// act
39+
final result = await sharedPreferencesManager.clearKey(tKey);
40+
41+
// assert
42+
expect(result, true);
43+
verify(mockSharedPreferences.remove(tKey)).called(1);
44+
},
45+
);
46+
47+
test(
48+
'Make sure clearAll can remove all values from SharedPreferences',
49+
() async {
50+
// arrange
51+
when(mockSharedPreferences.clear()).thenAnswer((_) async => true);
52+
53+
// act
54+
final result = await sharedPreferencesManager.clearAll();
55+
56+
// assert
57+
expect(result, true);
58+
verify(mockSharedPreferences.clear()).called(1);
59+
},
60+
);
61+
62+
group('bool', () {
63+
const tValue = true;
64+
65+
test(
66+
'Make sure putBool can save a boolean value to SharedPreferences',
67+
() async {
68+
// arrange
69+
when(mockSharedPreferences.setBool(any, any)).thenAnswer((_) async => true);
70+
71+
// act
72+
final result = await sharedPreferencesManager.putBool(tKey, tValue);
73+
74+
// assert
75+
expect(result, true);
76+
verify(mockSharedPreferences.setBool(tKey, tValue)).called(1);
77+
},
78+
);
79+
80+
test(
81+
'Make sure getBool can return a boolean value from SharedPreferences',
82+
() async {
83+
// arrange
84+
when(mockSharedPreferences.containsKey(any)).thenReturn(true);
85+
when(mockSharedPreferences.getBool(any)).thenReturn(tValue);
86+
87+
// act
88+
final result = sharedPreferencesManager.getBool(tKey);
89+
90+
// assert
91+
expect(result, tValue);
92+
verify(mockSharedPreferences.containsKey(tKey)).called(1);
93+
verify(mockSharedPreferences.getBool(tKey)).called(1);
94+
},
95+
);
96+
});
97+
98+
group('double', () {
99+
const tValue = 0.0;
100+
101+
test(
102+
'Make sure putDouble can save a double value to SharedPreferences',
103+
() async {
104+
// arrange
105+
when(mockSharedPreferences.setDouble(any, any)).thenAnswer((_) async => true);
106+
107+
// act
108+
final result = await sharedPreferencesManager.putDouble(tKey, tValue);
109+
110+
// assert
111+
expect(result, true);
112+
verify(mockSharedPreferences.setDouble(tKey, tValue));
113+
},
114+
);
115+
116+
test(
117+
'Make sure getDouble can return a double value from SharedPreferences',
118+
() async {
119+
// arrange
120+
when(mockSharedPreferences.containsKey(any)).thenReturn(true);
121+
when(mockSharedPreferences.getDouble(any)).thenReturn(tValue);
122+
123+
// act
124+
final result = sharedPreferencesManager.getDouble(tKey);
125+
126+
// assert
127+
expect(result, tValue);
128+
verify(mockSharedPreferences.containsKey(tKey)).called(1);
129+
verify(mockSharedPreferences.getDouble(tKey)).called(1);
130+
},
131+
);
132+
});
133+
134+
group('int', () {
135+
const tValue = 0;
136+
137+
test(
138+
'Make sure putInt can save a integer value to SharedPreferences',
139+
() async {
140+
// arrange
141+
when(mockSharedPreferences.setInt(any, any)).thenAnswer((_) async => true);
142+
143+
// act
144+
final result = await sharedPreferencesManager.putInt(tKey, tValue);
145+
146+
// assert
147+
expect(result, true);
148+
verify(mockSharedPreferences.setInt(tKey, tValue)).called(1);
149+
},
150+
);
151+
152+
test(
153+
'Make sure getInt can return a integer value from SharedPreferences',
154+
() async {
155+
// arrange
156+
when(mockSharedPreferences.containsKey(any)).thenReturn(true);
157+
when(mockSharedPreferences.getInt(any)).thenReturn(tValue);
158+
159+
// act
160+
final result = sharedPreferencesManager.getInt(tKey);
161+
162+
// assert
163+
expect(result, tValue);
164+
verify(mockSharedPreferences.containsKey(tKey)).called(1);
165+
verify(mockSharedPreferences.getInt(tKey)).called(1);
166+
},
167+
);
168+
});
169+
170+
group('string', () {
171+
const tValue = 'string';
172+
173+
test(
174+
'Make sure putString can save a string value to SharedPreferences',
175+
() async {
176+
// arrange
177+
when(mockSharedPreferences.setString(any, any)).thenAnswer((_) async => true);
178+
179+
// act
180+
final result = await sharedPreferencesManager.putString(tKey, tValue);
181+
182+
// assert
183+
expect(result, true);
184+
verify(mockSharedPreferences.setString(tKey, tValue)).called(1);
185+
},
186+
);
187+
188+
test(
189+
'Make sure getString can return a string value from SharedPreferences',
190+
() async {
191+
// arrange
192+
when(mockSharedPreferences.containsKey(any)).thenReturn(true);
193+
when(mockSharedPreferences.getString(any)).thenReturn(tValue);
194+
195+
// act
196+
final result = sharedPreferencesManager.getString(tKey);
197+
198+
// assert
199+
expect(result, tValue);
200+
verify(mockSharedPreferences.containsKey(tKey)).called(1);
201+
verify(mockSharedPreferences.getString(tKey)).called(1);
202+
},
203+
);
204+
});
205+
206+
group('list string', () {
207+
const tValue = <String>['string'];
208+
209+
test(
210+
'Make sure putStringList can save a list string value to SharedPreferences',
211+
() async {
212+
// arrange
213+
when(mockSharedPreferences.setStringList(any, any)).thenAnswer((_) async => true);
214+
215+
// act
216+
final result = await sharedPreferencesManager.putStringList(tKey, tValue);
217+
218+
// assert
219+
expect(result, true);
220+
verify(mockSharedPreferences.setStringList(tKey, tValue)).called(1);
221+
},
222+
);
223+
224+
test(
225+
'Make sure getStringList can return a string list value from SharedPreferences',
226+
() async {
227+
// arrange
228+
when(mockSharedPreferences.containsKey(any)).thenReturn(true);
229+
when(mockSharedPreferences.getStringList(any)).thenReturn(tValue);
230+
231+
// act
232+
final result = sharedPreferencesManager.getStringList(tKey);
233+
234+
// assert
235+
expect(result, tValue);
236+
verify(mockSharedPreferences.containsKey(tKey)).called(1);
237+
verify(mockSharedPreferences.getStringList(tKey)).called(1);
238+
},
239+
);
240+
});
241+
}

0 commit comments

Comments
 (0)