@@ -984,6 +984,101 @@ class MessageComposerViewModel_Tests: StreamChatTestCase {
984984        XCTAssertEqual ( viewModel. text,  " Draft " ) 
985985    } 
986986
987+     func  test_messageComposerVM_whenLastAssetRemoved_shouldDeleteDraft( )  { 
988+         // Given
989+         let  channelController  =  makeChannelController ( ) 
990+         let  draftMessage  =  DraftMessage . mock ( text:  " " ) 
991+         channelController. channel_mock =  . mock( cid:  . unique,  draftMessage:  draftMessage) 
992+         let  viewModel  =  makeComposerDraftsViewModel ( 
993+             channelController:  channelController, 
994+             messageController:  nil 
995+         ) 
996+         let  asset  =  defaultAsset
997+         viewModel. imageTapped ( asset) 
998+ 
999+         // When
1000+         viewModel. imageTapped ( asset)  // Remove the asset by tapping again
1001+ 
1002+         // Then
1003+         XCTAssertEqual ( channelController. deleteDraftMessage_callCount,  1 ) 
1004+     } 
1005+ 
1006+     func  test_messageComposerVM_whenLastFileRemoved_shouldDeleteDraft( )  { 
1007+         // Given
1008+         let  channelController  =  makeChannelController ( ) 
1009+         let  draftMessage  =  DraftMessage . mock ( text:  " " ) 
1010+         channelController. channel_mock =  . mock( cid:  . unique,  draftMessage:  draftMessage) 
1011+         let  viewModel  =  makeComposerDraftsViewModel ( 
1012+             channelController:  channelController, 
1013+             messageController:  nil 
1014+         ) 
1015+         viewModel. addedFileURLs =  [ mockURL] 
1016+ 
1017+         // When
1018+         viewModel. removeAttachment ( with:  mockURL. absoluteString) 
1019+ 
1020+         // Then
1021+         XCTAssertEqual ( channelController. deleteDraftMessage_callCount,  1 ) 
1022+     } 
1023+ 
1024+     func  test_messageComposerVM_whenLastVoiceRecordingRemoved_shouldDeleteDraft( )  { 
1025+         // Given
1026+         let  channelController  =  makeChannelController ( ) 
1027+         let  draftMessage  =  DraftMessage . mock ( text:  " " ) 
1028+         channelController. channel_mock =  . mock( cid:  . unique,  draftMessage:  draftMessage) 
1029+         let  viewModel  =  makeComposerDraftsViewModel ( 
1030+             channelController:  channelController, 
1031+             messageController:  nil 
1032+         ) 
1033+         let  recording  =  AddedVoiceRecording ( url:  mockURL,  duration:  1.0 ,  waveform:  [ 0.5 ] ) 
1034+         viewModel. addedVoiceRecordings =  [ recording] 
1035+ 
1036+         // When
1037+         viewModel. removeAttachment ( with:  mockURL. absoluteString) 
1038+ 
1039+         // Then
1040+         XCTAssertEqual ( channelController. deleteDraftMessage_callCount,  1 ) 
1041+     } 
1042+ 
1043+     func  test_messageComposerVM_whenLastCustomAttachmentRemoved_shouldDeleteDraft( )  { 
1044+         // Given
1045+         let  channelController  =  makeChannelController ( ) 
1046+         let  draftMessage  =  DraftMessage . mock ( text:  " " ) 
1047+         channelController. channel_mock =  . mock( cid:  . unique,  draftMessage:  draftMessage) 
1048+         let  viewModel  =  makeComposerDraftsViewModel ( 
1049+             channelController:  channelController, 
1050+             messageController:  nil 
1051+         ) 
1052+         let  attachment  =  CustomAttachment ( id:  . unique,  content:  . mockFile) 
1053+         viewModel. customAttachmentTapped ( attachment) 
1054+ 
1055+         // When
1056+         viewModel. customAttachmentTapped ( attachment)  // Remove by tapping again
1057+ 
1058+         // Then
1059+         XCTAssertEqual ( channelController. deleteDraftMessage_callCount,  1 ) 
1060+     } 
1061+ 
1062+     func  test_messageComposerVM_whenRemovingAttachment_withTextPresent_shouldNotDeleteDraft( )  { 
1063+         // Given
1064+         let  channelController  =  makeChannelController ( ) 
1065+         let  draftMessage  =  DraftMessage . mock ( text:  " Hello " ) 
1066+         channelController. channel_mock =  . mock( cid:  . unique,  draftMessage:  draftMessage) 
1067+         let  viewModel  =  makeComposerDraftsViewModel ( 
1068+             channelController:  channelController, 
1069+             messageController:  nil 
1070+         ) 
1071+         viewModel. text =  " Hello " 
1072+         let  asset  =  defaultAsset
1073+         viewModel. imageTapped ( asset) 
1074+ 
1075+         // When
1076+         viewModel. imageTapped ( asset)  // Remove the asset by tapping again
1077+ 
1078+         // Then
1079+         XCTAssertEqual ( channelController. deleteDraftMessage_callCount,  0 ) 
1080+     } 
1081+ 
9871082    // MARK: - private
9881083
9891084    private  func  makeComposerDraftsViewModel( 
0 commit comments