Skip to content

Commit 3290494

Browse files
committed
feat(user_settings): Add feed preferences
- Added feedPreferences to UserAppSettings - Added tests for new functionality
1 parent 335ae95 commit 3290494

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

test/src/models/user_settings/user_app_settings_test.dart

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,20 @@ void main() {
88
const userId = 'test-user-id';
99
const defaultDisplaySettings = DisplaySettings();
1010
const defaultLanguage = 'en';
11+
const defaultFeedPreferences = FeedDisplayPreferences();
1112

1213
// Helper function to create a sample JSON map
1314
Map<String, dynamic> createJson({
1415
required String id,
1516
Map<String, dynamic>? displaySettings,
1617
String? language,
18+
Map<String, dynamic>? feedPreferences,
1719
}) {
1820
return {
1921
'id': id,
20-
'displaySettings': displaySettings ?? defaultDisplaySettings.toJson(),
22+
'display_settings': displaySettings ?? defaultDisplaySettings.toJson(),
2123
'language': language ?? defaultLanguage,
24+
'feed_preferences': feedPreferences ?? defaultFeedPreferences.toJson(),
2225
};
2326
}
2427

@@ -27,11 +30,13 @@ void main() {
2730
required String id,
2831
DisplaySettings? displaySettings,
2932
AppLanguage? language,
33+
FeedDisplayPreferences? feedPreferences,
3034
}) {
3135
return UserAppSettings(
3236
id: id,
3337
displaySettings: displaySettings,
3438
language: language,
39+
feedPreferences: feedPreferences,
3540
);
3641
}
3742

@@ -60,20 +65,20 @@ void main() {
6065
accentTheme: AppAccentTheme.newsRed,
6166
);
6267
const customLanguage = 'es';
63-
const defaultFeedPreferences = FeedDisplayPreferences();
6468
expect(
6569
createSubject(
6670
id: userId,
6771
displaySettings: customDisplaySettings,
6872
language: customLanguage,
73+
feedPreferences: defaultFeedPreferences,
6974
).props,
7075
equals([
7176
userId,
7277
customDisplaySettings,
7378
customLanguage,
7479
defaultFeedPreferences,
75-
const {}, // engagementShownCounts
76-
const {}, // engagementLastShownTimestamps
80+
const <String, int>{}, // engagementShownCounts default
81+
const <String, DateTime>{}, // engagementLastShownTimestamps default
7782
]),
7883
);
7984
});
@@ -83,6 +88,7 @@ void main() {
8388
expect(settings.id, userId);
8489
expect(settings.displaySettings, defaultDisplaySettings);
8590
expect(settings.language, defaultLanguage);
91+
expect(settings.feedPreferences, defaultFeedPreferences);
8692
});
8793

8894
group('copyWith', () {
@@ -106,22 +112,28 @@ void main() {
106112
accentTheme: AppAccentTheme.newsRed,
107113
);
108114
const newLanguage = 'es';
115+
const newFeedPreferences = FeedDisplayPreferences(
116+
headlineDensity: HeadlineDensity.compact,
117+
);
109118

110119
final copied = original.copyWith(
111120
displaySettings: newDisplaySettings,
112121
language: newLanguage,
122+
feedPreferences: newFeedPreferences,
113123
);
114124

115125
expect(copied.id, original.id); // ID should remain the same
116126
expect(copied.displaySettings, newDisplaySettings);
117127
expect(copied.language, newLanguage);
128+
expect(copied.feedPreferences, newFeedPreferences);
118129

119130
// Test changing only the ID (though less common for this model)
120131
const newId = 'new-user-id';
121132
final copiedWithNewId = original.copyWith(id: newId);
122133
expect(copiedWithNewId.id, newId);
123134
expect(copiedWithNewId.displaySettings, original.displaySettings);
124135
expect(copiedWithNewId.language, original.language);
136+
expect(copiedWithNewId.feedPreferences, original.feedPreferences);
125137
});
126138
});
127139

@@ -130,7 +142,14 @@ void main() {
130142
final json = createJson(id: userId);
131143
expect(
132144
UserAppSettings.fromJson(json),
133-
equals(createSubject(id: userId)),
145+
equals(
146+
createSubject(
147+
id: userId,
148+
displaySettings: defaultDisplaySettings,
149+
language: defaultLanguage,
150+
feedPreferences: defaultFeedPreferences,
151+
),
152+
),
134153
);
135154
});
136155

@@ -143,17 +162,23 @@ void main() {
143162
fontWeight: AppFontWeight.bold,
144163
);
145164
const customLanguage = 'fr';
165+
const customFeedPreferences = FeedDisplayPreferences(
166+
headlineDensity: HeadlineDensity.comfortable,
167+
showSourceInHeadlineFeed: false,
168+
);
146169

147170
final json = createJson(
148171
id: userId,
149172
displaySettings: customDisplaySettings.toJson(),
150173
language: customLanguage,
174+
feedPreferences: customFeedPreferences.toJson(),
151175
);
152176

153177
final expected = createSubject(
154178
id: userId,
155179
displaySettings: customDisplaySettings,
156180
language: customLanguage,
181+
feedPreferences: customFeedPreferences,
157182
);
158183

159184
expect(UserAppSettings.fromJson(json), equals(expected));
@@ -170,6 +195,10 @@ void main() {
170195
fontWeight: AppFontWeight.bold,
171196
),
172197
language: 'es',
198+
feedPreferences: const FeedDisplayPreferences(
199+
headlineImageStyle: HeadlineImageStyle.hidden,
200+
showPublishDateInHeadlineFeed: false,
201+
),
173202
);
174203
final json = original.toJson();
175204
final reconstructed = UserAppSettings.fromJson(json);

0 commit comments

Comments
 (0)