package Ġcom . tw ilio . con versations . app . viewModel Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġcom . tw ilio . con versations . Conversation Ċ import Ġcom . tw ilio . con versations . app . common . as Conversation Details View Item Ċ import Ġcom . tw ilio . con versations . app . common . enums . Con versations Error Ċ import Ġcom . tw ilio . con versations . app . common . extensions . Con versations Exception Ċ import Ġcom . tw ilio . con versations . app . create Test Conversation Data Item Ċ import Ġcom . tw ilio . con versations . app . data . local Cache . entity . Conversation Data Item Ċ import Ġcom . tw ilio . con versations . app . data . models . Repository Request Status Ċ import Ġcom . tw ilio . con versations . app . data . models . Repository Result Ċ import Ġcom . tw ilio . con versations . app . manager . Conversation List Manager Ċ import Ġcom . tw ilio . con versations . app . manager . Participant List Manager Ċ import Ġcom . tw ilio . con versations . app . repository . Con versations Repository Ċ import Ġcom . tw ilio . con versations . app . test Util . Coroutine Test Rule Ċ import Ġcom . tw ilio . con versations . app . test Util . wait Called Ċ import Ġcom . tw ilio . con versations . app . test Util . wait Not Called Ċ import Ġcom . tw ilio . con versations . app . test Util . wait Value Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġjunit . framework . TestCase . assertEquals Ċ import Ġjunit . framework . TestCase . assertTrue Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . coroutines . test . reset Main Ċ import Ġkotlinx . coroutines . test . set Main Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . power mock . core . class loader . annotations . Prepare For Test Ċ import Ġorg . power mock . modules . junit 4 . Power Mock Runner Ċ Ċ @ RunWith ( Power Mock Runner :: class ) Ċ @ Prepare For Test ( ĊĠĠĠ ĠCon versation :: class Ċ ) Ċ class ĠCon versation Details ViewModel Test Ġ{ ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġvar Ġcoroutine Test Rule Ġ= ĠCor outine Test Rule () ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġval Ġinstant Task Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġprivate Ġval Ġparticipant Identity Ġ= Ġ" participant Identity " ĊĠĠĠ Ġprivate Ġval Ġparticipant Phone Ġ= Ġ" participant Phone " ĊĠĠĠ Ġprivate Ġval Ġparticipant Proxy Phone Ġ= Ġ" participant Proxy Phone " ĊĠĠĠ Ġprivate Ġval Ġparticipant Friendly Name Ġ= Ġ"$ participant Phone " ĊĠĠĠ Ġprivate Ġval Ġconversation Sid Ġ= Ġ" conversation Sid " ĊĠĠĠ Ġprivate Ġval Ġconversation Name Ġ= Ġ" Test ĠCon versation " ĊĠĠĠ Ġprivate Ġval Ġconversation Creator Ġ= Ġ" User Ġ 0 1 " ĊĠĠĠ Ġprivate Ġval Ġconversation : ĠCon versation Data Item ? Ġ= Ġcreate Test Conversation Data Item ( sid Ġ= Ġconversation Sid , Ġfriendly Name Ġ= Ġconversation Name , ĊĠĠĠĠĠĠĠ Ġcreated By Ġ= Ġconversation Creator ) ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġconversations Repository : ĠCon versations Repository ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġconversation List Manager : ĠCon versation List Manager ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġparticipant List Manager : ĠPart icipant List Manager ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġconversation Details ViewModel : ĠCon versation Details ViewModel ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ ĠDispatch ers . set Main ( Dispatch ers . Default ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversations Repository . get Conversation ( any ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( Repository Result ( conversation , ĠRepository Request Status . COMPLETE )) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversations Repository . getUser Con versations () Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( Repository Result ( listOf (), ĠRepository Request Status . COMPLETE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ ĠDispatch ers . reset Main () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ conversation Details Ġshould Ġbe Ġinitialized Ġon Ġinit `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( conversation ?. as Conversation Details View Item (), Ġconversation Details ViewModel . conversation Details . wait Value ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ on Details Error Ġshould Ġbe Ġcalled Ġwhen Ġget Ġconversation Ġfailed `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversations Repository . get Conversation ( any ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( Repository Result ( conversation , ĠRepository Request Status . Error ( Con versations Error . CONVER S ATION _ GET _ FAILED ))) ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Details Error . wait Value ( Con versations Error . CONVER S ATION _ GET _ FAILED )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ mute Conversation () Ġshould Ġcall Ġon Details Error Ġon Ġfailure `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Sid Ġ= Ġ" sid " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversation List Manager . mute Conversation ( conversation Sid ) Ġ} Ġthrows ĠCon versations Exception ( Con versations Error . CONVER S ATION _ M UTE _ FAILED ) ĊĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel . mute Conversation () ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġconversation List Manager . mute Conversation ( conversation Sid ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Conversation Mut ed . wait Not Called ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Details Error . wait Value ( Con versations Error . CONVER S ATION _ M UTE _ FAILED )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ mute Conversation () Ġshould Ġcall Ġon Conversation Joined Ġon Ġsuccess `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Sid Ġ= Ġ" sid " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversation List Manager . mute Conversation ( conversation Sid ) Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel . mute Conversation () ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġconversation List Manager . mute Conversation ( conversation Sid ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Conversation Mut ed . wait Value ( true )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ un mute Conversation () Ġshould Ġcall Ġon Details Error Ġon Ġfailure `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Sid Ġ= Ġ" sid " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversation List Manager . un mute Conversation ( conversation Sid ) Ġ} Ġthrows ĠCon versations Exception ( Con versations Error . CONVER S ATION _ UN M UTE _ FAILED ) ĊĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel . un mute Conversation () ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġconversation List Manager . un mute Conversation ( conversation Sid ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Conversation Mut ed . wait Not Called ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Details Error . wait Value ( Con versations Error . CONVER S ATION _ UN M UTE _ FAILED )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ un mute Conversation () Ġshould Ġcall Ġon Conversation Joined Ġon Ġsuccess `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Sid Ġ= Ġ" sid " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversation List Manager . un mute Conversation ( conversation Sid ) Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel . un mute Conversation () ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġconversation List Manager . un mute Conversation ( conversation Sid ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Conversation Mut ed . wait Value ( false )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ remove Conversation () Ġshould Ġcall Ġon Conversation Removed Ġon Ġsuccess `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Sid Ġ= Ġ" sid " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversation List Manager . remove Conversation ( conversation Sid ) Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel . remove Conversation () ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġconversation List Manager . remove Conversation ( conversation Sid ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Conversation Removed . wait Called ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ remove Conversation () Ġshould Ġcall Ġon Details Error Ġon Ġfailure `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Sid Ġ= Ġ" sid " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversation List Manager . remove Conversation ( conversation Sid ) Ġ} Ġthrows ĠCon versations Exception ( Con versations Error . CONVER S ATION _ REMOVE _ FAILED ) ĊĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel . remove Conversation () ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġconversation List Manager . remove Conversation ( conversation Sid ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Conversation Removed . wait Not Called ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Details Error . wait Value ( Con versations Error . CONVER S ATION _ REMOVE _ FAILED )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ rename Conversation () Ġshould Ġcall Ġon Conversation Rename d Ġon Ġsuccess `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Sid Ġ= Ġ" sid " ĊĠĠĠĠĠĠĠ Ġval Ġfriendly Name Ġ= Ġconversation Name Ġ+ Ġ" 2 " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversation List Manager . rename Conversation ( conversation Sid , Ġfriendly Name ) Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel . rename Conversation ( friendly Name ) ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġconversation List Manager . rename Conversation ( conversation Sid , Ġfriendly Name ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Conversation Rename d . wait Called ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ rename Conversation () Ġshould Ġcall Ġon Details Error Ġon Ġfailure `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Sid Ġ= Ġ" sid " ĊĠĠĠĠĠĠĠ Ġval Ġfriendly Name Ġ= Ġconversation Name Ġ+ Ġ" 2 " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversation List Manager . rename Conversation ( conversation Sid , Ġfriendly Name ) Ġ} Ġthrows ĠCon versations Exception ( Con versations Error . CONVER S ATION _ RE NAME _ FAILED ) ĊĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Details ViewModel . rename Conversation ( friendly Name ) ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġconversation List Manager . rename Conversation ( conversation Sid , Ġfriendly Name ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Conversation Rename d . wait Not Called ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Details ViewModel . on Details Error . wait Value ( Con versations Error . CONVER S ATION _ RE NAME _ FAILED )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ add Chat Participant () Ġshould Ġcall Ġon Participant Added Ġon Ġsuccess `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversations Repository . get Conversation Participants ( any ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( Repository Result ( listOf (), ĠRepository Request Status . COMPLETE )) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġparticipant List Manager . add Chat Participant ( participant Identity ) Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġval Ġconversation Detail ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Detail ViewModel . add Chat Participant ( participant Identity ) ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġparticipant List Manager . add Chat Participant ( participant Identity ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Detail ViewModel . on Participant Added . wait Called ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ add Chat Participant () Ġshould Ġcall Ġon Participant Error Ġon Ġfailure `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversations Repository . get Conversation Participants ( any ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( Repository Result ( listOf (), ĠRepository Request Status . COMPLETE )) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġparticipant List Manager . add Chat Participant ( participant Identity ) Ġ} Ġthrows ĠCon versations Exception ( Con versations Error . P ARTIC IP ANT _ ADD _ FAILED ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconversation Detail ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Detail ViewModel . add Chat Participant ( participant Identity ) ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġparticipant List Manager . add Chat Participant ( participant Identity ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Detail ViewModel . on Details Error . wait Value ( Con versations Error . P ARTIC IP ANT _ ADD _ FAILED )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ add Non Chat Participant () Ġshould Ġcall Ġon Participant Added Ġon Ġsuccess `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversations Repository . get Conversation Participants ( any ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( Repository Result ( listOf (), ĠRepository Request Status . COMPLETE )) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġparticipant List Manager . add Non Chat Participant ( participant Phone , Ġparticipant Proxy Phone , Ġparticipant Friendly Name ) Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġval Ġconversation Detail ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Detail ViewModel . add Non Chat Participant ( participant Phone , Ġparticipant Proxy Phone ) ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġparticipant List Manager . add Non Chat Participant ( participant Phone , Ġparticipant Proxy Phone , Ġparticipant Friendly Name ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Detail ViewModel . on Participant Added . wait Called ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` conversation Detail ViewModel _ add Non Chat Participant () Ġshould Ġcall Ġon Participant Error Ġon Ġfailure `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġconversations Repository . get Conversation Participants ( any ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( Repository Result ( listOf (), ĠRepository Request Status . COMPLETE )) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġparticipant List Manager . add Non Chat Participant ( participant Phone , Ġparticipant Proxy Phone , Ġparticipant Friendly Name ) Ġ} Ġthrows ĠCon versations Exception ( Con versations Error . P ARTIC IP ANT _ ADD _ FAILED ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconversation Detail ViewModel Ġ= ĠCon versation Details ViewModel ( conversation Sid , Ġconversations Repository , Ġconversation List Manager , Ġparticipant List Manager ) ĊĠĠĠĠĠĠĠ Ġconversation Detail ViewModel . add Non Chat Participant ( participant Phone , Ġparticipant Proxy Phone ) ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġparticipant List Manager . add Non Chat Participant ( participant Phone , Ġparticipant Proxy Phone , Ġparticipant Friendly Name ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( conversation Detail ViewModel . on Details Error . wait Value ( Con versations Error . P ARTIC IP ANT _ ADD _ FAILED )) ĊĠĠĠ Ġ} Ċ } Ċ