@@ -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