@@ -8,9 +8,13 @@ import 'package:whitenoise/ui/chat/states/chat_input_state.dart';
88
99class MockImagePickerService extends ImagePickerService {
1010 List <String >? imagesToReturn;
11+ Exception ? errorToThrow;
1112
1213 @override
1314 Future <List <String >> pickMultipleImages () async {
15+ if (errorToThrow != null ) {
16+ throw errorToThrow! ;
17+ }
1418 return imagesToReturn ?? [];
1519 }
1620}
@@ -167,6 +171,37 @@ void main() {
167171 expect (state.selectedImages[2 ], '/path/to/image3.jpg' );
168172 });
169173 });
174+
175+ group ('when image picker service throws an error' , () {
176+ setUp (() {
177+ mockImagePicker.errorToThrow = Exception ('Image picker failed' );
178+ });
179+
180+ test ('keeps selectedImages empty' , () async {
181+ await notifier.handleImagesSelected ();
182+ final state = container.read (chatInputProvider (testGroupId));
183+ expect (state.selectedImages, isEmpty);
184+ });
185+
186+ test ('sets showMediaSelector to false' , () async {
187+ await notifier.handleImagesSelected ();
188+ final state = container.read (chatInputProvider (testGroupId));
189+ expect (state.showMediaSelector, false );
190+ });
191+
192+ test ('does not add images when error occurs with previous images' , () async {
193+ mockImagePicker.errorToThrow = null ;
194+ mockImagePicker.imagesToReturn = ['/path/to/image1.jpg' ];
195+ await notifier.handleImagesSelected ();
196+
197+ mockImagePicker.errorToThrow = Exception ('Image picker failed' );
198+ await notifier.handleImagesSelected ();
199+
200+ final state = container.read (chatInputProvider (testGroupId));
201+ expect (state.selectedImages.length, 1 );
202+ expect (state.selectedImages[0 ], '/path/to/image1.jpg' );
203+ });
204+ });
170205 });
171206
172207 group ('removeImage' , () {
0 commit comments